杰出的.NET开发人员应该知道的事情(更多NET面试问题)

[原文发表地址] What Great .NET Developers Ought To Know (More .NET Interview Questions)

[ 原文发表时间 ] 2005-2-21 19:56

之前我在帖子中列出来了一系列关于ASP.NET的面试问题. 传统的智慧被拆分了,半数人说我发疯了,这是 一系列琐事的列表。其他的人一般说“太棒了,我可能会查找一些。”对我来说,这 才是我希望的回应。

当然我并不是想把所有.NET软件开发的问题归结于几个“琐碎”的问题。相反地我是在努力让人们去思考更多。我相信真正优秀的ASP.NET 开发人员远远不只在于将控件拖动到设计器上,然后期待这就是最好的了。一个好的赛车手清楚地了解他的车所能做的以及不能做的。

因此,以下是另外一个清单,以供参考(扩展过的清单)。这是我在上周从博伊西飞往波特兰的航班上写的。我曾经考虑过,我的清单上包括一些不符常理的琐碎问题,我努力把它们组织成不同的部分。如果你从来没有接触ASP.NET,你显然就不会知道ASP.NET 的各个部分。如果你是一名独立的顾问,你可能从来都没有遇到过这些概念。然而这个列表上的每个问题在我过去的四年里遇到过不只一次。所以是否透彻地知道这些问题并不能说明你是一名优秀的或者差的开发人员。但是当出现问题时,它可以节约你的时间。

杰出的 .NET开发人员应该知道的事情

面向编写代码的人员

· 描述线程和进程之间的区别

· 什么是Windows Service?其生命周期与"标准"的 exe 文件有何区别?

· 可以解决 Windows 上任何单一进程的最大内存量是多少?它与系统最大虚拟内存有区别吗?这会如何影响系统的设计?

· EXE 文件和 DLL文件之间的区别是什么?

· 强类型与弱类型的区别是什么?哪一种更适用?为什么?

· Corillian 的产品是一个"组件容器"。列出至少3个Windows Server Family附带的组件容器。

· 什么是PID?它在进行系统故障排除时起到了什么作用?

· 在单个TCP/IP 端口下可以监测多少个进程?

· 什么是GAC?它可以解决什么问题?

面向中级NET开发人员

· 描述面向接口、 面向对象、面向方面编程之间的区别。

· 描述什么是接口及其与类的区别

· 什么是映射?

· 使用 ASMX 的 XML Web 服务同使用 SOAP的NET 远程连接之间的区别是什么?

· Xml架构和CLS同构代表类型系统吗?

· 从概念上讲,早期绑定和后期绑定之间的区别是什么?

· 使用 Assembly.Load 是静态引用还是动态引用?

· 何时使用 Assembly.LoadFrom 或 Assembly.LoadFile 是适当的?

· 组装限定的名称是什么?它是一个文件名吗?它同文件名有何不同?

· 这是有效的吗?Assembly.Load("foo.dll");

· 具有较强名称的程序集与一个不是强名称的程序集有何不同?

· DateTimes 可以为空值吗?

· 什么是JIT以及NGEN?它们的局限性和优点是什么?

· 在.NET CLR中垃圾回收器是如何管理对象的生存期的?什么是不确定的终止?

· Finalize() 和 dispose () 之间的区别是什么?

· Using() 模式有什么用处?什么是Idisposable?它是如何支持确定终止的?

· 这个命令行是用来做什么的?tasklist /m "mscor*"

· in-proc 和out-of-proc的差别是什么?

· 在.NET中什么技术允许 out-of-proc 通信?

· 当你运行 ASP.NET 内的某个组件时, 它在Windows XP,Windows 2000以及 Windows 2003上运行的分别是哪个进程?

面向高级开发人员 / 构造师

· 这一行有什么问题?DateTime.Parse(myString);

· 什么是PDBs?调试工作时它们应该被放在何处?

· 什么是圈复杂度?为什么它很重要?

· 编写一段标准 lock() 再加上"双重检查"来在变量访问的周围创建临界区。

· 什么是FullTrust?GAC'ed 程序集有 FullTrust 吗?

· 如果你定义你的代码属性,要求它具有特定安全允许,这样对于你的代码有什么好处呢?

· 这是做什么的?gacutil /l | find /i "Corillian"

· 这是做什么的?sn -t foo.dll

· 在防火墙里,必须通过哪个端口打开DCOM?

端口135的功能是什么?

· 比较OOP 和 SOA,它们的原则分别是什么?

· XmlSerializer是如何运行的?使用它的进程需要什么样的 ACL 权限?

· 为什么捕捉(异常)总是不好的事情?

· Debug.Write 和 Trace.Write 之间的区别是什么?何时该使用它们?

· 调试和发布版本之间的区别是什么?它们之间是否有显著的速度差异?为什么?

· JITting会出现每个程序集还是每个方法中?它是如何影响工作集的?

· 比较抽象基类与接口的差别

· 它们之间有什么区别?a.Equals(b)与a==b

· 比较而言,对象等效与对象标识的区别是什么?

· .NET中如何做深层拷贝

· 说说你对Iclonable的看法。

· 什么是装箱?

· 字符串是值类型还是引用类型?

· XmlSerializer使用的"PropertySpecified"模式有何意义?它可以解决什么问题?

· 为什么 在.NET中使用out 参数是一个坏主意?它们确实是吗?

· 属性可以放在方法中的特定字段上吗?这样做有什么用?

面向C# 组件开发人员

· 并列使用新的覆盖,什么是隐藏?

· 说明如何使用虚拟、 密封、 覆盖和抽象

· 解释此字符串中的每个组件的使用及其重要性:Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d

· 说明public, protected, private 和internal之间的差别

· 通过何种机制 使NUnit知道用什么方法来测试?

· catch(Exception e){throw e;} 和catch(Exception e){throw;}有什么区别?

· typeof(foo) 与 myFoo.GetType()之间的区别是什么?

· 解释第一个构造函数发生的事情:public class c{ public c(string a) : this() {;}; public c() {;} },这个构造是有用的吗?

· 这是什么?它可以在静态方法中使用吗?

面向ASP.NET(UI) 开发人员

· 描述如何 让基于浏览器的表单变成一个像 Button1_OnClick 的服务器端事件。

· 什么是PostBack?

· 什么是ViewState?如何编码?它被加密了吗?谁可以使用它?

· <machinekey>元素是什么?这两种ASP.NET技术是用来做什么的?

· 在ASP.NET 1.1中哪三个会话状态提供程序是可用的?它们的优缺点分别是什么?

· 什么是Web Gardening?如何使用它来设计?

· 给你一个ASP.NET应用程序,在单处理器盒子上有多少应用程序对象?双个上呢?允许Web Gardening的双个上呢?如何使用它来设计?

· 在ASP.NET中,所有线程请求都被拒绝了吗?每个 HttpRequest 都会有它自己的线程吗?在ASP.NET中应该使用线程本地存储吗?

· 在ASP.NET中,[ThreadStatic]属性有用吗?有副作用吗?它是好还是坏?

· 举例说明,如何使用 HttpHandler简化现有的设计—在aspx页面查看图像。

· HttpModule属于哪一种事件?它们对执行有什么影响?在不重新编译ASP.NET应用程序的条件下,可以做些什么?

· 描述出呈现任意终结点(URL)的方式以及将请求发送到该终结点和ASP.NET的路线

· 解释 cookie 的工作。举出Cookie 滥用的一个例子。

· 解释 HttpRequest.ValidateInput() 的重要性

· 在HTTP Headers下哪种数据通过了?

· 同时使用HTTP动词--GET 和 POST,什么是HEAD?

· 列出至少6个HTTP状态代码,以及它们对所请求的客户端表达的意思。

· if-not-modified-since 是如何工作的?它如何以编程方式与 ASP.NET实现?解释<@OutputCache%>以及VaryByParam, VaryByHeader的用法。

· VaryByCustom是如何运行的?

· 如何实现ASP.NET HTML输出缓存?缓存输出的页面版本是通过设置q= except where q=5生成的。(https://localhost/page.aspx?q=5

面向使用XML的开发人员

· XML 命名空间的目的是什么?

· 何时适合使用 DOM?何时不适合?它们对大小有限制吗?

· 什么是WS-I基本概要?它为什么很重要?

· 使用默认的命名空间和限定 (前缀) 命名空间,编写一小段XML文档,文档要包括来自这两个命名空间的元素。

· 元素和属性之间的根本区别是什么?

· 标准格式的 XML 和有效的 XML 之间的区别是什么?

· 使用.NET时,你将如何验证XML?

· myXmlDocument.SelectNodes("//mynode");为什么它总是差的方法?什么时候它是好的方法?

· 描述拉式解析器 (XmlReader) 和事件读者 (Sax) 之间的区别。

· XPathDocument 和 XmlDocument 之间的区别是什么?描述一个在另外一个上使用的情况。

· XML"片段" 和 XML"文档"之间的区别是什么?

· XML中“the canonical”形式意味着什么?

· 为什么XML InfoSet 规格不同于Xml DOM? InfoSet可以解决哪些问题?

· 比较DTDs 与 XSDs。它们的相似点及不同点是什么?哪一种更适用?为什么?

· System.Xml支持DTDs吗?它是如何支持的?

· 任何XML架构都可以由对象图表表示出来吗?反之亦然吗?