1.Thread和Process之间有什么区别?.NET新引入了Application Domain的概念,这样他们三个之间有什么区别?引入了Application Domain会带来一些潜在的问题么? 
2.Windows Service与普通的EXE在执行过程中有什么区别? 
3.一个进程可以访问的Windows地址空间有多大?等于系统的虚拟内存大小么?这两方面将对系统的设计产生什么样的影响? 
4.EXE和DLL之间的区别是什么?在系统设计中应该如何选择使用它们? 
5.普通的EXE与.NET EXE的执行过程有什么不同? 
6.什么是弱类型,什么是强类型?在系统设计中应该首先考虑使用哪种类型? 
7.PDB文件是作什么用的?里面包含了什么信息? 
8.Cycloramic Complexity是什么?为什么它很重要? 
9.为创建一个critical section以访问某个变量书写一个标准的lock() 并加上double check。 
10.为某个对象实现标准的Dispose模式。 
11.什么是FullTrust? 存在于GAC中的 assembly 拥有FullTrust么? 
12.下面这个命令是做什么的?gacutil /l | find /i “system” 
13.下面这个命令是作什么的? sn -t something.dll 
14.跨防火墙的 DCOM必须打开哪个端口?端口135是用来做什么的? 
15.有什么办法可以与现有unmanaged code集成?在集成的时候应该考虑什么问题? 
16.简要解释一下OOP与SOA都是用来作什么的? 
17.XmlSerializer是如何工作的?进程运行XmlSerializer时候需要什么样的ACL权限? 
18.在系统设计时,何时应该使用try catch?何时需要避免使用? 
19.Debug.Write()和Trace.Write()之间有什么区别?二者分别应该用于何处? 
20.Debug Build和Release Build有什么区别?在执行效率上有什么明显的区别么? 
21.JIT是针对Assembly还是Method发生的?解释一下为什么.NET的设计者要这样做? 
22.简要描述一下GC的执行过程。 
23.应该如何选择使用abstract class还是interface? 
24.在设计一个自定义类型时应如何选择使用Value Type还是Reference Type? 
25.对于Value Type和Reference Type,a.Equals(b)的默认实现方式有什么不同? 
26..NET中为什么不提供默认的deep copy?如果需要,要如何实现deep copy? 
27.相对于.NET 1.1,.NET2.0为了避免过度的boxing/unboxing造成的系统开销提供了哪些支持? 
28.String是Value Type还是Reference Type?为什么.NET中的String对象被设置成immutable? 
把自己能回答的问题加上题号写下来吧。

解决方案 »

  1.   

    呵呵。网上搜吧,做Win程序的知识
      

  2.   

    没有一道题是跟C#有直接关系的...还有几个题跟.NET都没什么关系...
      

  3.   

    题目主要是windows和.net framework的等答案
      

  4.   

    1  Thread和Process之间有什么区别?.NET新引入了Application Domain的概念,这样他们三个之间有什么区别?引入了Application Domain会带来一些潜在的问题么? 
    进程可以理解为一个容器,提供进程空间,线程所使用的内存都在进程空间中分配。每个线程有自己的堆栈。APPDomain相当于一个逻辑概念,相当于在进程中逻辑的划分了一些区域,所以线程是可以跨域访问另外的线程。2  Windows Service与普通的EXE在执行过程中有什么区别? 
    一般前者无界面,有windows的Service服务器负责维护启动和关闭。Exe由用户维护且一般有界面。3  一个进程可以访问的Windows地址空间有多大?等于系统的虚拟内存大小么?这两方面将对系统的设计产生什么样的影响? 
    a.跟数据总线有关系。一般32位操作系统,寻址空间可以达到4GB,所以一个进程可以访问的地址也为4GB(不过实际上,有2GB是留给操作系统使用的,4M是不可访问的,剩下的空间才供进程使用)。 
    b.不等于虚拟内存。
    c.寻址空间和数据总线的宽度有关系。虚拟内存会消耗CPU处理时间。因为需要做内外存的转换工作。4  EXE和DLL之间的区别是什么?在系统设计中应该如何选择使用它们? 
    a..Exe有自己的进程空间,dll没有,dll只能被引用后,和exe共享进程空间才能被调用和运行(其实还有rundll32命令可以启动dll,该系统命令本质上就是为其提供进程空间)。
    b.dll也叫动态链接库,可以将反复使用的共有代码和资源放在动态链接库中,这样在内存中只会有一个副本,节约内存空间(不同的进程根据不同的重定位信息可以定位到制定的dll中)。5  普通的EXE与.NET EXE的执行过程有什么不同? 
    普通exe可以直接在操作系统上执行,但是.net exe需要jit的及时编译,并在托管环境下(即CLR的控制下)运行6  什么是弱类型,什么是强类型?在系统设计中应该首先考虑使用哪种类型? 
    弱类型在一定程度上允许不同类型的数据进行相互操作和运算,但是强类型不允许,因为强类型会做类型检查工作。7  PDB文件是作什么用的?里面包含了什么信息? 
    程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。8  Cyclomatic Complexity是什么?为什么它很重要? 
    圈复杂度,用于衡量程序的分支数量。一个正常的方法,分值应该控制在5,6个,如果分支数太大,则最好进行方法的分解,避免badsmell.9  为创建一个critical section以访问某个变量书写一个标准的lock() 并加上double check。 
    If(m_Instance!=null)
    {
           lock(this)
           {
                  if(m_Instance!=null))
                  {
                         //do something
                  }
           }
    }10  为某个对象实现标准的Dispose模式。 
    Class MyObject:Idisposable
    {
           public void Dispose()
           {
                  //do something
           }
    }
    就是实现Idisposable接口,进而实现自定的析构11  什么是FullTrust? 存在于GAC中的 assembly 拥有FullTrust么? 
         不知道12  下面这个命令是做什么的?gacutil /l | find /i “system” 
    全局程序集缓存工具使您可以查看和操作全局程序集缓存和下载缓存的内容。13  下面这个命令是作什么的? sn -t something.dll 
    Sn.exe 提供用于密钥管理、签名生成和签名验证的选项。14  跨防火墙的 DCOM必须打开哪个端口?端口135是用来做什么的? 15  有什么办法可以与现有unmanaged code集成?在集成的时候应该考虑什么问题? 16  简要解释一下OOP与SOA都是用来作什么的? 
    OOP是一种程序编程架构,包含几个特征:组件,封装,继承,抽象,多态。
    SOA叫面向服务架构。17  XmlSerializer是如何工作的?进程运行XmlSerializer时候需要什么样的ACL权限? 
    ACL访问控制列表。18  在系统设计时,何时应该使用try catch?何时需要避免使用? 19  Debug.Write()和Trace.Write()之间有什么区别?二者分别应该用于何处? 
    都是断言。Debug.Write()为调试版本,在发行版本里面不会被执行,而Trace.Write在发行版本中会被执行。20  Debug Build和Release Build有什么区别?在执行效率上有什么明显的区别么? 
    Debug build的版本包含了一些调试信息,执行效率会低一些。21  JIT是针对Assembly还是Method发生的?解释一下为什么.NET的设计者要这样做? 22  简要描述一下GC的执行过程。 
    当内存减少到某个程度之后,CLR启动垃圾回收,将那些不被引用的对象回收并释放所占用的内存。23  应该如何选择使用abstract class还是interface? 
    抽象类可以有实现,接口无实现。接口可以多继承,抽象类不行。24  在设计一个自定义类型时应如何选择使用Value Type还是Reference Type? 
    其实要描述的就是引用类型和值类型的区别。可以从内存分布和访问效率两方面谈。25  对于Value Type和Reference Type,a.Equals(b)的默认实现方式有什么不同? 
    值类型默认就是指是否相等。引用类型就是比较两个引用是否指向同一个对象。26  .NET中为什么不提供默认的deep copy?如果需要,要如何实现deep copy? 
    因为深度拷贝涉及到拷贝的级数问题,就是需要深度拷贝到什么层次。在C#中,不可以直接覆写MemberwiseClone方法,可以实现Iclone接口来实现自定义的深度拷贝。27  相对于.NET 1.1,.NET2.0为了避免过度的boxing/unboxing造成的系统开销提供了哪些支持? 
    范型。28  String是Value Type还是Reference Type?为什么.NET中的String对象被设置成immutable? 
    是引用类型。因为字符串对象在操作系统中出现的频率很高,如果为每一个string都分配一个独立的内存,将会是很大的系统开销。所以string 设置为不可变的,就是一种内存驻留技术,本质上就是让同样的字符串都访问同一块内存。比如:s1=”a”,s2=”b”,则s1和s2其实都是指向同一块为”a”的内存;如果现在修改s1=”b”,则s1将不再指向”a”,而是开辟另一块为”b”的内存空间,使s1指向b(其实如果有另一个s3=”b”,则s1就会和s3指向同一个”b”,此时s1不再重新开辟空间)。
      

  5.   

    都不會.枉我做了一年的winform.慚愧中.................
      

  6.   

    还好,没有问WPF和Silverligth……
      

  7.   

    7.PDB文件是作调试用的,里面包含了调试信息
      

  8.   

    都是一些做WinForm的基础题目!
      

  9.   

    2.
    3.知道一点
    4.
    5.
    6.
    16.知道一点
    18.
    20.
    21.知道一点
    25.
    26.知道怎么实现,但是为什么不提供就不知道了 
    28.前半个问题知道,为什么.NET中的String对象被设置成immutable? 不知道惨了 >_<
      

  10.   


    好多题目都是比较底层的,没四五年Windows程序开发经验怕是答不好的。为什么很多人都说烂呢?似乎CSDN上一有人发面试题,下面的人就会不分青红皂白地骂!
      

  11.   

    http://i0.sinaimg.cn/ent/pc/2008-12-07/296/U2507P28T296D6689F8931DT20081208103558.jpg晕了
      

  12.   

    [Quote=引用 4 楼 king19840811 的回复:]
    引用 3 楼 jinjazz 的回复:
    这些问题大部分和c#没什么必然关系 
     呵呵应该问精通.net
    恩 
    怎么没有答案
      

  13.   

    陈年老帖了!
    原文地址:What Great .NET Developers Ought To Know (More .NET Interview Questions)
    引用一些评论:
    Very complete list, and quite challenging !
    I would move some question into another category, though.
    For example:Into "Everyone who writes code" category:What is the difference between Dispose() and Finalize()
    What is boxing ?
    Is string a value or a reference type ?
    Explain the use of virtual, sealed, abstract, override.
    Explain the difference between public, private, protected and internal modifiers.
    What is this ? Can it be used within static methods ?Into "Mid-level developer":What does this do? gacutil /l | find /i "Corillian"
    Why is catch(Exception) almost always a bad idea?
    Explain what’s happening in the first constructor: public class c{ public c(string a) : this() {;}; public c() {;} } How is this construct useful?Into "Senior developer":
    When would using Assembly.LoadFrom or Assembly.LoadFile be appropriate?Moreover, I think some questions cannot be easily assigned to one of the developer-level categories.
    For example, you can ask:What is the difference between OOP and SOA ?
    -- or --
    Contrast the use of an abstract base class against an interface.to all kind of developers, and the answer you'll get will be very different according to the developer's knowledge.I personally think that a senior developer will prove its deep knowledge of the .NET technology if he can provide a good answer to the two questions above, rather than if he knows what sn- t foo.dll does :-)However, thanks for the good list, I'm going to study/review a few topics after I relized I could not provide a good answer to some of your questions !Claudio
      

  14.   

    [Quote=引用 80 楼 henhaohll 的回复:]
    引用 71 楼 QQ865435515 的回复:
    回复一个 以后来找答案容易 
     
    回贴只是一种美德