您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 51经典.net面试题
ASP.NET最新经典面试题(下)3)什么叫圈复杂度(cyclomaticcomplexity)?为什么它很重要?不知道,望指教?4)写一个标准的lock(),在访问变量的前后创建临界区,要有双重检查,lock的使用publicvoidLockTest(){ObjectlockObj=newObject();lock(lockObj){//}}5)什么叫FullTrust?放入GAC的assembly是否是FullTrust的?FullTrust完全信任。放入GAC中的Assembly是否FullTrust我的理解不是。我理解FullTrust是可以通过代码设定的6)代码加上需要安全权限的特性有什么好处?可以更加灵活的设置对代码的访问权限,实现代码级保护。?这点不是特清楚,有明白的给讲解下7)gacutil/l|find/iCorillian这句命令的作用是什么?全局程序集缓存中如果有Corillian就更新该程序集,没有就安装8)sn-tfoo.dll这句命令是干嘛的?显示程序集foo.dll的公钥标记9)DCOM需要防火墙打开哪些端口?端口135是干嘛用的?135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下,DCOM不能穿越防火墙。因为根本不晓得开哪个端口。但有解决办法可以使DCOM分配的端口号固定,135是远程过程调用(RPC)的默认端口10)对比OOP和SOA,它们的目的分别是什么?我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态。而SOA是一个技术框架,技术框架和编程模型应该说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序来调用,当然其组件化思想是继承和发扬了OOP的优点。13)Debug.Write和Trace.Write有什么不同?何时应该使用哪一个?Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。14)DebugBuild和ReleaseBuild的区别,是否会有明显的速度变化?请说明理由。Debug会产生pdb文件,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUGDebug.Write等,而Release则会将那些特殊标记省略15)JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响?方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么17)a.Equals(b)和a==b一样吗?不一样。a.Equals(b)表示a与b一致,a==b表示a与b的值相等18)在对象比较中,对象一致和对象相等分别是指什么?对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同19)在.NET中如何实现深拷贝(deepcopy)?实现IClonable接口20)请解释一下IClonableIClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone().深度复制(DeepCopy)与浅表复制(ShadowCopy)的比较publicclassName{publicstringFirstName;publicstringLastName;}publicclassPerson:ICloneable{publicNamePersonName;publicstringEmail;/**///////DeepCopy的例子//////publicObjectClone(){Personp=newPerson();p.Email=this.Email;p.PersonName=newName();p.PersonName.FirstName=this.PersonName.FirstName;p.PersonName.LastName=this.PersonName.LastName;returnp;}publicvoidChangLastName(stringlastName){this.PersonName.LastName=lastName;}publicstaticvoidMain(){Personp=newPerson();p.PersonName=newName();p.PersonName.LastName=jill;p.PersonName.FirstName=zhang;p.Email=jillzhang@126.com;PersonsameNamePerson=p.Clone()asPerson;sameNamePerson.ChangLastName(clr_);Console.WriteLine(p.PersonName.LastName);Console.WriteLine(sameNamePerson.PersonName.LastName);PersonsamePerson=p.MemberwiseClone()asPerson;samePerson.ChangLastName(Shadow);Console.WriteLine(p.PersonName.LastName);Console.WriteLine(sameNamePerson.PersonName.LastName);Console.Read();}}24)为什么不应该在.NET中使用out参数?它究竟好不好?我挺喜欢用out参数的,特别是当函数需要有多于1个返回的时候,我比较愿意用out,至于它好不好没研究过?25)特性能够放到某个方法的参数上?如果可以,这有什么用?可以,作用可以对参数有进一步限定,比如输入参数为int类型,可以通过允许AttributeTargets=ParameterInfo的Attribute自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便抱错。对方法的参数设置Attribute的例子[AttributeUsage(AttributeTargets.Parameter)]publicclassParameterAtt:Attribute{publicintMin=100;}publicclassAttributeTest{publicvoidTestMethod([ParameterAtt(Min=100)]intpar1){ParameterInfopara=MethodInfo.GetCurrentMethod().GetParameters()[0];ParameterAttatt=ParameterAtt.GetCustomAttribute(para,typeof(ParameterAtt))asParameterAtt;if(att.Minpar1){thrownewException(要求para1最小为+att.Min);}}}9.执行下面代码后:StringstrTemp=abcdefg某某某;IntiSystem.Text.Encoding.Default.GetBytes(strTemp).Length;Intj=strTemp.Length;问:i=(14);j=(11)i=(14);j=(11)中文两个字节12.概述.NET里对remoting和webservice两项技术的理解和实际中的应用。远程逻辑调用,remoing接口只能用在.net中13.什么是code-behind技术codebehind是指代码和用户界面分开aspxandcs9.如何给服务器端控件增加客户端脚本。答:控件的Attributes6.私有程序集与共享程序集有什么区别?一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(GlobalAssemblyCache)之中,这是一个由.NET运行时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NETFramework类。10.请解释ASP.NET中以什么方式进行数据验证Aps.net中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另还有一个集中验证信息处理控件11.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端只有通过自动传回才能实现服务端事件的机制,如果没有自动回传机制就只能调用客户端事件,而不能调用服务端事件13.请解释web.config文件中的重要节点appSettings包含自定义应用程序设置。system.web系统配置compilation动态调试编译设置customErrors自定义错误信息设置authentication身份验证,此节设置应用程序的身份验证策略。authorization授权,此节设置应用程序的授权策略.14.请解释ASP。NET中的web页面与其隐藏类之间的关系?一个ASP.NET页面一般都对应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下Codebehind=Tst1.aspx.cs表明经编译此页面时使用哪一个代码文件Inherits=T1.Tst1表用运行时使用哪一个隐藏类15.什么是viewstate,能否禁用?是否所用控件都可以禁用?Viewstate是保存状态的一种机制,EnableViewState属性设置为false即可禁用16.当发现不能读取页面上的输入的数据时很有可能是什么原因造成的?怎么解决?很有可能是在Page_Load中数据处理时没有进行Page的IsPostBack属性判断17.请解释什么是上下文对象,在什么情况下要使用上下文对象上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象16、解释一下ajax及实现原理答:Ajax的核心是JavaScript对象XmlHttpRequest,它使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户,异步请求。const和readonly有什么区别?const关键字用来声明编译时常量,readonly用来声明运行时常量。1、delegate是引用类型还是值类型?enum、int[]和string呢(难度系数40%)?答案:delegate引用类型,enum值类型,int[]引用类型,string引用类型。2、我们知道new可以调用构造函数创建一个对象,那么new还有什么别的语法吗?答案:隐藏基类相同签名方法,如果在C#2.0中则还作为泛型构造函数约束。3、base这个关键字有哪几种语法?override呢?答案:base两个语法,分别是调用基类构造函数和调用基类方法,override用于重写基类方法。4、请指出C#中是否有下列关键字?virtual、sealed、abstract、import、as、in、g
本文标题:51经典.net面试题
链接地址:https://www.777doc.com/doc-4578513 .html