我的公司即将雇用.NET开发人员.我们在各种.NET平台上工作:ASP.NET,Compact Framework,Windowsforms,Web Services.我想编制好的问题列表/目录,这是一种最低标准,以确定申请人是否有经验.所以,我的问题是:
您认为一个优秀的.NET程序员应该回答什么问题?
我也将它视为自己的清单,以便了解我自己的赤字在哪里(有很多......).

*更新:它想明确我们不仅仅测试.NET知识,解决问题的能力和一般编程技能对我们来说更为重要.
Jul*_*iet 171
基本问题包括:
我认为通常有助于您的申请人完成一个简单的编码练习,例如:
接下来,寻找具体的技术诀窍:
对于熟练的C#程序员来说,这些都不是特别困难的问题,他们应该让您对申请人的特殊优势有所了解.您可能还想使用一些使用特定设计模式的问题/代码示例.
[编辑澄清]:
似乎很多人不明白为什么我会问这些类型的问题.让我谈谈几个民族的评论(我不是直接引用,而是代言):
问:最后一次使用挥发物或弱参考时间是什么时候?
答:当我进行技术访谈时,我会看一个人是否理解.NET 的高级和低级功能.Volatiles和弱引用是.NET提供的两个低级功能 - 即使这些功能在实践中不经常使用,这些问题的答案也极具启发性:
对volatile的一个很好的理解表明,一个人理解编译器优化如何改变代码的正确性,线程如何保持共享状态的本地副本,这些副本在任何给定时间都可能不同步,并且很少意识到多线程代码的一些复杂性.
对弱引用的充分理解表明,一个人知道垃圾收集器的私密细节以及它如何决定何时释放内存.当然,你可以问候选人"垃圾收集器是如何工作的",但询问弱引用会得到更好,更周到的回复.
.NET是一种相当抽象的语言,但是明星开发人员几乎总是对CLR和.NET运行时的低级细节有深入的了解.
问:为什么有人需要实现自己的哈希表或链表?
答:我并不是暗示Dictionary类是劣等的,或者人们应该推出自己的哈希表.这是一个基本问题,它测试一个人是否对数据结构的了解最少.这就是这些问题所测试的内容:最低限度的理解.
您将在数据结构101的第一天了解这些哈希表和链接列表.如果有人无法从头开始编写哈希表或链表,那么他们的技术知识就会有很大差距.
问:为什么这些问题如此严重?
答:因为这个主题的标题是"每个好的.NET开发人员应该知道的问题".每个.NET开发人员都开始编写crud应用程序的职业生涯,并且90%的所有应用程序开发人员都致力于生产线应用程序.
我认为在大多数情况下测试人员对业务线应用程序知识的问题是合适的,除非您正在寻找具有特定利基的开发人员,例如编译器开发,游戏引擎开发,定理证明,图像处理等. .
spl*_*tne 135
我在Scott Hanselman的博客上找到了这些列表:
以下是我认为这些帖子中最重要的问题分为几类.我编辑并重新安排了它们.幸运的是,对于大多数这些问题,Stack Overflow已经有了一个很好的答案.只需按照链接(我会尽快更新它们).
a.Equals(b)和之间有什么区别a == b?Assembly.LoadFrom或Assembly.LoadFile适当?Finalize()和之间有什么区别Dispose()?(外部文章)Debug.Write和之间有什么区别Trace.Write?什么时候应该使用?catch (Exception e) {throw e;}和catch有(Exception e) {throw;}什么区别?typeof(foo)和之间有什么区别myFoo.GetType()?q=除where q=5(如在http://localhost/page.aspx?q=5)之外的所有值生成的页面的传出版本?Bri*_*Kay 94
这可能不是你想听到的,但我建议不要关注狭隘的技术,而应关注一般编程和解决问题的技巧.坚实的开发人员可以快速学习您希望他们做的事情.
例如,我不是Compact Framework的人,所以如果你走向那个方向,我可能会失败.但如果我需要使用它,我可以做一些研究并直接进入.
Joel的书" Smart and Gets Things Done"对招聘开发者提出了很好的建议,并且有很多关于要问的问题.我强烈推荐它.
Jon*_*eet 66
我想如果我正在采访有LINQ经验的人,我可能只是要求他们解释LINQ.如果他们可以解释延迟执行,流式传输,IEnumerable/IEnumerator接口,foreach,迭代器块,表达式树(无论如何),那么他们可以应对其余的.(不可否认,他们可能是"好"的开发人员而不是"获得"LINQ - 我真的在考虑他们声称知道足够的LINQ以使其成为公平问题的情况.)
在过去,我已经问了几个已经列出的问题,还有一些问题:
Chr*_*isA 42
我和那些正在寻找解决问题能力的人在一起,而不是那些你可以从"101顶级.NET面试Q和As"中查找和记忆的东西.
仅仅举个例子,我倾向于"知道"我每天需要使用的东西.我倾向于忘记(后来不得不重新查看)我很少使用的东西.
如果你想在面试中绊倒我,那将非常容易.
尽管如此,我已经构建了大量的基础架构,并为其WinForms和ASP.NET版本使用相同的Business Objects和Data层进行了编码,而且我们的代码库非常强大且可重用,足以让我们能够支持和开发20+不同配置的网站版本,以及越来越多的(目前为5个)WinForms应用程序......
......有两个开发团队.
我曾经在一个团队中担任技术主管,我的工作涉及很多招聘和面试.我最大的错误就是雇佣了一个比我们所有其他人都更了解我们使用的技术的人,包括我,我认为自己是一名专家.他知道一切......
...除了如何编写符合要求的代码,或者除了他自己以外的任何人都可以理解的代码.当我最终说服总理不续签合同时,他所写的每一件事都必须改写.
明智地构建你的面试......
Ste*_*owe 34
Jon Skeet是谁?
Jen*_*fer 18
我总是会自己寻找软技能 - 没有双关语意.如此优秀的OO设计,测试驱动开发,良好的多语言(编程)语言背景和全面的一般智能(以及完成事情 - 我猜!).
智能开发人员在学习您需要他们知道的各项技术时应该没有任何问题,即使他们以前从未查看过 - 所以我不会过多担心围绕WCF /紧凑框架等的具体问题.
我会让他们写一些代码 - 最好的方法来找出他们知道什么以及他们如何工作.任何人都可以记住"参考类型和价值类型之间有什么区别?"的答案.
Eri*_*sch 13
说实话?
"什么是.NET?"
如果他们可以给你一个明确的答案,那就是.NET是什么,不是什么,它是如何使用的,它是由它组成的元素等等......如果他们能说服你知道它是什么,那么很可能是知道得很清楚.
事实是,很多人并不真正知道.NET是什么.甚至那些为它编写程序的人.
Gen*_*rts 11
没有,真的.可能有非常简单的问题,世界上最聪明的人都不知道答案.不是因为它们很难,而仅仅是因为它们没有碰到它.您应该查看整个软件包和开发人员的技能,而不是他们是否可以回答任意问题.
如果这个问题很容易用一两句话来回答,那么告诉不认识的人很容易.您应该寻找他们对概念和推理能力的理解,而不是他们回答"每个.NET开发人员应该能够回答的问题"的能力.
Martin Fowler 喜欢平台知识的设计技巧.另一方面,您可以提出一个问题,它将显示设计模式和.NET平台的知识,如下所示:
| 归档时间: |
|
| 查看次数: |
522955 次 |
| 最近记录: |