百度空间 | 百度首页 
 
查看文章
 
c#面试题目(一)
2008年08月04日 星期一 下午 04:21

1.PID是什么?在做系统的故障排除时如何使用它?
PID = Process Identifier, 是一个全局唯一的用来标识进程的整数。在多任务系统中,可用来诊断系统中发生错误的进程
2.什么是强类型,什么是弱类型?哪种更好些?为什么?
弱类型语言允许将一块内存看做多种类型。比如直接将整型变量与字符变量相加。C and C++ 是静态语言,也是弱类型语言;Perl and PHP 是动态语言,但也是弱类型语言。
强类型语言在没有强制类型转化前,不允许两种不同类型的变量相互操作。Java、C# 和 Python 等都是强类型语言。
使用哪种语言还是要按需而定。编写简单小应用,使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目,使用强类型语言可能会比使用弱类型更加规范可靠。
3. EXE和DLL之间的区别是什么?
现在的Windows中,exe 和 dll 都是基于PE格式,exe 是通常的可执行文件,包含数据和代码,而 dll 是动态链接文件,也有可能是纯资源文件,只包含数据,不含程序代码。ddl 的目的之一就是提供能被许多不同的应用程序所使用的函数和资源。dll 中的函数和资源为软件开发提供了复用。它们是在运行时由磁盘物理映像载入被调用者的内存空间或共享内存空间执行。
4.Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?
Windows使用一个系统:虚拟寻址系统。该系统把程序可用的内存地址映射到硬件内存中的实际地址上,这些任务完全有Windows后台管理,其实际结果是32位处理器上的每个进程都可以使用4GB的内存------无论计算机上有多少硬盘空间(在64位处理器上这个数值会更大)。这个4GB内存实际上包含了程序的所有部分------包括可执行代码,代码加载的所有dll,以及程序运行时使用的所有变量的内容。这个4GB内存称为虚拟地址空间,或虚拟内存。
5.什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
Windows Service 是一种可随 Windows 操作系统启动而启动的,在后台运行的,通常不和用户产生交互的程序。它无法通过双击来运行,类似于 Unix 守护进程(daemon processes),当用户注销时它也不会停止。
Windows 服务由三部分组成:1.一个服务可执行文件;2.一个服务控制程序(SCP);3.服务控制管理器(SCM),负责在 HKLM\SYSTEM\CurrentControlSet\Services 下创建服务键值。用户可通过 SCP 控制服务的启动、停止、暂停等,SCP 会通过 SCM 调用服务程序。
Window 标准的exe可执行程序通常有一个用户界面,Console或GUI,通常由用户来启动或停止。

1) 阐述面向接口、面向对象、面向方面编程的区别
面 向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强调的是 本末倒置原则,也就是实现依赖于抽象,而抽象不依赖于具体实现,更具比较的应该是面向接口与面向抽象对象,我的体会是面向接口更加灵活,但实现时候,稍微 有些代码冗余,而面向抽象可以结合面向接口,先定义接口,再定义抽象类,在抽象类中处理一些公共逻辑,再实现具体实现类。面向对象是对复杂问题的分解。面 向方面的编程是一种新概念,它解决了很多面向对象无法解决的问题,比如面向对象技术只能对业务相关的代码模块化,而无法对和业务无关的代码模块化。而面向 方面正是解决这一问题的方案,它的关键思想是"将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。

2) 什么是Interface?它与Abstract Class有什么区别?
接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能继承一个父类

3) 什么是反射?
程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例

4) 使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别?

Web服务使用的消息机制,而Remoting采用的RPC. Web Service能用于不同平台,不同语言,Remoting只适用于.Net。效率上Remoting高于Xml Web Service

5) 类型系统是由XMLSchema表示的吗?CLS是XMLSchema表示的吗?
不清楚

6) 从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?
这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生

7) 调用Assembly.Load算静态引用还是动态引用?
动态

8) 何时使用Assembly.LoadFrom?何时使用Assembly.LoadFile?
呵呵,这个比较有意思,相比LoadFile,LoadFrom则显得不地道,因为它娶媳妇的时候,是让人家穿上嫁妆,坐上马车,还得带着人家的妹妹来,:)用它加载的是程序集,这就要求同时将此程序集所依赖的程序集加载进来。而LoadFile就地道的多,它是加载程序集文件的内容,只将传入参数的文件加载,不考虑程序集依赖,但如果有相同实现,但位置不同的文件用LoadFrom是不能同时加载进来的,而LoadFile却可以。由于LoadFile加载的是文件,所以调用它之后,可能因为缺少必要的依赖造成无法被执行。

9) 什么叫Assembly Qualified Name?它是一个文件名吗?它有什么不同?
它不是一个文件名,相比文件名,Assembly Qualified Name(程序集限定名称),更能确定一个程序集,它包含文件名,但同时包含版本,公钥,和区域。因为同样一个名称的文件可能有不同的版本和区域,此时单独靠文件名称,可能会造成不能确定程序集的正确性。

10) Assembly.Load("foo.dll"); 这句话是否正确?
正确

11) 做强签名的assembly与不做强签名的assembly有什么不同?
强签名的程序集可以做成com,而不做强签名的就不行,同样强签名程序集可以安装到GAC中,而不做强签名的确不能。

12) DateTime是否可以为null?
不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null

13) 什么叫JIT?什么是NGEN?它们分别有什么限制和好处?
Just In Time 及时编译,它是在程序第一次运行的时候才进行编译,而NGEN是所谓的pre-jit,就是说在运行前事先就将生成程序集的本机镜像,并保存到全局缓存中,适用NGEN可以提高程序集的加载和执行速度,因为它可以从本机映像中还原数代码和数据结构,而不必像jit那样动态生成它们。感觉和缓存的道理大同小异,也就是传说中的预编译。

14) Finalize()和Dispose()之间的区别?
Finalize()用于释放非托管资源,Dispose()用于释放托管资源

15) using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。
有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。简单的说调用IDisposable的Dispose方法能移除这个对象所使用资源的引用,从而达到让垃圾收集器回收资源的目的。

16) tasklist /m "mscor*" 这句命令是干嘛的?
列出所有使用了以" mscor"作为开头的dll或者exe的进程和模块信息

17) in-proc和out-of-proc的区别
in-proc是进程内,进程内能共享代码和数据块,out-of-proc是进程外,进程外的互操作需要用进程间通讯来实现。

18) .NET里的哪一项技术能够实现out-of-proc通讯?
.Net Remoting技术或者WCF技术

19) ASP.NET在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面?
Xp : aspnet_Wp.exe
Windows 2000 : inetinfo.exe
Windows 2003 : w3wp.exe


类别:asp.net‖c#‖vb.net | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu