ForEvErNoMe 发表于 2012-12-10 13:21:39

.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]
查看完整版本: .NET笔试题集(五)