欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    最新.net高级工程师面试题.doc

    • 资源ID:33797489       资源大小:428KB        全文页数:22页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    最新.net高级工程师面试题.doc

    精品资料.net高级工程师面试题.net高级工程师面试题.net高级工程师面试题.net软件工程师面试题基础题:1.简述string、ArrayList、List的区别。数组:        优点 :o 数组在内存中是连续存储的,索引速度非常快;o 赋值和修改元素也很简单;        不足:o 两个数据之间插入数据比较麻烦;o 声明数组的时候,必须指明数组的长度,数组长度过长会造成内存浪费,数组的长度过短,会造成数据溢出错误。ArrayList:        优点:o .net framework 提供的用于数据存储和检索的专用类o 大小依据存储 的数据来动态扩展和收缩o 继承IList,可以方便的进行数据的添加、插入和删除        缺点:o 允许插入不同类型的数据,都当做object类型处理o 数据处理时可能出现类型不匹配的错误o 存在装箱(值=引用)拆箱的操作,会带来很大的性能损耗List:       优点:o 声明List集合时,需要声明集合内数据的对象类型o 避免了类型安全问题和装箱拆箱的性能问题2.简述装箱和拆箱操作中的性能损耗是如何产生的。3.简述对ASP.NET中的事件机制的理解。4.在一个ASP.NET的三层结构系统中,以登录操作为例,简述在各层中如何组织代码。5.简述相比DATASET,实体类在WEB项目中的优点与缺点。6.简述GC是如何工作的。Java采用VM(Virtual Machine)机制,由VM来管理程序的运行当然也包括对GC管理。90年代末期.NET出现了,.NET采用了和Java类似的方法由CLR(Common Language Runtime)来管理。Garbage Collector(垃圾收集器,在不至于混淆的情况下也成为GC)以应用程序的root为基础,遍历应用程序在Heap上动态分配的所有对象2,通过识别它们是否被引用来确定哪些对象是已经死亡的、哪些仍需要被使用。已经不再被应用程序的root或者别的对象所引用的对象就是已经死亡的对象,即所谓的垃圾,需要被回收。这就是GC工作的原理。为了实现这个原理,GC有多种算法。比较常见的算法有Reference Counting,Mark Sweep,Copy Collection等等。目前主流的虚拟系统.NET CLR,Java VM和Rotor都是采用的Mark Sweep算法。 Java的内存管理实际就是对象的管理,其中包括对像的分配和释放。对于程序员来说,分配对象使用new关键字,释放对象时只是将对象赋值为null,让程序员不能够再访问到这个对象,该对象被称为“不可达”。GC将负责回收所有“不可达”对象的内存空间。根据GC的工作原理,可以通过一些技巧和方式让GC运行更快,高效而又合理。编程建议如下:o 尽早释放无用对象的引用,特别注意一些复杂对象,如数组,队列等。对于此类对象,GC回收它们的效率一般较低,如果程序允许,应尽早将不用的引用对象赋为null,这样可以加速GC的工作。o 尽量少用finalize函数。finalize是java提供给程序员用来释放对象或资源的函数,但是它会加大GC的工作量,因此尽量少采用finalize函数回收资源。   当程序有一定的等待时间,程序员可以手动执行System.gc(),通知GC运行,但是java语言规范并不保证GC一定会执行。.NET的GC机制有这样两个问题:o 首先,GC并不是能释放所有的资源。它不能自动释放非托管资源。o 第二,GC并不是实时性的,这将会造成系统性能上的瓶颈和不确定性。o GC并不是实时性的,这会造成系统性能上的瓶颈和不确定性。所以有了IDisposable接口,IDisposable接口定义了Dispose方法,这个方法用来供程序员显式调用以释放非托管资源。使用using语句可以简化资源管理7.简述3个熟悉的设计模式。              简单工厂模式(只适用于业务简单的情况):有三种角色组成:· 工厂类角色(只有一个工厂类)· 抽象产品角色· 具体产品角色 工厂方法模式(当产品种类非常多时会出现大量与之对应的工厂类):有四种角色· 抽象工厂角色· 具体工厂角色· 抽象产品角色· 具体产品角色简单工厂和工厂方法结合能够减少工厂类。使用这两种模式能够提高扩展性和维护性抽象工厂模式(需要创建的对象比较复杂):满足条件:· 系统中有多个产品族,而系统一次只可能消费其中一族产品· 同属于同一个产品族的产品一起使用时。组成角色:· 抽象工厂角色· 具体工厂角色· 抽象产品角色· 具体产品角色8.简述UDP协议特点,以及如何提高UDP传输可靠性。9.简述.NET2.0,.NET3.0,.NET3.5各版本中推出的新特性。10. const和readonly的区别我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。明白了这个本质区别,我们就不难看出下面的语句中static readonly和const能否互换了:1. static readonly MyClass myins = new MyClass();2. static readonly MyClass myins = null;3. static readonly B = 10;   static readonly A = B * 20;4. static readonly int constIntArray = new int 1, 2, 3;5. void SomeFunction()         const int a = 10;      .   6.private static string astr="abcd"  private const string str = astr+"efg"1:不可以换成const。new操作符是需要执行构造函数的,所以无法在编译期间确定2:可以换成const。我们也看到,Reference类型的常量(除了String)只能是Null。3:可以换成const。我们可以在编译期间很明确的说,A等于200。4:不可以换成const。道理和1是一样的,虽然看起来1,2,3的数组的确就是一个常量。5:不可以换成readonly,readonly只能用来修饰类的field,不能修饰局部变量,也不能修饰property等其他类成员。6.错误:如果在astr前加上const或者const改为readonly即可;总结:1.const、readonly和static readonly定义的常量,指定初始值后(包括在构造函数内指定的初始值) 将不可更改,可读不可写;          2.const定义时必须指定初始值,而readonly定义时可以不进行初始化(MS建议在定义时初始值),同时也可以在构造函数内指定初始值,          并以构造函数内指定的值为准;         3.const和static readonly定义的常量是静态的,只能由类直接访问;而readonly定义的常量是非静态 的,只能由实例对象访问;           4.static readonly常量,如果在构造函数内指定初始值,则必须是静态无参构造函数;         5.const是编译时常量,readonly是运行时常量;cosnt较高效,readonly较灵活。在应用上以static readonly代替const,以平衡const在灵活性上的不足, 同时克服编译器优化cosnt性能,所带来的程序集引用不一致问题; 算法题:(以下三题不用作答,想好思路面试谈即可)1. 一个整数数列,元素取值可能是065535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。注意:- 5个数值允许是乱序的。比如: 8 7 5 0 6- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4- 0可以多次出现。- 复杂度如果是O(n2)则不得分。解题思路:1.取5个数中非0的最大数和最小数,之差不大于4则连续,否则不连续。 2.要增加两个特例: 1)全0 算连续,2)只有一个非0算连续代码实例 java   1. <span style="font-size:14px;"><span style="font-family:Microsoft YaHei;font-size:12px;color:#333333;"><span style="font-size:12px;">#include<iostream>    2. #include<stdlib.h>    3. using namespace std;    4.     5. int check(int arry5)    6.     7.     int max=0,min=65535;    8.     int zerocount=0;    9.     for(int i=0;i<5;i+)    10.         11.         if(arryi=0)    12.             zerocount+;    13.         else    14.             15.             if(arryi>max)    16.                 max=arryi;    17.             if(arryi<min)    18.                 min=arryi;    19.             20.         21.     if(zerocount>=4)    22.         return 1;    23.     else    24.         25.         if(max-min<=4)    26.             return 1;    27.         else     28.             return 0;    29.         30.     31.     32. int main()    33.     34.     int arry5;    35.     cout<<"一个整数数列,元素取值可能是065535中的任意一个数,相同数值不会重复出现;0是例外,可以反复出现"<<endl;    36.     for(int i=0;i<5;i+)    37.         cin>>arryi;    38.     int p=check(arry);    39.     if(p)    40.         cout<<"连续"<<endl;    41.     else    42.         cout<<"不连续"<<endl;    43.     system("pause");    44.  </span></span></span>  输入: 1 2 3 0 5输出:连续2. 设计一个在一百万个数字中求十个最大的数算法java   1. <span style="font-size:14px;"><span style="font-family:Microsoft YaHei;font-size:12px;color:#333333;"><span style="font-size:12px;">int dataM;  2. int topN + 1;  3.   4.   5. void top_N()  6.   7.     top0 = std:numeric_limits<int>:max(); / Set a "guard" on the boundary to reduce comparision times.  8.     for (int i = 1; i <= N; +i) topi = std:numeric_limits<int>:min();  9.     for (int j = 0; j < M; +j)  10.       11.         for (int k = N; topk < dataj; -k) topk = topk - 1;  12.         topk + 1 = dataj;  13.       14. </span></span></span>  3. 有如下输入:若干个由大写英文字母构成的单词,以,号隔开。如“ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB”。 写一段程序,从输入中寻找由相同字符构成(重复字符出现次数也是一样)的单词组输出。如以上输入,则输出:第1组:ABCCD,CDCAB第2组:CDA,DCA,ADCjava   1. <span style="font-size:14px;"><span style="font-family:Microsoft YaHei;font-size:12px;color:#333333;"><span style="font-size:12px;">string s = "ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB"  2. var query = s.Split(',').GroupBy(x => x.OrderBy(y => y);  3. foreach (var item in query)  4. Console.WriteLine(string.Join(",", item.ToArray();</span></span></span>  项目&管理:(以下两题不用作答,想好思路面试谈即可)1.假设你做为一个开发团队的领导者,经过长时间的磨合,有了一只10人左右的不错的团队。其中每个成员都在其职位上有不可或缺的作用。现由于一些原因,需要你辞退其中一人。你会如何处理这件事情?2.有一套公司自己开发供本公司使用的CRM系统,其中的权限控制过于简单。现需要你重新设计其权限系统,你会如何开展这个工作?1、文件路径文本转换 编写一个函数,输入参数:·页面文件的虚拟路径(string pageVirPath,例如:/abc/def/page.aspx)·图片文件的虚拟路径(string imgVirPath,例如:/ghi/image/pic .gif)处理:计算出图片文件相对页面文件的相对路径,例如:././ghi/image/ pic .gif返回:相对路径要求:a、不要求严格的C#语言表述,可适当使用伪码,着重要表达清楚处理逻辑;b、尽量使用正则表达式2、DataTable内数据转换 编写一个函数,输入参数:·源数据表(DataTable srcTable),该表中已包含int型数据列”isSys”,数据为 0或-1,处理:直接处理源数据表,将”isSys” 数据列替换为string型的”系统” 数据列,当”isSys” 列中值为0,则”系统” 列值为空字符串,当”isSys” 列中值为-1,则”系统” 列值为”系统”。返回:操作是否成功(bool);要求:a、不要求严格的C#语言表述,可适当使用伪码,着重要表达清楚处理逻辑;b、不抛出任何异常(包括.net异常)设计模式面试题:1, Windows Media Player和RealPlayer是常用的媒体播放器,它们的API结构和调用方法非常不同,现在你的应用需要同时支持调用这2种播放器的API。你要怎么设计?2, 现在有一种空调,它支持3种模式:Hot Air,Cool Air 和DoNothing。例如,当选择Hot Air模式时,再选择温度为20度,空调将输送热风;选择 Cool Air模式,温度设置为20度时,将输送冷风;在选择DoNothing模式时,空调什么都不做。 你将考虑如何为空调设计应用程序?如果将来空调需要增加支持新的模式呢?一、 第一题的解:适配器模式+抽象工厂模式我采用了抽象工厂模式+适配器模式,先上图:设计的重点是:1,首先看适配器模式。MediaPlayerClassA和RealPlayerClassA都实现了IMediaA接口。MediaPlayerClassA调用MediaPlayer的APIs来实现IMediaA接口定义的功能;RealPlayerClassA则调用RealPlayer APIs。2,再来看抽象工厂模式。MediaPlayerFactory和RealPlayerFactory继承自抽象类MediaFactory类,MediaPlayerFactory用来创建MediaPlayer产品族;RealPlayerFactory用来创建RealPlayer产品族。虽然上图中只画出了IMediaA接口,但事实上我们可能需要实现多个接口如IMediaB,IMediaC等,这就是这里为什么使用抽象工厂模式。3,抽象类MediaFactory实现了一个静态方法CreateFactory,用来创建具体工厂,该方法返回MediaFactory类型的对象给Client,这样,Client不就需要知道它操作的是那个具体工厂。CreateFactory方法采用反射技术,这样,不需要修改CreateFactory方法的代码,就可以支持以后添加新的具体工厂。4,工厂类返回IMediaA接口给Client,Client操作IMediaA接口而不需要知道它具体使用的是MediaPlayerClassA还是RealPlayerClassA的实例。序列图如下:二、 第二题的解:Flyweight模式我采用了Flyweight(桥梁)模式,先上图:设计的重点是:1,把AirConditioner和它支持的Model分离开来,在AirConditioner类的实例中保存它支持的所有Model类的实例,这样做的好处是1)如果只是支持的Model有变化,不需要去实现新的AirConditioner类,只要添加或删除支持的Model即可。2)多个不同的AirConditioner类可以方便地共享共同的Model类,否则,可能需要复杂的继承关系才能在不同AirConditioner类之间共享Model。事实上,AirConditioner类和Model类的关系非常类似于桥梁模式中抽象类和实现类的关系。2,采用Flyweight模式。在多个AirCondition实例中,共享Model的实例,这样可以大大地节省存储空间。ModelFactory用于创建Model实例并返回给AirCondition,它保存了一个Model池,每种类型的Model只有一个实例。在Model类中只保存内蕴状态,AirConditioner类保存外蕴状态,调用Model类的Execute方法时,需要把IAirConditioner作为外蕴状态传递给方法(或者也可以使用专门的状态类作为外蕴状态)。序列图如下:数据库基础面试题1. 教师号星期号是否有课 有 有 有 有 有 写一条sql语句让你变为这样的表 教师号星期一星期二星期三    各星期下的数字表示:对应的教师在星期几已经排的课数T-SQL实现:sql   1. <span style="font-size:14px;"><span style="font-family:Microsoft YaHei;font-size:12px;color:#333333;">CREATE TABLE COURSE_test (  2. "教师号" INT,  3. "星期号" INT ,  4. "是否有课" nvarchar(20)  5. )  6.   7. insert into COURSE_test  8. VALUES(1,2,'有');  9.   10. select 教师号,  11. count(case when(星期号=1) AND (是否有课='有')then 教师号 else null end) as 星期一,  12. count(case when(星期号=2) AND (是否有课='有')then 教师号 else null end) as 星期二,  13. count(case when(星期号=3) AND (是否有课='有')then 教师号 else null end) as 星期三  14. from COURSE_test   15. group by 教师号</span></span>  运行select语句结果如下:非技术(面谈):1.在上份工作中,自己体现最大的优点和缺点是什么。

    注意事项

    本文(最新.net高级工程师面试题.doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开