Net软件工程师面试题精编版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

N e t软件工程师面试题公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

一.填空题(每空1分,共12分)

1面向对象的语言具有__封装______性、__继承_______性、__多态______性。2能用foreach遍历访问的对象需要实现____Ienumerable____________接口或声明_____GetEnumerator___________方法的类型。

3当类T只声明了私有实例构造函数时,则在T的程序文本外部,___不可以___(可以or不可以)从T派生出新的类,在T的内部__可以__(可以or不可以)直接创建T的任何实例,在T的外部__不可以__(可以or不可以)直接创建T 的任何实例。

4.委托声明的关键字是__Delegate____

5.override与重载的区别:override覆盖是基类中函数的重写。重载:方法或函数的名称相同,参数或许参数类型不同,进行多次重载实现功能。

二.不定项选择(每题2分,共18)

Question 1

以下叙述正确的是:

A.接口中可以有虚方法。

B.一个类可以实现多个接口。

C.接口不能被实例化。

D.接口中可以包含已实现的方法。

Question 2

以下描述错误的是()

1.在C++中支持抽象类而在C#中不支持抽象类。

2. C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。

3.在C#中可使用new修饰符显式隐藏从基类继承的成员。

4.在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。Question 3

声明一个委托public delegate int myCallBack(int x);则用该委托产生的回调方法的原型应该是

1. void myCallBack(int x)

2. int receive(int num)

3. string receive(int x)

4.不确定的

Question 4

下列描述错误的是()

a)类不可以多重继承而接口可以;

b)抽象类自身可以定义成员而接口不可以;

c)抽象类和接口都不能被实例化;

d)一个类可以有多个基类和多个基接口;

Question 5

下列关于构造函数的描述正确的是()

a)构造函数可以声明返回类型。

b)构造函数不可以用private修饰

c)构造函数必须与类名相同

d)构造函数不能带参数

Question 6

接口是一种引用类型,在接口中可以声明(),但不可以声明公有的域或私有的成员变量。

a)方法、属性、索引器和事件;

b)方法、属性信息、属性;

c)索引器和字段;

d)事件和字段;

Question 7

以下的C#代码,试图用来定义一个接口:

public interface IFile

{

int A;

int delFile()

{

A = 3;

}

void disFile();

}

关于以上的代码,以下描述错误的是( )。

a)以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码

行将出现错误;

b)以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以

不能编写具体的实现函数;

c)代码void disFile();声明无错误,接口可以没有返回值;

d)代码void disFile();应该编写为void disFile(){};

Question 8.

class Class1

{

public static int Count = 0;

static Class1()

{

Count++;

}

public Class1()

{

Count++;

}

}

Class1 o1 = new Class1();

Class1 o2 = new Class1();

请问,的值是多少( )

1. 1

2. 2

3. 3

4. 4

Question 9

abstract class BaseClass

{

public virtual void MethodA()

{

("BaseClass");

}

public virtual void MethodB()

{

}

}

class Class1: BaseClass

{

public void MethodA()

{

("Class1");

}

public override void MethodB()

{

}

}

class Class2: Class1

{

new public void MethodB()

{

}

}

class MainClass

{

public static void Main(string[] args) {

Class2 o = new Class2();

();

}

}

请问,此程序输出结果是:

1. BaseClass

2. BassClass Class1

3. Class1

相关文档
最新文档