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

下载本文档

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

文档简介

1、填空题(每空 1分,共12分)1面向对象的语言具有 _封装性、继承性、多态性。2能用foreach遍历访问的对象需要实现len umerable接口或声明GetE numerator方法的类型。不可以 (可以 or 不3当类T只声明了私有实例构造函数时,则在T的程序文本外部, 可以)从T派生岀新的类,在 T的内部可以_ (可以 or 不可以)直接创建 T的任何实例,在T的外部_不可以_ (可以 or不可以)直接创建 T的任何实例。4.委托声明的关键字是Delegate5. override 与重载的区别:override 覆盖是基类中函数的重写。重载:方法或函数的名称相同,参数或许参数类型不同

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

3、gate int myCallBack( int x);则用该委托产生的回调方法的原型应该是1. void myCallBack(i nt x)2. int receive(i nt num)3. stri ng receive(i nt x)4.不确定的Question 4下列描述错误的是()a)类不可以多重继承而接口可以;b)抽象类自身可以定义成员而接口不可以;c)抽象类和接口都不能被实例化;d)一个类可以有多个基类和多个基接口;Questi on 5下列关于构造函数的描述正确的是()a)构造函数可以声明返回类型。b)构造函数不可以用 private修饰C)构造函数必须与类名相同d)构造函

4、数不能带参数Questi on 6接口是一种引用类型, 在接口中可以声明(),但不可以声明公有的域或私有的成员变量。a)方法、属性、索引器和事件b)方法、属性信息、属性;C)索引器和字段;d)事件和字段;Questi on 7以下的C#代码,试图用来定义一个接口:P ublic in terface IFileint A;int delFileOA = 3;void disFileO;关于以上的代码,以下描述错误的是a)以上的代码中存在的错误包括:不能在接口中定义变量,所以int A代码行将岀现错误;b)以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以不能编写具体的实现函

5、数;c)代码void disFileO;声明无错误,接口可以没有返回值;d)代码 void disFileO;应该编写为 void disFile();Questi on 8.class Class1p ublic static int Count = 0;static Class1()Coun t+;public Class1()Coun t+;Classi o1 = new Class1();Class1 o2 = new Class1();请问,Class1.Count的值是多少?()1. 12. 23. 34. 4Questi on 9abstract class BaseClassp

6、ublic virtual void MethodA()Co nsole.WriteL in e(BaseClass);public virtual void MethodB()class Class1: BaseClasspublic void MethodA()Co nsole.WriteL in e(Class1);p ublic override void MethodB()class Class2: Classinew public void MethodBOclass Mai nClassp ublic static void Main( stri ng args)Class2 o

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

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

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

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

11、class Classi p rivate stri ng str = Classi.str;p rivate int i = 0;static void Stri ngCon vert(stri ng str) str = stri ng being con verted.;static void Stri ngCo nvert(Class1 c) c.str = stri ng being con verted.;static void Add(i nt i) static void AddWithRef(ref i nt i) i+;i+;static void Mai n() int

12、i1 = 10;int i2 = 20;stri ng str = str;Classi c = new Class1();Add(i1);AddWithRef(ref i2);Add(c.i);Stri ngCon vert(str);StringCon vert(c);Co nsole.WriteLi ne(i1);Con sole.WriteLi ne(i2);Con sole.WriteLi ne(c.i);Co nsole.WriteLi ne(str);Co nsole.WriteLi ne(c.str);1021strstri ng being con verted 2.写岀程序

13、的输岀结果 p ublic abstract class Apublic A()Con sole.WriteLi ne(A);p ublic virtual void Fun()Co nsole.WriteLi ne(A.Fu n(门;p ublic class B: Apublic B()Con sole.WriteLi ne(B);p ublic override void Fun。Co nsole.WriteL in e(B.Fu n();p ublic static void Mai n()A a = new B();a.Fu n();解析:主函数A a = new B();首先声明了

14、一个 A的对象a,但被赋给不同于 A的对象B,在此期间分别调用了A类的构造函数和 B类的构造函数,然后调用a的fun()函数,因为 a的fun ()函数是虚函数,被 b的fun()的函数覆盖,所以实际执行的是b 的 fun().答案:B.Fu n()3. 写岀程序的输岀结果:P ublic class Ap ublic virtual void Fun 1(i nt i)Con sole.WriteLi ne(i);p ublic void Fun2(A a)a.Fu n1(1);Fun 1(5);p ublic class B : Ap ublic override void Fun 1(i

15、 nt i)base.Fu n1 (i + 1);p ublic static void Mai n()B b = new B();A a = new A();b.Fu n2(a);a.Fu n2(b);输岀结果为:(一个函数的执行必须在一个具体的对象中实现,如果函数明确告诉是哪个对象,则在改该对 象下执行;如果没有,则在默认的对象下执行)4. 在下面的例子里 using System;class Apublic A()Prin tFieldsO;p ublic virtual void Prin tFields() class B:Aint x=4;int y;public B()y=-i;

16、p ublic override void Prin tFields()x += 1;Co nsole.WriteLi ne(x=0,y=1,x,y);y += 1;当使用B b = new B()创建的实例时,产生什么输岀?b. PrintFields();结果是什么?X=5,y=0b. PrintFields结果是 x=6;y=15. 下面的例子中 using System;class Ap ublic static int X;static A()X=B.Y+1;class Bpublic static int Y=A.X+1;static B()static void Mai n()C

17、o nsole.WriteLi ne(X=0,Y=1,A.X,B.Y);产生的输岀结果是什么?X=2,Y=1五.程序设计(每题 7分,共28分) 1.请编程实现一个冒泡排序算法?/比较法usingusingusingSystem;System.Collectio ns.Ge neric;System.Text;namespace test1classP rogramstaticvoid Main(string args)int Array =6,18,12,23,19,28,30;Co nsole.WriteLi ne(排序前的数组:); foreach (int n in Array)Con

18、 sole .Write( n+ );Con sole.WriteLi ne();for (int i = 1; i Array.Le ngth; i+)/控制趟数for(intj = 0; j Arrayj +1)/交换int temp = Arrayj;Arrayj = Arrayj + 1; Arrayj + 1 = temp;/排序后Con sole.WriteL ine( for (int排序后的数组:);n = 0; n Array.Le ngth; n+)Con sole .Write(Array n +);2.编程程序实现委托,事件。 usingusi ng usingCon

19、sole .WriteLi ne();System;System.Collectio ns.Ge neric;System.Text;namespace delegateDemoclass P rogramstatic voidMain(string args)Mouse mouse =Cat cat = new Cat();Master master =new Mouse);new Master ();cat.Calli ng+= new EventHandler (mouse.Escape);cat.Calli ng+= new EventHandler (master.Wakened);

20、cat.Call();p ublicsealedclassCatII猫类publiceve ntEve ntHa ndlerCalli ng;publicvoidCall()Con sole .WriteLi ne(猫开始叫了if (Calling!= null );/检查事件是否被注册Calling( this , EventArgs.Empty); / 调用事件注册的方法p ublicsealedclass Mouse / 老鼠类p ublicvoid Esca pe(object sen der, Eve ntArgs e)Console.WriteLine(老鼠逃跑了 .); p ub

21、licsealed class Master / 主人p ublic void Wake nedobject sen der, Eve ntArgs e) Console.WriteLine(主人惊醒了 .);3.写一个程序,语言不限,打印岀100的阶乘(即1*2*3*100)的精确数值结果 (不能是浮点数) 如5的阶乘是 1*2*3*4*5=120 。usingusingusi ngSystem;System.Collectio ns.Ge neric;System.Text;/,打印出100的阶乘(即1*2*3*100)的精确数值结果(不能是浮点数)。如5 的阶乘是 1*2*3*4*5=1

22、20namespace shuzuclass P rogramstaticvoid Main(string args)Console.WriteLine(请输入一个正数); int n = int .Parse( Console.ReadLine();Console.WriteLine( 0的阶乘 1*2*3* *1=2, n,n,Fn(n);p ublicstatic doubleFn (i nt n)if (n=1)return1; elsereturnn * Fn(n - 1);4.写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。 转换为壹仟贰佰叁拾肆圆零伍角陆分。S

23、ystem;System.Collectio ns.Ge neric; System.Text;usingusingusing例如,把 1234.56namespace ConsoleApplication1class P rogramstaticvoid Main(string args)Con sole.WriteL in e(请输入数字:); stri ng s =Con sole.ReadL in e();Con sole .Write(转换后Y:); for (int i = 0; i s.Le ngth; i+) /switch(Co nvert.Tol nt32(Co nsole.ReadL in e()(si - 48)switchcase0:caseCon sole.Write( break;1:零);caseCon sole.Write(

温馨提示

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

评论

0/150

提交评论