您的位置:首页 > 职场人生

C#语法面试题

2010-01-04 15:07 239 查看
1、 [/b]delegate[/b]是引用类型还是值类型?enum、int[]和string呢?[/b]
[/b]delegate引用类型,enum值类型,int[]引用类型,string引用类型。[/b]
2、 [/b]我们知道new可以调用构造函数创建一个对象,那么new还有什么别的语法吗?[/b]
[/b]答:有3种,第一种是,实例化如:New Class()
  第二种是,public new 隐藏基类的方法
  第三种是,在泛型类申明中的任何类型参数都必须有公共的无参构造函数。[/b]
3、 [/b]base[/b]这个关键字有哪几种语法?override呢?[/b]
[/b]base两个语法,分别是调用基类构造函数和调用基类方法,override用于重写基类方法。[/b]
4、 [/b]在循环:for( int i = 0; i < 100; i++ ) Console.WriteLine( i );中,请指出i++的执行时机。[/b]
[/b]在Console.WriterLine( i );执行之后[/b]
5、 [/b]请你说说.NET中类和结构的区别?[/b][/b]
[/b]答:结构和类具有大体的语法,但是结构受到的限制比类要多。结构不能申明有默认的构造函数,为结构的副本是又编译器创建和销毁的,所以不需要默认的构造函数和析构函数。结构是值类型,所以对结构变量所做的改变不会影响其的原值,而类是应用类型,改变其变量的值会改变其原值。申明结构用Struck关键字,申明类用class关键字,向方法传递结构是时是通过值传递的,而不是通过引用。与类不同,结构的实例化可以不使用New关键字。类可以实现接口。[/b]
6、 [/b] [/b]接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?[/b][/b]
[/b]答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类。[/b]
7、 [/b]构造方法是否可以被继承?是否可以被Override?[/b][/b]
[/b]构造方法[/b]不可以被继承,因此不能被重写(Overriding),但可以被重载(Overloading).[/b]
8、 [/b]是否可以继承String类?[/b][/b]
9、 [/b] [/b]数组有没有Length()这个方法?string有没有这个方法?[/b][/b]
10、 [/b]C#[/b]中委托是什么?事件是不是一种委托?[/b][/b]
[/b]委托是一种安全的类似与函数指针,但是她比指针要安全的多,它可以把方法作为一个参数传递
给另一个方法,可以理解为指向函数的引用。事件是一种消息机制,它是一种委托,委托不带方法体。
11、 [/b]Override, Overload,[/b]的区别?[/b][/b]
[/b]Override是重写的意思,它表示重写基类的方法,而且方法的名称,返回类型,参数类型,参数
个数要与基类相同。
  Overload是重载是意思,它也表示重写基类的方法,但是只要方法名相同,别的可以不同。
12、 [/b]C#[/b]中索引器实现过程中,是否只能根据数字索引?[/b][/b]
[/b]答:不是的,可以是任意类型。[/b]
13、 [/b]任何把一个Array复制到Arraylist中?[/b][/b]
[/b]Foreach (object o in Array), ArrayList.Add (0)[/b]
14、 [/b]值类型和引用类型的区别?[/b]
[align=left] [/align][align=center]值类型[/align][align=center]引用类型[/align]
[align=left]内存分配地点[/align][align=left]分配在栈中[/align][align=left]分配在堆中[/align]
[align=left]效率[/align][align=left]效率高,不需要地址转换[/align][align=left]效率低,需要进行地址转换[/align]
[align=left]内存回收[/align][align=left]使用完后,立即回收[/align][align=left]使用完后,不是立即回收,等待GC回收[/align]
[align=left]赋值操作[/align][align=left]进行复制,创建一个同值新对象[/align][align=left]只是对原有对象的引用[/align]
[align=left]函数参数与返回值[/align][align=left]是对象的复制[/align][align=left]是原有对象的引用,并不产生新的对象[/align]
[align=left]类型扩展[/align][align=left]不易扩展[/align][align=left]容易扩展,方便与类型扩展[/align]
[/b]
15、 [/b]面向对象的三大基本原则? [/b][/b]
16、 [/b]Heap[/b]与stack的差别?[/b][/b]
Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
17、 [/b]如何理解.net中的垃圾回收机制?[/b][/b]
[/b]答:.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。
18、 [/b]在.NET中所有类的基类是?[/b][/b]
19、 [/b]静态方法和实例方法的区别?[/b][/b]
20、 [/b]C#[/b]中共有几个常用访问修饰符,并说出每个访问修饰符的范围[/b]
21、 [/b]用方法重载计算机三角形、长方形、圆形的周长[/b]
22、 [/b]构造方法和析构方法的用途[/b]
23、 [/b]C#[/b]支持多重继承么?用什么技术实现多重继承[/b]
24、 [/b]Virtual[/b]和abstract的异同[/b]
虚函数是在普通类里定义的,可以在普通类里实现抽象方法。
virtual只能在普通类中使用,abstract后者只能在抽象类中使用.
虚方法可以有实现体,抽象类不能有实体的。
二者都需要使用override来重写才能实现抽象机制。
二者的访问修饰符都不能是私有的(抽象类中默认的访问修饰符也是私有的),并且都不能是静态方法。
25、 [/b]如何解决接口继承时的同名方法冲突的问题[/b]
26、 [/b]以下关于[/b]ref[/b]和[/b]out[/b]的描述哪些项是正确的?[/b]([/b]多选[/b]) ( )
A.[/b]使用[/b]ref[/b]参数,传递到[/b]ref[/b]参数的参数必须最先初始化。[/b] B.[/b]使用[/b]out[/b]参数,传递到[/b]out[/b]参数的参数必须最先初始化。[/b] C.[/b]使用[/b]ref[/b]参数,必须将参数作为[/b]ref[/b]参数显式传递到方法。[/b] D.[/b]使用[/b]out[/b]参数,必须将参数作为[/b]out[/b]参数显式传递到方法。[/b][/b]
27、 [/b]在接口中可以声明(),但不可以声明公有的或私有的成员变量[/b]
a)[/b]方法、属性、索引器和事件[/b] b)[/b]方法、属性信息、属性;[/b] c)[/b]索引器和字段;[/b]d)[/b]事件和字段;[/b][/b]
28、 [/b]public static const int A=1;[/b]这段代码有错误么?是什么[/b][/b]
[align=left]29[/b]、装箱、拆箱操作发生在: ( )[/b] [/b][/align]
[align=left]A.[/b]类与对象之间 B.对象与对象之间C.引用类型与值类型之间 D.引用类型与引用类型之间[/b] [/b][/align]
30[/b]、[/b]用sealed修饰的类有什么特点
31、c#中几种流程控制语句?分别距离说明逻辑原理;几种循环,并指出他们的不同[/b]
33、有几种类型转换的方式,分别举例 32、定义一个枚举
34、C#中的接口和类有什么异同。35、 CLR与IL分别是什么含义
36请叙述const与readonly的区别[/b]
Const用来申明编程时申明常量,ReadOnly用来申明运行时常量。[/b]
37[/b]、[/b]用C#实现 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。[/b]
[align=left] [/b] ArrayList ar = new ArrayList();[/align]
[align=left] int[] list = new int[100];[/align]
[align=left] for (int i = 1; i <= 100; i++)[/align]
[align=left] {[/align]
[align=left] ar.Add(i);[/align]
[align=left] }[/align]
[align=left] Random rm = new Random();[/align]
[align=left] for (int i = 0; i < 100; i++)[/align]
[align=left] {[/align]
[align=left] int index = rm.Next(99 - i);[/align]
[align=left] list[i] = (int)ar[index];[/align]
[align=left] ar.RemoveAt(index);[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] for (int i = 0; i < list.Length; i++)[/align]
[align=left] {[/align]
[align=left] Console.WriteLine(list[i]);[/align]
}
[/b]
38[/b]、[/b]列选项中,()是引用类型。a)enum类型b)struct类型c)string类型d)int类型[/b]
39[/b]、下面描述错误的是( )。a)窗体也是控件;b)窗体也是类;c)控件是从窗体继承来的;d)窗体的父类是控件类[/b]
40[/b]、在C#中,string str = null 与 string str = “”请尽量使用文字或图象说明其中的区别。[/b]
string str =""初始化对象分配空间,而string str=null初始化对象[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: