鲲鹏

C# asp.net

导航

NET牛人应该知道些什么?

Posted on 2009-04-14 17:30  昆鹏  阅读(192)  评论(0编辑  收藏  举报

NET牛人应该知道些什么?A、任何一个使用.NET的人

1、描述线程与进程的区别?
2、什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 ?
3、Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?
4、EXE和DLL之间的区别是什么?
5、什么是强类型,什么是弱类型?哪种更好些?为什么?
6、PID是什么?在做系统的故障排除时如何使用它? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7、单个TCP/IP端口上能够侦听多少个进程? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
8、什么是GAC?它解决了什么问题? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
B、中级.NET开发人员 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1、阐述面向接口、面向对象、面向方面编程的区别 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2、什么是Interface?它与Class有什么区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3、什么是反射? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4、使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
5、类型系统是由XMLSchema表示的吗?CLS是XMLSchema表示的吗? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6、从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7、调用Assembly.Load算静态引用还是动态引用? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
8、何时使用Assembly.LoadFrom?何时使用Assembly.LoadFile? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
9、什么叫Assembly Qualified Name?它是一个文件名吗?它有什么不同? Assembly.Load("foo.dll"); 这句话是否正确? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
10、做强签名的assembly与不做强签名的assembly有什么不同? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
11、DateTime是否可以为null? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
12、什么叫JIT?什么是NGEN?它们分别有什么限制和好处? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
13、.NET CLR中一代的垃圾收集器是如何管理对象的生命周期的?什么叫非确定性终结? Finalize()和Dispose()之间的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
14、using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
15、tasklist /m "mscor*" 这句命令是干嘛的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
16、in-proc和out-of-proc的区别 .NET里的哪一项技术能够实现out-of-proc通讯? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
17、当你在ASP.NET中运行一个组件时,它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
C、高级开发人员/架构师 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1、DateTime.Parse(myString); 这行代码有什么问题? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2、PDB是什么东西? 在调试中它应该放在哪里? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3、什么叫圈复杂度(cyclomatic complexity)?为什么它很重要? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4、写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查", 什么叫FullTrust?放入GAC的assembly是否是FullTrust的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
代码加上需要安全权限的特性有什么好处? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
5、gacutil /l ¦ find /i "Corillian" 这句命令的作用是什么? sn -t foo.dll 这句命令是干嘛的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6、DCOM需要防火墙打开哪些端口?端口135是干嘛用的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7、对比OOP和SOA,它们的目的分别是什么? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
8、XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
9、为什么不提倡catch(Exception)? Debug.Write和Trace.Write有什么不同?何时应该使用哪一个? Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
10、JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
11、对比抽象基类和接口的使用 a.Equals(b)和a == b一样吗? 在对象比较中,对象一致和对象相等分别是指什么? 12、在.NET中如何实现深拷贝(deep copy)? 请解释一下IClonable 什么叫装箱? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
string是值类型还是引用类型? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
13、XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
14、为什么不应该在.NET中使用out参数?它究竟好不好? 特性能够放到某个方法的参数上?如果可以,这有什么用? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
D、C# 组件开发人员 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1、什么时候使用override?什么时候使用new? 什么叫shadowing? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2、解释virtual、sealed、override和abstract的区别 Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d 解释这个字符串每个部分的重要性和作用 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3、解释public、protected、private和internal的区别 使用Primary Interop Assembly (PIA)有什么好处? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4、NUnit是通过什么机制获知需要测试哪些方法的? 5、catch(Exception e){throw e;}和catch(Exception e){throw;}的区别 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6、typeof(foo)和myFoo.GetType()的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7、public class c{ public c(string a) : this() {;}; public c() {;} } 解释第一个构造函数中发生了什么? 这个构造函数有什么用? 8、this是干嘛用的?能够用在static方法中? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
E、ASP.NET (UI)开发人员 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1、阐述一个基于浏览器的Form POST如何变成一个服务器端的事件,如Button1_OnClick。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2、什么是PostBack? 什么是ViewState? 它是否被编码过? 是否被加密过?谁会使用ViewState? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3、 <machinekey>元素是干嘛用的?它用于哪两项ASP.NET技术? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4、说出ASP.NET 1.1中的3种Session State提供程序以及它们的优缺点? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
5、什么叫Web Gardening? 在设计中如何使用它? 假设有一个ASP.NET应用程序,那么单独一个进程中允许多少应用程序对象?那两个进程呢?启用了Web Gardening的2个进程呢?这对设计有何影响? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6、ASP.NET会重用多个请求之间的线程吗?是否每个HttpRequest都有自己的线程? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7、你是否应该用ASP.NET的Thread Local存储? [ThreadStatic]属性在ASP.NET中有用吗?它有没有副作用?是好是坏? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
8、如何使用HttpHandler简化现有的为.aspx页面提供验证图片的设计 HttpModule订阅的是什么类型的事件? 这对于实现有何影响?如果不打算重新编译ASP.NE应用程序,应该怎么做? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
9、说出表示任意一个终端(URL)的方式,以及ASP.NET中把请求路由到那个终点的方式 解释cookie的工作原理。给出一个滥用Cookie的例子。 10、解释HttpRequest.ValidateInput()的重要性? 哪些数据是通过HTTP Header传递的? 对比HTTP动词GET和POST? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
11、什么是HEAD? 说出至少6个HTTP状态码以及它们的含义 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
12、if-not-modified-since的工作原理是什么? 用ASP.NET如何实现它? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
13、解释 <@OutputCache%>和如何使用VaryByParam、VaryByHeader. VaryByCustom是如何工作的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
14、如何通过q=? (除了q=5)来实现ASP.NET HTML输出缓冲和缓冲过期(比如http://localhost/page.aspx?q=5)? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
F、XML开发人员 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1、XML命名空间的作用? 何时适合使用DOM?何时不适合?有没有尺度限制? 什么是WS-I基本配置?它重要在哪里? 写一个小XML文档,其中使用的是默认的命名空间,以及一个合法的(前缀)命名空间,其中要有分别属性这两个命名空间的元素 元素和特性的基本区别在哪里? 格式完好的XML和有效的XML有什么区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2、.NET中如何验证XML? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3、myXmlDocument.SelectNodes("//mynode"); 为什么这句代码不好?什么时候它是好的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4、拉式解析(XmlReader)与事件读取器(Sax)的区别 XPathDocument和XmlDocument的区别? 在何种情况下应该用哪一个? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
5、“XML片断”与“XML文档”有什么区别 什么叫格式规范的XML? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6、XML InfoSet规范与Xml DOM有什么不同? InfoSet是要解决什么问题? 比较DTD和XSD,它们的相似点与区别分别是什么?哪个更好些?为什么? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7、System.Xml支持DTD吗?如果支持,如何使用? XML Schema能够表示为对象图?对象图能够表示为XML Schema?Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
网上查的: Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
任何一个使用.NET的人 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1) 描述线程与进程的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比喻来说,如果一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2) 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动方式 2)手动方式 3)禁用 。自动方式的时候,windows服务将在OS启动后自动启动运行,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。另外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3) Windows单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
这个需要针对硬件平台,公式为单个进程能访问的最大内存量=2的处理器位数次方/2,比如通常情况下,32位处理器下,单个进程所能访问的最大内存量为:232 /2 = 2G 。单个进程能访问的最大内存量是最大虚拟内存的1/2,因为要分配给操作系统一半虚拟内存。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4) 什么是强类型,什么是弱类型?哪种更好些?为什么? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
5) PID是什么?在做系统的故障排除时如何使用它? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visual studio.net等ide将故障进程附加到进程中进行调试(debug) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6) 单个TCP/IP端口上能够被多少个进程侦听? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
可以为多个,多个为端口复用 (多谢蛙蛙池塘的提醒) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
看下面代码 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
端口复用 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Socket socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Socket socket2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
socket1.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235)); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
socket1.Listen(10); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
socket2.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
socket2.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8235)); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
socket2.Listen(10); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Console.Read(); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7) 什么是GAC?它解决了什么问题? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Gloal Assembly Cache,全局应用程序集缓存。它解决了几个程序共享某一个程序集的问题。不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序目录进行查找。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
中级.NET开发人员 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1) 阐述面向接口、面向对象、面向方面编程的区别 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强调的是依赖倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时候,稍微有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的分解。面向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块化。而面向方面正是解决这一问题的方案,它的关键思想是"将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2) 什么是Interface?它与Abstract Class有什么区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能继承一个父类 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3) 什么是反射? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4) 使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不同平台,不同语言,Remoting只适用于.Net。效率上Remoting高于Xml Web Service Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
5) 类型系统是由XMLSchema表示的吗?CLS是XMLSchema表示的吗? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
不清楚 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6) 从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7) 调用Assembly.Load算静态引用还是动态引用? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
动态 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
8) 何时使用Assembly.LoadFrom?何时使用Assembly.LoadFile? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
呵呵,这个比较有意思,相比LoadFile,LoadFrom则显得不地道,因为它娶媳妇的时候,是让人家穿上嫁妆,坐上马车,还得带着人家的妹妹来,:)用它加载的是程序集,这就要求同时将此程序集所依赖的程序集加载进来。而LoadFile就地道的多,它是加载程序集文件的内容,只将传入参数的文件加载,不考虑程序集依赖,但如果有相同实现,但位置不同的文件用LoadFrom是不能同时加载进来的,而LoadFile却可以。由于LoadFile加载的是文件,所以调用它之后,可能因为缺少必要的依赖造成无法被执行。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
9) 什么叫Assembly Qualified Name?它是一个文件名吗?它有什么不同? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
它不是一个文件名,相比文件名,Assembly Qualified Name(程序集限定名称),更能确定一个程序集,它包含文件名,但同时包含版本,公钥,和区域。因为同样一个名称的文件可能有不同的版本和区域,此时单独靠文件名称,可能会造成不能确定程序集的正确性。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
10) Assembly.Load("foo.dll"); 这句话是否正确? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll"); (多谢 Tristan(Guozhijian)的提示更正) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
11) 做强签名的assembly与不做强签名的assembly有什么不同? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
强签名的程序集可以做成com,而不做强签名的就不行,同样强签名程序集可以安装到GAC中,而不做强签名的确不能。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
12) DateTime是否可以为null? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
13) 什么叫JIT?什么是NGEN?它们分别有什么限制和好处? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Just In Time 及时编译,它是在程序第一次运行的时候才进行编译,而NGEN是所谓的pre-jit,就是说在运行前事先就将生成程序集的本机镜像,并保存到全局缓存中,适用NGEN可以提高程序集的加载和执行速度,因为它可以从本机映像中还原数代码和数据结构,而不必像jit那样动态生成它们。感觉和缓存的道理大同小异。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
14) Finalize()和Dispose()之间的区别? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Finalize()用于隐式释放资源,Dispose()用于显示释放资源 (Finalize()的确相当于C++中的析构函数(多谢Jeffrey Zhao提示更正) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
15) using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。不明白什么是确定性终结 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
16) tasklist /m "mscor*" 这句命令是干嘛的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
列出所有使用了以" mscor"作为开头的dll或者exe的进程和模块信息 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
17) in-proc和out-of-proc的区别 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
in-proc是进程内,进程内能共享代码和数据块,out-of-proc是进程外,进程外的互操作需要用进程间通讯来实现。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
18) .NET里的哪一项技术能够实现out-of-proc通讯? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
.Net Remoting技术或者WCF技术 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
19、当你在ASP.NET中运行一个组件时,它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Xp : aspnet_Wp.exe Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Windows 2000 : aspnet_Wp.exe (多谢 Tristan提示更正) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Windows 2003 : w3wp.exeRƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
C: Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
1) DateTime.Parse(myString); 这行代码有什么问题? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
有问题,当myString不能满足时间格式要求的时候,会引发异常,建议使用DateTime.TryParse() Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
2) PDB是什么东西? 在调试中它应该放在哪里? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
3) 什么叫圈复杂度(cyclomatic complexity)?为什么它很重要? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
不知道,望指教 ? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
4) 写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查", Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
lock的使用 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public void LockTest() Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Object lockObj = new Object(); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
lock (lockObj) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
// Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
5) 什么叫FullTrust?放入GAC的assembly是否是FullTrust的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
FullTrust完全信任。放入GAC中的Assembly是否FullTrust我的理解不是。我理解FullTrust是可以通过代码设定的 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
6) 代码加上需要安全权限的特性有什么好处? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
可以更加灵活的设置对代码的访问权限,实现代码级保护。?这点不是特清楚,有明白的给讲解下 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
7) gacutil /l ¦ find /i "Corillian" 这句命令的作用是什么? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
全局程序集缓存中如果有Corillian就更新该程序集,没有就安装 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
8) sn -t foo.dll 这句命令是干嘛的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
显示程序集foo.dll的公钥标记 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
9) DCOM需要防火墙打开哪些端口?端口135是干嘛用的? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下,DCOM不能穿越防火墙。因为根本不晓得开哪个端口。但有解决办法可以使DCOM分配的端口号固定,有关内容我在http://www.cnblogs.com/jillzhang/archive/2008/02/20/1075057.html 有过一些描述。135是远程过程调用(RPC)的默认端口 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
10)对比OOP和SOA,它们的目的分别是什么? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态 。而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,当然其组件化思想是继承和发扬了OOP的优点。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
11) XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限. Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
12)为什么不提倡catch(Exception)? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
原因可能有两点:1)try..catch在出现异常的时候影响性能 2)应该捕获更具体得异常,比如IOExeception,OutOfMemoryException等 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
13)Debug.Write和Trace.Write有什么不同?何时应该使用哪一个? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
14)Debug Build和Release Build的区别,是否会有明显的速度变化?请说明理由。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
15)JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
16)对比抽象基类和接口的使用 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
抽象类能有具体实现,而接口只定义行为规范,不能有具体实现。一个类只能继承一个父类,但能实现多个接口。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
17)a.Equals(b)和a == b一样吗? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
不一样。a.Equals(b)表示a与b一致, a==b表示a与b的值相等 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
18)在对象比较中,对象一致和对象相等分别是指什么? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
19)在.NET中如何实现深拷贝(deep copy)? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
实现IClonable接口 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
20)请解释一下IClonable Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone(). Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
深度复制(Deep Copy)与浅表复制(Shadow Copy)的比较 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public class Name Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public string FirstName; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public string LastName; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public class Person:ICloneable Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public Name PersonName; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public string Email; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
/**//// <summary> Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
/// Deep Copy的例子 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
/// </summary> Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
/// <returns> </returns> Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public Object Clone() Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Person p = new Person(); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.Email = this.Email; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.PersonName = new Name(); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.PersonName.FirstName = this.PersonName.FirstName; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.PersonName.LastName = this.PersonName.LastName; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
return p; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public void ChangLastName(string lastName) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
this.PersonName.LastName = lastName; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public static void Main() Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Person p = new Person(); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.PersonName = new Name(); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.PersonName.LastName = "jill"; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.PersonName.FirstName = "zhang"; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
p.Email = "jillzhang@126.com"; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Person sameNamePerson = p.Clone() as Person; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
sameNamePerson.ChangLastName("clr_"); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Console.WriteLine(p.PersonName.LastName); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Console.WriteLine(sameNamePerson.PersonName.LastName); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Person samePerson = p.MemberwiseClone() as Person; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
samePerson.ChangLastName("Shadow"); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Console.WriteLine(p.PersonName.LastName); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Console.WriteLine(sameNamePerson.PersonName.LastName); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Console.Read(); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
21)什么叫装箱? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
装箱(boxing)是将值类型的数据转化成引用类型,int i=3; object o = i ;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如int j = (int)o;属于拆箱 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
22)string是值类型还是引用类型? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
引用类型 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
23)XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
24)为什么不应该在.NET中使用out参数?它究竟好不好? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
我挺喜欢用out参数的,特别是当函数需要有多于1个返回的时候,我比较愿意用out,至于它好不好没研究过 ? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
25)特性能够放到某个方法的参数上?如果可以,这有什么用? Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
可以,作用可以对参数有进一步限定,比如输入参数为int类型,可以通过允许AttributeTargets=ParameterInfo的Attribute自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便抱错。 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
对方法的参数设置Attribute的例子 Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
[AttributeUsage(AttributeTargets.Parameter)] Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public class ParameterAtt : Attribute Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public int Min = 100; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public class AttributeTest Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
public void TestMethod([ParameterAtt(Min = 100)] int par1) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
ParameterInfo para = MethodInfo.GetCurrentMethod().GetParameters()[0]; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
ParameterAtt att = ParameterAtt.GetCustomAttribute(para, typeof(ParameterAtt)) as ParameterAtt; Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
if (att.Min > par1) Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
{ Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
throw new Exception("要求para1最小为" + att.Min); Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
} Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì
}Rƒÿ-f¿Íbbs.51aspx.comA;òjðôŒ¸Ì