中级.NET开发人员

中级.NET开发人员

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"); 这句话是否正确?

错误,正确的应该是Assembly.Load("foo"); 或者Assembly.LoadFrom("foo.dll"); (多谢 Tristan(Guozhijian)的提示更正)

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()用于显示释放资源 (Finalize()的确相当于C++中的析构函数(多谢Jeffrey Zhao提示更正)

15) using() 语法有用吗?什么是IDisposable?它是如何实现确定性终结的。

有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的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 : aspnet_Wp.exe Windows 2003 : w3wp.exe

转载于:https://www.cnblogs.com/shenyunjun420/archive/2009/01/05/1369395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件开发中级编程指南 1:.NET平台及C#编程——全国信息化计算机应用技术资格认证教材之一 全国信息化计算机应用技术资格认证:(Certificaleo of Computer Application Techniaues,CCAT)项目,是为社会培养以实践能山和管理能力相结合的管理型技术人才为主要特色的,全国性的IT队证培训考试项目。经全国信息化计算机应用伎术认证办公室的授权,长沙牛耳信息技术有限公司根据多年的职业化人才培养经验,邀请国防科技大学的部分专家教授共问开发了牛耳计算机教育课程体系,并结合各位专家教授的科研方向和授课经验,精心编写了这套系列教材。 在本课程体系的开发过程中,基于“对学生负责、对家长负责、对企业负责、对社会负责”的办学理念,始终考虑—切“以就业为导向”,具有明显的特色。首先,采用项目驱动的力法,安排了大量实战项目。事实证明“项目驱动”这一实践型的教学方法对于培养学生分析问题、解决问题的能力,激发和维持学生的学习积极性等方面有其独特的优势。其次,在教学模式上,根据职业教育的特点,从专业基础课到专业方向课.每门课程理沦部分与实践部分都按l:l的比例组织教学,在各门课程教材的编写过程中已充分考虑到了这一教学特点。第三,为增强学员软件开发的实际能力,在本课程体系中专门安排了企业化实训项目,并建立标准化软件工厂作为实训场所。 基于以几个方面的考虑,本课程机体系中特别突出对学员进行以下4个方面的训练:在职业技能培养方面,通过大量的上机练习、代码阅读、代码改错、规范化检查,训练学生编写程序的规范性和熟练度;在项目经验积累方面,通过完成大量的项目案例,增加对实际软件项目开发的体验;在管理能力和团队意识力面,通过合作开发软件项目的形式,训练学员的管理能力、沟通能力和团队意识;在职业素养形成方面,开设专门的“软件职业素养(初级,中级、高级)”课程,并通过多种训练手段,特别是通过在软件工厂的“工作”,培养学生具备良好的职业习惯,实现学员“零距离”就业。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值