Net软件工程师面试题精编版_第1页
Net软件工程师面试题精编版_第2页
Net软件工程师面试题精编版_第3页
Net软件工程师面试题精编版_第4页
Net软件工程师面试题精编版_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Net软件工程师面试题公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-一.填空题(每空1分,共12分) 1面向对象的语言具有_封装 性、继承 性、多态 性。2能用for each遍历访问的对象需要实现 I enumerable 接口或声明 GetEnumerator 方法的类型。3当类T只声明了私有实例构造函数时,则在T的程序文本外部,不可以 (可以or不可以)从T派生出新的类,在T的内部_可以一(可以or不可以)直接创建T的任何实例,在T的外部_不可以_ (可以or不可以)直接创建T 的任何实例。4.委托声明的关键字是_Delegate5. override与重

2、载的区别:override覆盖是基类中函数的重写。重载:方法或 函数的名称相同,参数或许参数类型不同,进行多次重载实现功能。二.不定项选择(每题2分,共18)Question 1以下叙述正确的是:A.接口中可以有虚方法。B.一个类可以实现多个接口。C.接口不能被实例化。D.接口中可以包含已实现的方法。Question 2以下描述错误的是()1 .在C+中支持抽象类而在C#中不支持抽象类。2 . C+中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C# 中没有头文件并且在同一处声明和定义类的成员。3 .在C#中可使用new修饰符显式隐藏从基类继承的成员。4 .在C#中要在派生类中重新定

3、义基类的虚函数必须在前面加Overrideo 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)构造函数

4、可以声明返回类型。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代码 行

5、将出现错误;b)以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以 不能编写具体的实现函数;c)代码void disFileO;声明无错误,接口可以没有返回值;d)代码 void disFile();应该编写为 void disFile () ;Question 8.class Classi(public static int Count = 0;static Classi()(Count+;public Classi()(Count+;)Classi ol = new Classi ();Classi o2 = new Classi();请问,的值是多少()1. 12.

6、23. 34. 4Question 9abstract class BaseClass(public virtual void MethodA()("BaseClass");)public virtual void MethodB()()class Classi: BaseClass(public void MethodA()public override void MethodB()class Class2: Classi(new public void MethodB()()class MainClass(public static void Main(string a

7、rgs)(Class2 o = new Class2();0;)请问,此程序输出结果是:1. BaseClass2. BassClass Classi3. Classi4. Classi BassClass(解析,三重继承问题,孙类只是继承父类,而不是直接继承祖父类)三.问答题(每题3分,共15分)1 .简述 private、protected、public、internal 修饰符的访问权限。private:私有访问,它只能在声明自身的类中进行访问。protected :表示受保护的访问,该类内部和继承类中可以访问.public :表示公共访问,在代码任何位置都可对其进行访问 interna

8、l表示内部成员,在同一命名空间内可以访问。2 . C#中的委托是什么事件是不是一种委托委托是指具有相同属性(也称具有相同的函数签名:返回类型相同,参数类 型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。主要 用途是三个:1)函数回调;2)传递方法;3)事件机制事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托, 对事件的声明,实际是声明一个私有的委托变量,对委托变量进行封装,即委托 变量加上event关键字后,不管其前面的访问修饰符是pub 1 i c还是pr ivate,编 译器都会将其编译为private。委托是一个类,它定义了方法的类型,使得可以

9、将方法当作另一个方法的参 数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用 If-Else (Switch)语句,同时使得程序具有更好的可扩展性。以委托为参数的函 数具有一定的通用性。使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用 “调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方 法。3 . abstract可以和virtual 一起使用吗可以和override 一起使用吗 不可以一起使用,但是可以和override 一起使用。4 .请叙述属性与索引器的区别。属性:它是存取类的字段,索引器:Indexer它是特殊的属性,用它可以使用

10、户像 访问数组一样访问类的成员。5 .请详述在dotnet中类(class)与结构(struct)的异同。类class可以进行实例化,它是引用类型,内存分配在栈中,效率高,它有默 认的构造函数,有析构函数可以使用abstract和sealed, protected修饰符。 要用new进行初始化,结构它是属于值类型,内存分配在堆中,效率低,它没有默认的构造函数,但 是可以添加构造函数,没有析构函数没有abstract和sealed(因为不能继承)不 能有protected修饰符可以不使用new初始化,但是可以在结构中初始化实例 字段。四.分析程序(每题5分,共25分)(此题不能调试,若发现调试,

11、扣除分数)L写出程序的输出结果class Classi private string str = private int i = 0;static void StringConvert(string str) str = "string being converted.static void StringConvert(Classi c) ="string being converted. *;)static void Add(int i)i+;)static void AddWithRef(ref int i)i+;)static void Main() int il =

12、 10;int i2 = 20;string str = "str"Classi c = new Classi ();Add(il);AddWithRef(ref i2);Add;StringConvert(str);StringConvert(c);(il);(12);F(str);9)10210strstring being converted2 .写出程序的输出结果public abstract class A(public A()('£);)public virtual void Fun()( 0 );public class B: A(publi

13、c B()(曾);public override void Fun()("0");)public static void Main()(A a = new B();0;)解析:主函数A a = new B();首先声明了一个A的对象a,但被赋给不同于A的 对象B,在此期间分别调用了 A类的构造函数和B类的构造函数,然后调用a的fun()函数,因为a的fun ()函数是虚函数,被b的fun()的函数覆盖,所以实 际执行的是b的fun().答案:AB03 .写出程序的输出结果:public class A(public virtual void Funl(int i)(;pub

14、lic void Fun2(A a)(1);Funl (5);) public class B : Apublic override void Funl(int i)(i + 1);public static void Main()(B b = new B();A a = new A();(a);(b);)输出结果为:2516(一个函数的执行必须在一个具体的对象中实现,如果函数明确告诉是哪个对象,则在改该对象下执行;如果没有,则在默认的对象下执行)4 .在下面的例子里using System: class Apublic A()PrintFields ();)public virtual vo

15、id PrintFields()class B:A(int x=4;int y;public B()(y=-l;public override void PrintFields()(x += 1;("x=0,k",x,y);y += 1;当使用B b = new B()创建的实例时,产生什么输出b. PrintFields ();结果是什么X=5, y=0b. PrintFields 结果是 x=6; y=l5.下面的例子中using System:class A(public static int X;static A()(X=+l;)class B(public sta

16、tic int Y=+l;static B()( )static void Main()rx=o,Y=i,;)产生的输出结果是什么X=2, Y=1五.程序设计(每题7分,共28分)1.请编程实现一个冒泡排序算法 编程程序实现委托,事件。usingSystem;usingusing;namespacedelegateDemo(classProgram(staticvoidMain(string args)(Catcat FewCat ();Mousemouse =newIouse ();Mastermaster =newMaster ();+=newEventHandler;+=newEvent

17、Handler;0;)publicsealedclassCat.);)publicsealedclassMaster. );)3.写一个程序,语言不限,打印出100的阶乘(即1*2*3*-*100)的精确数值结果 (不能是浮点数)。如5的阶乘是1*2*3*4*5=120。usingSystem;usingusing;写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把转换为壹仟贰佰叁拾肆圆零伍角陆分。usingSystem;usingusing;namespaceConsoleApplicationl classProgramstaticvoidMain (string args)(请输入数字:);strings =();(转换后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论