.NET笔试题集(五)
<div id="cnblogs_post_body">1.什么是受管制的代码?答:unsafe:非托管代码。不经过CLR运行。
2.net Remoting 的工作原理是什么?
答:服务器端向客户端发送一个进程编号,一个程序域编号,以确定对象的位置。
3.O/R Mapping 的原理
答:利用反射,配置将对象和数据库表映射。
4.remoting和webservice两项技术的理解以及实际中的应用。
答:WS主要是可利用HTTP,穿透防火墙。而Remoting可以利用TCP/IP,二进制传送提高效率。
5.out保留字怎么使用,什么时候使用。
答:有时为了从一个函数中返回多个值,我们需要使用out关键字,把输出值赋给通过引用传递给方法的变量(也就是参数)。但C#要求变量再被引用的前必须初始化。在调用该方法时,还需要添加out关键字。
6.PDB是什么东西? 在调试中它应该放在哪里?
答:PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。
7.使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?
答:Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不同平台,不同语言,Remoting只适用于.Net。效率上Remoting高于Xml Web Service。
8.从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生。
9.概述反射和序列化
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
10.XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?
我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限.
11.XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?
只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。
12.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号,LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号
答:Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1)
13.在对象比较中,对象一致和对象相等分别是指什么?a.Equals(b)和a == b一样吗?
对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同。
不一样。a.Equals(b)表示a与b一致, a==b表示a与b的值相等。
14.请解释一下IClonable
IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone().
深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较
<div class="cnblogs_code" >http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttp://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gifView Code <div id="cnblogs_code_open_9945d539-d8ad-458c-87d3-49c2d717bfb3" class="cnblogs_code_hide">public class Name { public string FirstName; public string LastName; } public class Person:ICloneable { public Name PersonName; public string Email; /**//// <summary> /// Deep Copy的例子 /// </summary> /// <returns></returns> public Object Clone() { Person p = new Person(); p.Email = this.Email; p.PersonName = new Name(); p.PersonName.FirstName = this.PersonName.FirstName; p.PersonName.LastName = this.PersonName.LastName; return p; } public void ChangLastName(string lastName) { this.PersonName.LastName = lastName; } public static void Main() { Person p = new Person(); p.PersonName = new Name(); p.PersonName.LastName = "jill"; p.PersonName.FirstName = "zhang"; p.Email = "jillzhang@126.com"; Person sameNamePerson = p.Clone() as Person; sameNamePerson.ChangLastName("clr_"); Console.WriteLine(p.PersonName.LastName); Console.WriteLine(sameNamePerson.PersonName.LastName); Person samePerson = p.MemberwiseClone() as Person; samePerson.ChangLastName("Shadow"); Console.WriteLine(p.PersonName.LastName); Console.WriteLine(sameNamePerson.PersonName.LastName); Console.Read(); } }
页:
[1]