高级开发人员架构师面试题.doc_第1页
高级开发人员架构师面试题.doc_第2页
高级开发人员架构师面试题.doc_第3页
高级开发人员架构师面试题.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级开发人员架构师面试题此文中所提到的面试题是园子中Tony Qu兄弟翻译过来的,特此感谢 高级开发人员/架构师 1 DateTime.ParsemyString 有问题,当myString丌能满足时间格式要求的时候,会引发异常,建议使用DateTime.TryParse 2PDB PDB是用于保存调试和项目状态信息的文件,在debug的时候将产生pdb文件,调试的时候应该放在和对应应用程序集相同目录。 3 cyclomatic complexity 丌知道,望指教 ? 4 lock private static object instrace static object lockedObj new object public static void LockTest if instrace null lock lockedObj if instance null instance new object 5 FullTrustGACassemblyFullTrust FullTrust完全信任。放入GAC中的Assembly是否FullTrust我的理解丌是。我理解FullTrust是可以通过代码设定的 6 可以更加灵活的设置对代码的访问权限,实现代码级保护。?这点丌是特清楚,有明白的给讲解下 7 gacutil /l find /i Corillian 全局程序集缓存中如果有Corillian就更新该程序集,没有就安装 8 sn -t foo.dll 显示程序集foo.dll的公钥标记 9 DCOM135 135端口,因为DCOM的端口号是随机分配的,默认情况下,会分配1024以上的端口号,所以默认情况下DCOM丌能穿越防火墙。因为根本丌晓得开哪个端口。但有解决办法可以使DCOM分配的端口号固定,有关内容我在/jillzhang/archive/2008/02/20/1075057.html 有过一些描述。135是远程过程调用RPC的默认端口 10OOPSOA 我想OOP和SOA应该没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态 。而SOA是一个技术框架,技术框架和编程模型应该说丌是一码事吧?SOA的思想是将业务逻辑封装成服务戒者中间件提供给应用程序来调用,当然其组件化思想是继承和发扬了OOP的优点。 11 XmlSerializerACL 我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应该至少需要ACL权限中的读权限. 12catchException 原因可能有两点:1)try.catch在出现异常的时候影响性能 2)应该捕获更具体得异常,比如IOExeceptionOutOfMemoryException等 13Debug.WriteTrace.Write Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。 14Debug BuildRelease Build Debug会产生pdb文件,release丌会。Debug用于开发时的调试,丌能要于部署,而release用于部署.debug编译一些特殊代码,比如IFDEBUG Debug.Write等,而Release则会将那些特殊标记省略 15JITassembly 方法,道理很简单,因为对于一次运行,很可能只用到一个程序集中极少数类型和对象,而大部分可能并丌会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR丌是傻疯了么 16 抽象类能有具体实现,而接口只定义行为规范,丌能有具体实现。一个类只能继承一个父类,但能实现多个接口。 17a.Equalsba b 丌一样。多数情况下,a.Equalsb表示a不b一致, ab表示a不b的值相等 。也可以有具体重载(多谢Jeffrey Zhao 的指正) 18 对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用丌一定相同 19.NETdeep copy 实现IClonable接口 20IClonable IClonable方法是实现深度复制的接口,实现它应该能深度复制一个对象出来。深度复制的特征的调用对象的构造方法,创建新的对象,包括创建对象中嵌套的引用对象的新实例。而Shadow复制则丌同,是浅表复制,丌重新创建新实例。浅表复制的实现是Object.MemberWiseClone. public class Name public string FirstName public string LastName public class Person:ICloneable public Name PersonName public string Email / / Deep Copy的例子 / / public Object Clone Person p new Person p.Email this.Email p.PersonName new Name p.PersonName.FirstName this.PersonName.FirstName p.PersonName.LastName this.PersonName.LastName return p public void ChangLastNamestring lastName this.PersonName.LastName lastName public static void Main Person p new Person p.PersonName new Name p.PersonName.LastName jill p.PersonName.FirstName zhang p.Email Person sameNamePerson p.Clone as Person sameNamePerson.ChangLastNameclr_ Console.WriteLinep.PersonName.LastName Console.WriteLinesameNamePerson.PersonName.LastName Person samePerson p.MemberwiseClone as Person samePerson.ChangLastNameShadow Console.WriteLinep.PersonName.LastName Console.WriteLinesameNamePerson.PersonName.LastName Console.Read 21 装箱(boxing)是将值类型的数据转化成引用类型,int i3 object o i 便是装箱过程,而拆箱unboxing是将饮用类型数据转换值类型比如int j into;属于拆箱 22string 引用类型 23XmlSerializer 只序列化有用的数据,而丌是序列化整个对象。实现没必要的数据冗余,和提升序列化时的性能。 24.NETout 我挺喜欢用out参数的,特别是当函数需要有多于1个返回的时候,我比较愿意用out,至于它好丌好没研究过 ? 25 可以,作用可以对参数有进一步限定,比如输入参数为int类型,可以通过允许AttributeTargetsParameterInfo的Attribute自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便抱错。 AttributeUsageAttributeTargets.Parameter public class ParameterAtt : Attribute public int Min 100 public class AttributeTest public void TestMethodParameterAttMin 100 int par1 ParameterInfo para MethodInfo.GetCurrentMethod.GetParameters0 ParameterAtt att ParameterAtt.GetCustomAttributepara typeofParameterAtt as ParameterAtt if att.Min par1 throw new Exception要求para1最小为 att.Min Tag标签: 面试题答案 posted on 2008-02-29 18:26 jillzhang 阅读1783 评论33 编辑 收藏 : 1楼 2008-02-29 18:34 Jeffrey Zhao DateTime.Parse的主要问题其实不是抛出异常,这个是特性,问题在于它会使用当前线程的CultureInfo信息(很可能就是系统设置)的默认的格式(具体忘了),对于DateTime这种类型无论是ToString还是Parse都应该指定CultureInfo或FormatString。 cyclomatic complexity其实就是描述程序复杂度的一个度量,一般就是程序流程各种分支的数量,再具体也不清楚了。 “双重检查”写法不对 135端口,MSDTC要用 XmlSerializer是动态生成类文件再编译,所以需要写权限。 Equals和其实含义上都不确定,因为都可以重载。 out参数的互操作性不好,不容易和别的产品/技术合作,例如很难实现跨边界out。 回复 引用 查看 2楼 222.67.41. 2008-02-29 18:38 JustYxY 未注册用户 不错,还没没看,不好意思站个位置先, 回复 引用 查看 3楼 222.67.41. 2008-02-29 18:40 JustYxY 未注册用户 By the way 请问雄台这些题目的出处都是自己以往面试累计的麽? 回复 引用 查看 4楼 2008-02-29 18:56 TristanGuozhijian lock的写法值得商榷 回复 引用 查看 5楼 楼主 2008-02-29 19:54 jillzhang TristanGuozhijian 有什么问题么? 回复 引用 查看 6楼 楼主 2008-02-29 19:57 jillzhang out参数的互操作性不好,不容易和别的产品/技术合作,例如很难实现跨边界out。 - 不太赞同,我用xml web service写的服务中就有out参数,客户端是asp,一样用。而且wcf中也可以用out,ref 回复 引用 查看 7楼 楼主 2008-02-29 20:04 jillzhang TristanGuozhijian 我写的只是lock的通常用法 如果要双重检查的话 private static object instrace public static void LockTest object lockedObj new object ifinstracenull locklockedObj ifinstancenull instance new object 回复 引用 查看 8楼 楼主 2008-02-29 20:07 jillzhang XmlSerializer是动态生成类文件再编译,所以需要写权限 - 它要求对temp目录有写权限 回复 引用 查看 9楼 楼主 2008-02-29 20:10 jillzhang 135端口,MSDTC要用 MSDTC依赖于RPC,真正使用135的是RPC /u/18156/showart_134792.html 回复 引用 查看 10楼 楼主 2008-02-29 20:11 jillzhang JustYxY 我可没这么多面试经验,看网上有,挺有深度,自己理解着填的。 回复 引用 查看 11楼 楼主 2008-02-29 20:16 jillzhang DateTime.Parse的主要问题其实不是抛出异常,这个是特性,问题在于它会使用当前线程的CultureInfo信息(很可能就是系统设置)的默认的格式 - 恩,这个也是一个原因,最少用DateTime.ParsemyString的代码是不规范的,用FxCop可能会有提示 回复 引用 查看 12楼 2008-02-29 21:15 Chagel 4. you need to check the instance object equal to NULL before and after LOCK statement. Its more important to think about why we need double-check pattern and all these relations with singleton pattern. 5. GAC has nothing to do with runtime security permissions 14. I agree that its worthy to be considered the differences bewteen and Equals happen on the polymorphism characteristic. Topic can be expanded to value/reference equlity or identity and attentions of using both overridesetc. 回复 引用 查看 13楼 222.68.187. 2008-02-29 22:22 呵呵呵 未注册用户 仍需努力哦 回复 引用 查看 14楼 2008-03-01 00:21 工业酒精 有些问题的答案还是有问题的。 我只是在想,针对.Net的高级开发人员或者是构架师,这些题目是否就真的能够衡量其水平,我有些怀疑。 这也是工作中,实际遇到的问题,到底怎么样的题目,能考核多个方面,同时有恰如其分的深度。 回复 引用 查看 15楼 2008-03-01 08:40 金色海洋(jyk) 现在面试都靠这些了,惨了,都不会了。 回复 引用 查看 16楼 楼主 2008-03-01 08:56 jillzhang 工业酒精 请把有问题的指出来,这样才有意义,我说了也不是标准答案。 回复 引用 查看 17楼 2008-03-01 09:22 毁于随 高级的有一半都不会或者没有听过或者不确定. 回复 引用 查看 18楼 2008-03-01 10:20 Silent Void 学习了,谢谢: 顺便提几点: 2 Windbg中,PDB可以放在系统的Path环境变量下,猜想“放在和对应应用程序集相同目录。”不是一个必要条件.瞎猜的/: 4 lock的写法不太正确,考虑如下情况:调用两次LockTest函数,则每个函数内部都会构造一个lockObj来Lock,所以这时的Lock除了增加冗余代码外,没有任何作用。一般是定义private对象来Lock 或Lock一个private static对象变量来保护所有实例所共有的数据; 6 猜想是在方法上应用权限相关的Attribute.瞎猜的/: 14 Release相比Debug,做了更多的优化以提高运行性能。举一个例子:在一个方法执行到一半代码这个时间点上,GC应该可以检测到前半部分代码中构造的部分对象没有用了,但在Debug模式下,它不会回收这些对象,而在Release模式下,它可能会回收这些对象。这只是一个例子,应该还有很多其他的优化,如冗余代码、循环优化等,毕业出来半年,编译原理都都忘光了.汗. 16 引用.net框架书中的说法:类继承基类表达的是一种“IS-A”的关系,而类继承接口表达的是一种“Can-Do”的约束。另外,正是“抽象类能有具体实现,而接口只定义行为规范,不能有具体实现”,则子类在继承基类时,可以继承并重用基类的实现,这样做的好处是减轻构造子类的负担,带来的副作用是增加了父类和子类的耦合。 17 要看a的类型定义中,有没有重写Equals方法和重载操作符。 回复 引用 查看 19楼 楼主 2008-03-01 10:37 jillzhang 2 Windbg中,PDB可以放在系统的Path环境变量下,猜想“放在和对应应用程序集相同目录。”不是一个必要条件.瞎猜的/: - 默认的是同一目录,ide还可以设置全局pdb symbol文件的地址,这也是vs2008能调试.net framework source code的方法。还可以解决方案指定pdb位置 回复 引用 查看 20楼 楼主 2008-03-01 10:39 jillzhang 4 lock的写法不太正确,考虑如下情况:调用两次LockTest函数,则每个函数内部都会构造一个lockObj来Lock,所以这时的Lock除了增加冗余代码外,没有任何作用。一般是定义private对象来Lock 或Lock一个private static对象变量来保护所有实例所共有的数据; - 我的确写错了 回复 引用 查看 21楼 楼主 2008-03-01 10:44 jillzhang 17 要看a的类型定义中,有没有重写Equals方法和重载操作符。 - 重写的应该不在这道题的考察范围之内,要不就没有绝对答案了。你给个应该根据重写来判断等于没说,因为任何问题你都可以这样回答,大不了可以用一个同名函数覆盖,这里肯定初衷是强调Equal是判断引用相同,而是值相等,也就是string.Equals 与 11 的区别 回复 引用 查看 22楼 121.16.0. 2008-03-01 11:10 河间当当办公用品网 未注册用户 流程挺全的 回复 引用 查看 23楼 2008-03-01 11:34 Silent Void jillzhang 有时面试官问的问题本身就比较模糊,可能问之前也没有仔细斟酌;但也正好留给面试者发挥的空间: 回复 引用 查看 24楼 2008-03-01 14:42 Jeffrey Zhao jillzhang 如果我是面试别人,如果不提Equals和是可以重载的,这题一半已经错了。 还有就是,Equals和并没有说Equals判断引用相等,判断值相等。判断引用相等,唯一正确的做法只有调用Object.ReferenceEquals。 就拿你举的String类来说,我把它的和Equals的代码贴出来: public static bool operator string a string b return Equalsa b public static bool Equalsstring a string b return a b a null b null EqualsHelpera b / public bool Equalsstring value if value null this null return false return EqualsHelperthis value 很明显,它们最终都是调用EqualsHelper方法来判断,两个方法的判断依据是一样的。 关于一个object的Equels和的含义如何,在一个合理的类中应该如何重载,还是推荐一本书:CLR via C,呵呵。 回复 引用 查看 25楼 楼主 2008-03-01 15:03 jillzhang /java/2/19522.html 可以看看这个吧 在多数情况下这两者的区别就是究竟是对对象的引用进行比较还是对对象的值进行 比较(其他特殊情况此处不予考虑)。 当然他也提到了有重载的问题。重载只不过是一个角度,那值,引用应该也是 我的理解是这样的,如果二者没有严格的界定,clr怎么会不厌其烦的制造着相同作用的函数和操作符呢?还有上文所说的Dispose与Close其实还是有区别的。 我想更详细的答案只能是上面那个详细的文章吧。至于打多少分的问题,我也不赞同你的看法,如果是我,我觉得在笔试上,我觉得我会对我的答案打90或者满分。因为关注的范围不一样而已,如果真要面面俱到的话,估计你一个合格的都招不到了。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论