2024年3月20日发(作者:)

研发部面试题 Written by Dev. Group.

答题要求:打*号的部分为必答题,未指明为多选题的选择题均为

单选题。

一、.Net Framework部分*

1. 装箱、拆箱操作发生在: ( C )

A.类与对象之间 B.对象与对象之间

C.引用类型与值类型之间 D.引用类型与引用类型之间

2. 用户类若想支持Foreach语句需要实现的接口是: ( B )

rable rator

ction ctData

3. .Net Framework通过什么与COM组件进行交互操作?( C )

By Side

p

Service

e

4. .Net依靠以下哪一项技术解决COM存在的

Dll Hell

问题的?( A )

By Side p

e +

5. 装箱与拆箱操作是否是互逆的操作?( A )

A.是 B.否

6. 以下哪个是可以变长的数组?( D )

[]

[N] ist

7. 用户自定义异常类需要从以下哪个类继承:( C )

ion Exception

ationException ception

8. 以下代码段中能否编译通过?请给出理由。

try

{

}

catch(FileNotFoundException e1)

{

}

catch(Exception e2)

{

}

catch(IOException e3)

{

}

catch

{

第 1 页共9 页

研发部面试题 Written by Dev. Group.

}

不能编译通过,因为e3是e2的子类,所有属于e3异常会被e2捕获。

9. 对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相

关的应用程序定义的任务?(多选) ( BD )

e ze

10. .Net依赖以下哪项技术实现跨语言互用性?( C )

类?(简答)

和JAVA中的StringBuffer类似,StringBuilder可以提高字符串连接时的性能。因为

String是只读的,连接时内存中需要存在临时对象,而StringBuilder在内存中仅仅只有

一份。

12. 以下哪个类是int的基类?( C )

32 ype 16

11. 请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个

二、C# 部分*

13. 以下哪些可以作为接口成员?(多选) ( ABDE)

A.方法 B.属性 C.字段 D.事件 E.索引器

F.构造函数 G.析构函数

14. 以下关于ref和out的描述哪些项是正确的?(多选) ( ACD )

A.使用ref参数,传递到ref参数的参数必须最先初始化。

B.使用out参数,传递到out参数的参数必须最先初始化。

C.使用ref参数,必须将参数作为ref参数显式传递到方法。

D.使用out参数,必须将参数作为out参数显式传递到方法。

15. “访问范围限定于此程序集或那些由它所属的类派生的类型”是对以下哪个成员可访问性

含义的正确描述?( D )

ted al

可访问性的关键字有如下5个:

internal:在所属程序集中可以访问。

private:私有成员, 在当前类中可以访问。

protected:保护成员,在当前类及其子类中可以访问。

public:公共成员,完全公开,没有访问限制。

internal protected:在所属程序集或当前类的子类中可以访问。(题目中未提及)

【扩展】

类的修饰符:abstract,sealed,static,unsafe 4个。

abstract:类是抽象的,不能创建类的实例

sealed:类是密封的,不能被继承

第 2 页共9 页

ted internal

研发部面试题 Written by Dev. Group.

static:类是静态的,只有静态成员,没有非静态成员

unsafe:类有非安全的结构,比如指针

16. abstract class BaseClass

{

public virtual void MethodA()

{

}

public virtual void MethodB()

{

}

}

class Class1: BaseClass

{

public void MethodA(string arg)

{

}

public override void MethodB()

{

}

}

class Class2: Class1

{

new public void MethodB()

{

}

}

class MainClass

{

public static void Main(string[] args)

{

Class2 o = new Class2();

ine(A());

}

}

请问,A调用的是: ( )

A A

A D.都不是

17. 请叙述属性与索引器的区别。

属性

通过名称标识。

通过简单名称或成员访问来访问。

可以为静态成员或实例成员。

第 3 页共9 页

索引器

通过签名标识。

通过元素访问来访问。

必须为实例成员。

研发部面试题 Written by Dev. Group.

属性的 get 访问器没有参数。 索引器的 get 访问器具有与索引器相同的形参

表。

属性的 set 访问器包含隐式 value 除了 value 参数外,索引器的 set 访问器还具

参数。 有与索引器相同的形参表。

18. 请叙述const与readonly的区别。

const必须在声明时赋值,而readonly可以在构造函数中赋值;

const会被编译器优化,编译后const常量会消失,而readonly在运行时才确定值;

当版本升级,const变量修改后,调用const变量的所有应用程序需要重新编译,而readonly

不需要重新编译。

19. 请叙述类与结构的区别。

1)语法不同(比如class默认是无参构造函数,但是可以显示声明;struct不能显示

声明无参构造函数)。

2)struct对struct赋值是拷贝,而class是引用。

3)struct不能存在继承,class可以继承一个class

4)struct定义的属性不能直接在构造函数给赋值,但是class可以。

5)struct没有析构函数和重写什么的概念(因为不存在继承啊)。

20.

从值类型和引用类型的区别展开

、值类型通常被分配在栈上,它的变量直接包含变量的实例,使用效率比较高。

2、引用类型分配在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过该

指针来引用实例。

3、值类型继承自ValueType(注意:而ype又继承自);而引用

类型继承自。

4、值类型变量包含其实例数据,每个变量保存了其本身的数据拷贝(副本),因此在默认

情况下,值类型的参数传递不会影响参数本身;而引用类型变量保存了其数据的引用地址,

因此以引用方式进行参数传递时会影响到参数本身,因为两个变量会引用了内存中的同一

块地址。

5、值类型有两种表示:装箱与拆箱;引用类型只有装箱一种形式。我会在下节以专门的篇

幅来深入讨论这个话题。

第 4 页共9 页

研发部面试题 Written by Dev. Group.

6、典型的值类型为:struct,enum以及大量的内置值类型;而能称为类的都可以说是引用

类型。

7、值类型的内存不由GC(垃圾回收,Gabage Collection)控制,作用域结束时,值类型会

自行释放,减少了托管堆的压力,因此具有性能上的优势。例如,通常struct比class更高

效;而引用类型的内存回收,由GC来完成,微软甚至建议用户最好不要自行释放内存。

8、值类型是密封的(sealed),因此值类型不能作为其他任何类型的基类,但是可以单继承

或者多继承接口;而引用类型一般都有继承性。

9、值类型不具有多态性;而引用类型有多态性。

10、值类型变量不可为null值,值类型都会自行初始化为0值;而引用类型变量默认情况

下,创建为null值,表示没有指向任何托管堆的引用地址。对值为null的引用类型的任何

操作,都会抛出NullReferenceException异常。

11、值类型有两种状态:装箱和未装箱,运行库提供了所有值类型的已装箱形式;而引用

类型通常只有一种形式:装箱。

21. Override与重载有什么区别?

Override涉及到继承,而重载则是方法的名称相同,而签名不同

重写(override)指用override关键字重新实现基类中的虚方法,在运行过程中,无论通过哪

个类型的引用,真正对象类型的方法将被调用。

重载(overload)指多个方法共享一个名字并且拥有相同的返回值,但是拥有不同的参数。

隐藏(new)指用new关键字重新实现基类中的方法,在运行的过程中通过引用的类型判断应该

调用哪个类型的方法。

22. 怎样理解静态变量?

类的静态变量只维护一份

C#中的委托是什么?

答:委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行

为。委托方法的调用可以像其他任何方法一样,具有参数和返回值。

委托是函数的封装,代表一"类"函数,它们都符合一定的签名:拥有相同的参数列表、返回值

类型。同时,委托也可以看成是对函数的抽象,是函数的"类"。此时委托的实例代表一个具体

的函数

三、 & 部分*

23. 您需要创建一个应用程序,公司考虑使用Windows身份认证。

第 5 页共9 页