.NET牛人应该知道些什么(2):中级.NET开发人员

本系列共六篇:

  (1):所有.NET程序员必知的

  (2):中级.NET开发人员

  (3):高级开发人员/架构师

  (4):C# 组件开发人员

  (5):ASP.NET (UI)开发人员

  (6):XML开发人员

 

1.阐述面向接口、面向对象、面向方面编程的区别

   答:面向对象即将现实世界的事物看作对象,以继承的方式表达对象间的层次关系,以封装的方式来抽象对象的状态和行为,以多态的方式来实现对象的多种形态。

  面向接口编程是面向对象编程的一个子集,因为面向接口,首先就是面向对象。面向接口的好处是降低耦合度。

  面向方面编程(Aspect-Oriented Programming,简写为AOP),它允许开发者动态地修改静态的OO模型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在其生命周期中不断改变自身,应用程序也可以在发展中拥有新的功能。详细AOP知识请参考张逸的blog:http://wayfarer.cnblogs.com/articles/241012.html

 

2.什么是Interface?它和Class有什么区别?

  答:1>接口不能实例化;

    2>接口中的方法没有方法体{};

    3>继承接口的类一定要实现接口中定义的方法;

    4>类可以实例化,可以定义自己的字段,属性,方法等等;

    5>类可以继承多个接口,但只能继承一个类!

 

3.什么是反射?

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

 

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

  答:SOAP是简单对象访问协议,Web服务正是通过WSDL来约定服务器和客户端基于xml的SOAP来通讯,而无论客户端和服务器不需要知道对方的平台、编程语言等信息。

  .NET Remoting本质是为了交互更为复杂的对象,甚至需要管理远程对象的生命周期,所以客户端必须了解服务器对象的详细信息,虽然.NET Remoting支持使用SOAP,但对于客户端来说还是必须了解服务器对象的详细信息。

  另外,Web Service能用于不同平台,不同语言,Remoting只适用于.Net。效率上Remoting高于Xml Web Service。

 

5.从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?

  答:前期绑定是在编译的时候就确定了要绑定的数据,而后期绑定是在运行的时候才填充数据。所以前期绑定如果失败,会在编译时报编译错误,而后期绑定失败只有在运行时的时候才发生

 

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

  答:动态引用,因为Assembly.Load属性反射,反射即为动态引用。

 

7.何时使用Assembly.LoadFrom?何时使用Assembly.LoadFile?

  答:用LoadFrom加载的是程序集,这就要求同时将此程序集所依赖的程序集加载进来,但位置不同的文件用LoadFrom是不能同时加载进来的(而LoadFile可以)。

  LoadFile是加载程序集文件的内容,只将传入参数的文件加载,不考虑程序集依赖。由于LoadFile加载的是文件,所以调用它之后,可能因为缺少必要的依赖造成无法被执行。


8.什么叫Assembly Quaified Name?它是一个文件名吗?它有什么区别?

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


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

  答:错误,正确的应该是Assembly.Load("foo")或Assembly.Load ("foo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3"); 或者Assembly.LoadFrom("foo.dll");

 

10.做强签名的assembly和不做强签名的assembly有什么区别?

  答:强签名的程序集可以确认assembly name是唯一的(因为使用了public key token)。

    强签名的程序集可以做成com。

    强签名程序集可以安装到GAC中。


11.DateTime是否可以为null?

  答:不能,因为其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才能被赋值null。


12.什么叫JIT?什么是NGEN?它们分别有什么限制和好处?

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

 

13.Finalize()和Dispose()的间的区别?

  答:Finalize自动释放资源,Dispose()用于手动释放资源。

 

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

  答:有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。简单的说调用IDisposable的Dispose方法能移除这个对象所使用资源的引用,从而达到让垃圾收集器回收资源的目的。

 

15.tasklist /m "mscor*" 这句命令是干嘛的?

  答:列出所有使用了以" mscor"作为开头的dll或者exe的进程和模块信息。


16.in-proc和out-of-proc的区别

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


17.NET里的哪30967yi.gif项技术能够实现out-of-proc通讯?

  答:.Net Remoting技术或者WCF技术

 

18.当你在ASP.NET中运行一个组件时30967dou.gif它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面? 

  答:Xp : aspnet_Wp.exe

    Windows 2000 : inetinfo.exe

    Windows 2003 : w3wp.exe

转载于:https://www.cnblogs.com/Deper/articles/1733424.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值