收藏 分享(赏)

招聘材料分享.doc

上传人:tkhy51908 文档编号:7729158 上传时间:2019-05-24 格式:DOC 页数:9 大小:31.50KB
下载 相关 举报
招聘材料分享.doc_第1页
第1页 / 共9页
招聘材料分享.doc_第2页
第2页 / 共9页
招聘材料分享.doc_第3页
第3页 / 共9页
招聘材料分享.doc_第4页
第4页 / 共9页
招聘材料分享.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、15 位业界专家的面试高招-转载(2003 年)在众多的求职者中找出优秀的程序员并非易事。文中讨论的面试技巧,均来源于一些世界级专家在最近一次关于编写优质代码的会议上的发言,经典而实用,相信读者定会受益匪浅。2003 年 1 月,我参加了俄勒冈州波特兰市召开的一个名为Writing Better Code 的会议,这次会议是由 Scott Meyers 和Bruce Eckel 共同组织的。在为期三天的会议中,有 15 位专家聚集在一起,讨论代码质量的问题以及他们是如何改善代码质量的。整个会议贯穿着一个明确的主题:优质的代码来源于优秀的程序员。因此,在企业内提高代码质量的一个重要的途径,就是雇

2、用更好的程序员。问题是,在一大群求职者中找出优秀的程序员却并非一件易事。找到优秀的程序员不容易,这是因为良好的程序设计不仅仅依赖于编程语言的语法知识。你需要深谙面向对象设计思想的人,却不去在乎他穿着条纹短裤和圆点花布衬衣;你需要具有足够的创造性、能够找到解决问题的革新方法的人,却不去在乎他的屁股后面总是拖拉着卷曲的背带;你需要足够谦虚、能够坦然接受改进意见,但又足够自信,能够坚定立场并在其成为最佳人选的时候能够担负领导责任的人。如何仅凭与一个陌生人在会议室中相处的短短 30分钟就可以判别这些问题呢?会议的最后一个早晨,Bruce Eckel 宣称他“控制”了会议。Bruce Eckel 希望在

3、场的每个人共享他们的面试技巧。他想要知道我们如何在面试中识别一个优秀的程序员。在本文中,我将重点谈一些那个早晨所讨论的面试技巧。发掘专业技能的领域虽然那天早晨谈到了各种各样的面试方法,但在讨论中只形成了一些基本的技巧。例如,与其简单地考察候选者在他将从事工作的某个特定领域中的专业技能和经验,不如更注重综合的编程才能和技巧。判断候选人才能的一个方法是发掘其专业技能的领域。Dave Thomas:雇用那些有才能的人。一些公司犯的一个最大错误是雇用人员时象列购物清单:“我需要具有 6 年Java 经验、3 年 Oracle 经验以及 2 年 EJB 经验的程序员。 ”世界不断在变化,因此你需要雇用那

4、些能够跟上这些变化的人员。寻找那些理解计算技术方法的人,而无需在意一些细枝末节。这样的人不但可以更好地适应未来的变化,而且在目前来讲也可能更具创新性。Chris Sells:可以从技术上来判别候选者是否优秀,我让他们选择一个自认为具有技术专长的领域。我需要他们熟知其中的知识,我会向他们提出有关的问题。我还会问他们为什么。我希望能够了解在他们所专长领域中的技术为什么会是这样的,但我不必寻找我所需要的领域中的专家。如果他们在过去能够理解为什么,那我相信他们在未来同样也会这样。让他们进行评论另外一个技巧涉及到与候选者展开对话的重要性。要了解他们的才能和性格,你不能仅仅提出一些缺乏实际意义的问题,而应

5、该尽力去营造一种交谈的氛围。为了促进对话,你可以让他们对某些技术进行评论。Josh Block:我要候选者对我们都使用的某个系统或平台进行评论,最好是他们在工作中将要用到的。例如,我可能会问:“你不喜欢 Java 的哪些部分,为什么?”Pete McBreen:我给候选者一些我们当前所写的代码样例,让他们解释这些代码并加以评论。这不仅可以帮助我了解他们的技能,还能使他们知道自己将会做些什么。让他们解决一个问题可以促进坦诚交谈的另外一个途径是让候选人完成一项任务:解决一个问题或进行一项设计。尽管这个话题引起了大量的关注,甚至在场的每个人差不多都同意这是一种重要而且有用的方法,但大家却普遍认为,要

6、求候选人解决难题需要谨慎对待:Josh Block:我会要求候选人解决一个小规模的设计问题,看看他们如何思考、如何做。例如:你怎样编写一个能够告诉我其参数是否是 2 的乘方的函数?我并不期望得到使用位操作的最优方法(n&-n)=n ) ,我只是想看他们是否能以正确的方法解决问题,他们是否考虑边界值的情况,他们的算法是否合理以及他们是否能对最初的方法进行改进。Bruce Eckel:我让候选者创建一个关于小鸡的对象模型。这消除了问题域的不确定性问题,因为每个人都知道小鸡是什么样子。我认为这也可以使人从计算机的技术细节中脱离出来。这样可以测试他们是否有能力考虑一些较大的场景。Scott Meyer

7、s:我不喜欢被要求当场进行某些设计。在一种压力很大的环境中要求他们展示一些在工作中很少会用到的技能,对于候选者来说很难准确地证明他们的能力。我认为这种要求对于候选者来说从根本上就是不公平的。Matt Gerrans:我不喜欢要求我在一张纸上写出一个实现某些功能的程序,所以,我也不要求候选者在纸上编写程序,那是在浪费时间和精力。人们并不是在纸上编写软件,他们在计算机上使用自动填充、宏、索引化的 API 文档以及上下文敏感的帮助等工具来编写软件。他们对软件进行思考、重构甚至是重写。如果你想要看一个人的作品,要求他们在面试之前编写一些小的模块或实现一些接口并把代码存在笔记本电脑或其他硬拷贝上带来。然

8、后,你可以审阅这些代码并对其设计、编码风格以及其内部的一些处理进行讨论,这将使你能够对一个人的工作能力和风格做出更实际、更有用的评估。Kevlin Henney:我喜欢设计一些没有某个确定答案的谈话问题。这样的话,他们便不得不向我提出问题,这样也就能引发一场讨论。在房间里最好能够有块白板。对话可以让考官了解被面试者如何工作,而问题实际上只适合于电视测验节目,并不能告诉你某人将如何工作以及在以后能完成什么事情。一道难题需要的是了解一些诀窍,本质上不过是知道或是不知道。我不喜欢难题,因为那不需要对话。Josh Bloch:一个合理问题的提出在很大程度上依赖于候选者的经验和成熟。Dave Thoma

9、s:我寻找那些具有好奇心的人,会提出问题,但不是难题。考察他们的代码Josh Bloch 提出了一种我们都比较认同的方法:要求候选者在面试时带一些代码资料。考察候选者的代码并与他们谈论这些代码。虽然我们担心一些候选者可能没有能够合法地带来面试的代码,但相信大多数人还是可以的。要求候选者在面试时带一个他们过去所写的代码样例至少不会有什么负面的影响。Josh Bloch:我希望看他们的代码。你可以看到他们挑选了什么。你可以了解他们的价值取向。你可以了解他们如何进行交流。了解他们读什么书一部分人指出,他们会向候选者提出关于他们所读的编程方面书籍的问题,这样可以看出一个程序员是否具有能够自我激励或者是

10、否关注提高自己的编程技能。Matt Gerans:我会问候选者, “你读过哪些关于程序设计的图书?” ,如果他们回答的书是超越语法层次的,那就是重要的。Randy Stafford:我要知道他们读了什么书,这是因为我很看重他们这种自觉意志下的自我学习。提出关于人的问题与技术才能同样重要、甚至比它更重要的,这就是性格。候选者是否能够与团队融洽相处?他们是否能适应工作环境?我们可以通过一些方法来判断性格:Randy Stafford:良好的品格可能比技术才能更为重要,因为那些具备良好的态度和行为方式的人,公司可以帮助他们获取技术知识并培养软件开发习惯。但对于那些缺乏谦虚和成熟的人,不论他们如何聪明

11、或是他们过去有什么成就,都很难与他们通力协作来实现目标。Chris Sells:我会问候选者, “和我谈谈你曾经与老板或是同事之间发生过的问题,请告诉我你是如何处理这样的问题的。 ”Jack Ganssle:我会核实推荐者,并询问候选者最好的 5 个朋友。虽然他们不会说任何有负面影响的话,但我会向这些介绍人询问一些有关候选者的情况,并向这些人进行咨询以帮助我做出判断。通过这种方式,我铺开了一张超越候选者所能设想的网。Kevlin Henney:我试图设想能否在酒吧中与他们进行非技术性的谈话如果我不喜欢他们,我是否能够与他们打交道。他们易相处吗?我能够在非工作环境中与他们交谈吗?Dawn McGee:最合适的人往往不是最优秀的人。进一步了解他们这次讨论会最显著的主题就是竭尽所能地去了解候选者:在面试过程中与他们交谈,尝试形成对他们的认识。如果可能的话,让他们进行基本的测验或者进入试用期。这将给你更多的时间进一步了解他们,也给他们更多的时间了解你。本文为人月神话博客原创文章,转载请务必注明出处。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 教学研究

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报