.NET面试题 – 组件开发人员 & XML开发人员

C#组件开发人员

  1. 什么时候使用override?什么时候使用new? 什么叫shadowing?

    重写父类的方法的时候用override以实现多态,当你想屏蔽父类成员的时候使用new,shadowing基本就是new与override区别等一些方面的问题,个人认为弄清override与new就没有必要特意考虑shadowing。

  2. 解释virtual、sealed、override和abstract的区别?

    virtual是声明虚方法的关键字,说明该方法可以被重写,sealed说明该类不可被继承,override重写基类的方法,abstract表明一个类是抽象类或者一个方法是抽象方法,抽象方法不提供实现,由子类中重写这个抽象方法的方法实现,抽象类不可实例化。

  3. Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d 解释这个字符串每个部分的重要性和作用

    程序集的名字、版本(主版本、次版本、内部版本号、修订号)、Culture(文化)如zh-CN,公钥(缩略码),这些是强名程序集的标志。

  4. 解释public、protected、private和internal的区别。

    标记public后可被在类的内部或外部访问,protected只能被其自身内部或其子类访问,private只能在其内部访问,internal只能在相同的程序集中被访问。

  5. 使用Primary Interop Assembly(PIA)有什么好处?

    PIA是官方发布并经过Sign,可以在不同程序中共享。PIA可能经过某种改动使其比一般Tlbimp生成的Interop DLL要容易使用一些,比如提供一些封装函数。

  6. NUnit是通过什么机制获知需要测试哪些方法的?

    反射,为测试方法加上[TestMethodAttribute]。

  7. catch(Exception e){throw e;}和catch(Exception e){throw;}的区别

    将发生的异常对象抛出,另一个只是抛出异常,并没有抛出原异常对象

  8. typeof(foo)和myFoo.GetType()的区别?

    typeof()为操作符,其操作数为类型,而不能是类的实例。GetType()方法是类型的实例调用的,用于在运行时获得对象的类型。

  9.  

    1 public class c 
    2 { 
    3     public c(string a) : this() {} 
    4     public c() {} 
    5 } 

    解释第一个构造函数中发生了什么?这个构造函数有什么用?

    解答:第一个构造函数调用了第二个构造函数,这个构造函数构造了一个c对象的实例。其接受一个string类型的参数。

  10. this是干嘛用的?能够用在static方法中?

    this表示通过当前实例访问一个对象,不能用于static中。

 

XML开发人员

1. XML命名空间的作用?

    当XML文档较为复杂或是需要从别的地方取得内容时,一个文档中有可能会需要不止一个词汇,这样就会产生名称相同而含义不同的元素出现在不同词汇中的情况。命名空间可以指明哪个元素属于哪个词汇。它可以为每个词汇指定唯一的前缀进行识别,再将该前缀应用于XML文档中的元素上。

2. 何时适合使用DOM?何时不适合?有没有尺寸限度?

    等待高手将答案赋予评论中。。致谢!

3. 什么是WS-I基本配置?它重要在哪里?

    WS-I全称为Web服务互操作性组。WS-I 基本配置文件规范 1.1 版是众多供应商为加快真正可互操作 Web 服务的部署而进行的一次尝试,此规范消除了以前规范中的多义性,明确了创建符合规范的 Web 服务的限定,同时从大量可能的设置中选择了一组 Web 服务设置。(源自MSDN)

4. 写一个小XML文档,其中使用的是默认的命名空间,以及一个合法的(前缀)命名空间,其中要有分别属于这两个命名空间的元素。     

1 <?xml version="1.0" encoding="UTF-8"?>
2 <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
3     <Folder>
4         <name>临时位置</name>
5     </Folder>
6     <atom:Document>
7         <message></message>
8     </atom:Document>
9 </kml>

直接上一段修改过的KML。

5. 元素和特性的基本区别在哪里?

    元素是xml树型结构的节点,其必须成对出现。属性位于一个元素当中。

6. 格式完好的XML和有效的XML有什么区别?

    有效的XML文件是指达到一个xml的最低标准,比如标签需匹配等,如果达不到这个标准则不会被识别为xml文件。有效的xml是指经过DTD或者XSD文件验证的。

7. .NET中如何验证XML?

    这个直接参见微软官方网站的说明。http://support.microsoft.com/kb/307379/zh-cn

8. myXmlDocument.SelectNodes("//mynode"); 为什么这句代码不好?什么时候它是好的?

    如果单纯选择一个名为mynode的节点,这种做法效率不高。只有当要获取名为mynode的节点的集合时可以使用这个语句。

9. 拉式解析(XmlReader)与事件读取器(Sax)的区别

    与 XML 的简单 API (SAX) 读取器类似, XmlReader 是一个只进、只读的游标。它提供了对输入的快速和非缓存的流式访问。它可以读取流或文档。它使用户可以提取数据,并跳过对应用程序没有意义的记录。较大的差异在于 SAX 模型是一个"推送"模型,其中分析器将事件推到应用程序,在每次读取新节点时通知应用程序,而使用 XmlReader 的应用程序可以随意从读取器提取节点。(源自MSDN)

10. XPathDocument和XmlDocument的区别? 在何种情况下应该用哪一个?

    XPathDocument 类使用 XPath 数据模型提供 XML 文档在内存中的快速只读表示形式。XmlDocument 类是实现 W3C 文档对象模型 (DOM) 级别 1 核心和核心 DOM 级别 2 的 XML 文档在内存中的可编辑表示形式。所以区别就在一个只读。

11. "XML片断"与"XML文档"有什么区别

    首先比较重要的一点,XML文档需要有"<?xml version="1.0" encoding="UTF-8"?>"这样的声明。而XML片段不强制。另外貌似XML可以有多个根节点(而XML文档只能有一个根节点)

12. 什么叫格式规范的XML?

类似6题中的解释

13. XML InfoSet规范与Xml DOM有什么不同? InfoSet是要解决什么问题?

    XML 信息集(XML Information Set, Infoset)允许您将一份 XML 文档描述为一系列具有特定属性的对象。而DOM只表示出一个层次关系。所以InfoSet用来更好的用xml表示对象。

14. 比较DTD和XSD,它们的相似点与区别分别是什么?哪个更好些?为什么?

从模式的描述语言来说,XML Schema和XML DTD都属于语法模式。白话一点,就是都用来验证xml的格式。但XML Schema的格式与XML DTD的格式有着非常明显的区别,XML Schema事实上也是XML的一种应用,也就是说XML Schema的格式与XML的格式是完全相同的,而作为SGML DTD的一个子集,XML DTD具有着与XML格式完全不同的格式。所以基于XML格式的XML Schema更具优势。(参考IBM开发者网络http://www.ibm.com/developerworks/cn/xml/x-sd/index.html

15. System.Xml支持DTD吗?如果支持,如何使用?

    第7个问题中的网址解释了这个问题。

16. XML Schema能够表示为对象图?对象图能够表示为XML Schema?

    肯定可以。Vs内置此工具。

posted @ 2009-05-28 23:49  hystar  阅读(2708)  评论(2编辑  收藏  举报