现在的位置: 首页 > 综合 > 正文

.net软件工程师面试题(参考答案)

2013年10月09日 ⁄ 综合 ⁄ 共 2308字 ⁄ 字号 评论关闭

一.填空题(每空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();

  请问,Class1.Count的值是多少?( )

   1. 1

   2. 2

   3. 3

   4. 4

Question 9

abstract class BaseClass

{

public virtual void MethodA()

{

Console.WriteLine("BaseClass");

}

public virtual void MethodB()

{

}

}

class Class1: BaseClass

{

public void MethodA()

{

Console.WriteLine("Class1");

}

public override void MethodB()

{

}

}

class Class2: Class1

{

new public void MethodB()

{

}

}

class MainClass

{

public static void Main(string[] args)

{

Class2 o = new Class2();

o.MethodA();

}

}

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

   1. BaseClass

   2. BassClass Class1

   3. Class1

   4. Class1 BassClass

 (解析,三重继承问题,孙类只是继承父类,而不是直接继承祖父类

三.问答题(每题3分,共15分)

1. 简述 private protected public internal 修饰符的访问权限。

  private:私有访问,它只能在声明自身的类中进行访问。

protected:表示受保护的访问,该类内部和继承类中可以访问

.public :表示公共访问,在代码任何位置都可对其进行访问

  internal表示内部成员,在同一命名空间内可以访问。

2. C#中的委托是什么?事件是不是一种委托?

委托是指具有相同属性(也称具有相同的函数签名:返回类型相同,参数类型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。主要用途是三个:1)函数回调;2)传递方法;3)事件机制-->

作者:

抱歉!评论已关闭.