C#必备基础知识
- 格式:doc
- 大小:58.00 KB
- 文档页数:14
C# 常见的面试问题(转)第一章C#与.NET框架1、简述什么是CLR?答:公共语言运行时,它负责管理用.NET库开发的所有应用程序的执行。
2、简述什么是FCL?答:Framework Class Library .NET框架类库集3、简述什么是CLS和CTS答:CLS(通用语言运行规范)、CTS(通用类型系统)。
4、简述什么是JIT?答:即时编译。
5、简述C#程序编译运行的全过程。
答:(1)把源代码编译为Microsoft中间语言(IL)。
(2)CLR把IL编译为平台专用的代码。
6、比较.NET和Java的异同。
答:java与.net的相同:(1)都有虚拟机(2)都有庞大的类库(3)代码都在虚拟机保护模式下运行java与.net的不同:(1)java是多次运行时都解析,而.net是在第一次运行时解析后,以后执行的就是本机代码(2).net虚拟机代码公开,各种语言都可以基于.net虚拟机进行开发。
(3).net暂时不支持跨平台,不过只要虚拟机一跨平台,你所有的程序就跨平台了。
7、简述用C#编写什么样的应用程序?答:(1)Windows应用程序(2)Web应用程序(3)Web服务。
8、简述C#与.NET的关系。
答:(1) C#的结构和方法论反映了.NET基础方法论。
(2)在许多情况下,C#的特定语言功能取决于.NET的功能,或依赖于.NET基类。
9、简述.NET框架的作用。
答: .NET Framework是Microsoft为开发应用程序而创建的一个富有革命性的新平台。
10、简述.NET框架的组成。
答:它由两部分组成,公共语言运行时(CLR)和.NET类库集(FCL)组成。
11、在.NET中编译分为哪两个阶段?答:(1)把源代码编译为Microsoft中间语言(IL)。
(2)CLR把IL编译为平台专用的代码。
12、MSIL的是什么意思?答:微软中间语言。
13、CTS通用类型系统(common type system)。
答:一种确定公共语言运行库如何定义、使用和管理类型的规范。
14、CLR公共语言运行库。
答:.NET Framework 提供了一个称为公共语言运行库的运行时环境,它运行代码并提供使开发过程更轻松的服务15、CLS公共语言规范。
答:要和其他对象完全交互,而不管这些对象是以何种语言实现的,对象必须只向调用方公开那些它们必须与之互用的所有语言的通用功能。
为此定义了公共语言规范(CLS),它是许多应用程序所需的一套基本语言功能。
16、强类型。
答:C# 是强类型语言;因此每个变量和对象都必须具有声明类型。
第二章C#基础及数据类型1、简述C#编写程序的语法规则?答:(1)区分大小写(2)语句以分号作为结束标志(3)注释// 开头,或多行注释2、C#程序是从Main()方法开始执行的。
3、如何实现多行注释?答:。
4、在目前理解的范围内简述Console类的作用。
答:表示控制台应用程序的标准输入流、输出流和错误流。
5、如何实现控制台输入?答:Console.Read()Console.ReadLine()6、如何实现控制台输出?答:Console.Write()Console.WriteLine()7、Console.ReadLine() 和Console.Read()的区别?答:Console.Read():从标准输入流读取下一个字符。
Console.ReadLine():从标准输入流读取下一行字符。
8、Console.WriteLine() 和Console.Write()的区别?答:Console.WriteLine():将指定的数据(后跟当前行结束符)写入标准输出流。
Console.Write():将指定值的文本表示形式写入标准输出流。
9、列举8种基本的整数类型。
答:byte int short longSbyte uint ushout ulong10、什么是受管制的代码?答:unsafe:非托管代码。
不经过CLR运行。
11、public static const int A=1;这段代码有错误么?是什么?答:const不能用static修饰。
第三章运算符与表达式1、按照操作符作用的操作数的个数来分,C#有几种类型的操作符?答:三种,分别是(1)一元操作符(2)二元操作符(3)三元操作符2、c#中的三元运算符是答:?:3、表达式由什么组成?答:表达式由操作符和操作数组成。
4、简述赋值操作符(=)的作用是什么?答:赋值运算符(=) 将右操作数的值存储在左操作数表示的存储位置、属性或索引器中,并将值作为结果返回。
操作数的类型必须相同(或右边的操作数必须可以隐式转换为左边操作数的类型)。
5、列举几个复合操作符?答:+=、-=、*=、/=、%=、&=、|=、^= 、<<=、>>=。
6、简单说说% 求余操作符的作用?答:模数运算符(%) 计算第二个操作数除第一个操作数后的余数。
所有数值类型都具有预定义的模数运算符。
7、获得八维认证的条件是综合积分大于等于100分,平均成绩>=75分,案例成绩>=85分,请写出可以获得认证的条件表达式。
答:zonghejifen>=100 and average>=75 and anli>=85 (假设定义了三个变量)8、应征入伍的条件是性别为男时,身高在170cm以上,年龄在18到25周岁之间,性别为女是,身高在160cm以上,年龄在18到22周岁之间,请写出符合入伍的条件。
答:( sex = “男”and age >=18 and age<=25 and high>=170 ) or (sex = “女”and age >=18 and age<=22 and high>=160 )9、加法操作符,在操作数为数值和字符时有不同的作用,请简述。
答:为数值类型和字符串类型预定义了二元+ 运算符。
对于数值类型,+ 计算两个操作数之和。
当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,+ 将操作数的字符串表示形式串联在一起。
10、逻辑操作符有哪几个?答:逻辑与(&&)逻辑或(||)逻辑非(!)。
11、逻辑操作符与关系操作符的结果是什么数据类型?答:逻辑表达式或关系表达式的结果是布尔类型,值是逻辑值,真(True)或假(False)。
12、运算符的优先级是什么?答:当多个运算符一起运算时,根据它们的优先级别不同执行运算的先后顺序不同。
算数——> 逻辑——>关系——>赋值第四章流程控制语句:1、程序有三种基本结构,分别是什么?答:顺序结构、选择结构、循环结构2、简述while 循环与do while循环的区别?答:while 循环先对表达式进行判断,当满足表达式的时候才开始执行循环体,所以循环体执行的次数大于等于0次,而do while 是先执行一次循环体然后在对表达式的内容做判断,所以执行循环体的次数是大于等于1次,如果第一次表达式满足条件,两种格式相同,如果第一次不满足条件,则后者多执行一次。
3、什么时候使用for循环,什么时候使用while循环?答:当循环次数已知的条件下,使用for 循环方便,当循环次数未知时候我们一般使用while 型循环。
(依个人编程习惯,没有统一的要求)4、列举几个跳转语句。
答:(1) go to (2) break (3) continue (4) return5、简述break语句的作用。
答:在switch语句中使用它退出某个case语句。
实际上,break也可以用于退出for、foreach、while或do...while循环,循环结束后,就执行循环后面的语句。
如果该语句放在嵌套的循环中,就执行最内部循环后面的语句。
如果break放在switch语句或循环外部,就会产生编译时错误。
6、简述continue的作用。
答:continue语句类似于break,也必须在for、foreach、while或do...while循环中使用。
但它只从循环的当前迭代中退出,然后在循环的下一次迭代开始重新执行,而不是退出循环。
7、简述return 语句的作用。
答:return语句用于退出类的方法,把控制返回方法的调用者,如果方法有返回类型,return 语句必须返回这个类型的值,如果方法没有返回类型,应使用没有表达式的return语句。
第五章类与对象1、简述类的概念?答:类是一组具有相同数据结构和相同操作的对象的集合。
类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。
2、简述对象的概念?答:对象是面向对象开发方法的基本成分。
每个对象可用它本身的一组属性和其上的一组操作来定义。
对象可以是现实生活中的一个物理对象,还可以是某一类概念实体的实例。
比如,一辆汽车、一个人、一本书,乃至一种语言、一个图形、一种管理方式,都可以作为一个对象。
3、面向对象的语言具有继承性、封装性、多态性。
4、new 关键字用法?答:(1)new 运算符用于创建对象和调用构造函数。
(2)new 修饰符用于向基类成员隐藏继承成员。
(3)new 约束用于在泛型声明中约束可能用作类型参数的参数的类型。
5、C#中所有对象共同的基类是什么?答:System.Object.6、值类型与引用类型的区别是什么?答:值类型:存储的是数值本身,值类型都存储在堆栈中。
引用类型:表示指向数据的指针或引用(地址),包含内存堆中对象的地址。
7、简单说说方法的概念。
答:方法是与某个类相关的函数,它们可以是实例方法,也可以是静态方法。
实例方法处理类的某个实例,静态方法提供了更一般的功能,不需要实例化一个类(例如Console.WriteLine()方法)。
8、简单说说属性的概念。
答:属性是可以在客户机上访问的函数组,其访问方式与访问类的公共字段类似。
C#为读写类上的属性提供了专用语法,所以不必使用那些名称中嵌有Get或Set的偷工减料的方法。
因为属性的这种语法不同于一般函数的语法,在客户代码中,虚拟的对象被当做实际的东西。
9、简述构造函数的作用。
答:构造函数是在实例化对象时自动调用的函数。
它们必须与所属的类同名,且不能有返回类型。
构造函数用于初始化字段的值。
10、终结器是什么?答:终结器类似于构造函数,但是在CLR检测到不再需要某个对象时调用。
它们的名称与类相同,但前面有一个~符号。
11、简述运算符的概念、作用。
答:运算符执行的最简单的操作就是+和–。
在对两个整数进行相加操作时,严格地说,就是对整数使用+运算符。
C#还允许指定把已有的运算符应用于自己的类(运算符重载)。
索引器允许对象以数组或集合的方式进行索引。