如何通过一个问题,完成最成功的技术面试(转)

招聘过程

  我之前的主要工作是参与招聘并进行技术面试,招聘的总过程如下:
  1. HR所进行的面试:判断候选人是不是一个连环杀手或精神病。
  2. 技术专家进行的面试:判断候选人是不是一个优秀的程序员。
  3. 大老板进行的面试:判断候选人愿意接受多少报酬。

  我面试过两种类型的人:实习生和准员工。实习生只需要经历以上第二条步骤即可,其他人则需要经历所有的步骤。在那个公司工作的两年多时间里,我进行了超过200次技术面试,这对我来说是一种丰富的学习经历,我逐步弄清了这一过程的实质。这里有一个很重要的前提,请你记住,在法国你不能轻易解雇一个人,雇佣了一个错误的家伙,你就等着抱憾终身吧。找出最好的候选人极为关键,不能犯任何错误,这是一个繁琐的过程,但我乐在其中。

  针对性的摸彩式测试

  在2008年,我进行了我的第一次技术面试,当时,公司已经有了一套工作流程供我参照:面试时间1小时,候选人有30分钟时间回答15个测试问题,之后我们会花15分钟时间讨论他们的回答,外加15分钟时间回答关于工作方面的问题。我很快就意识到这样的问卷是多么的糟糕,我的意思是,你竭尽全力也找不出比它更坑爹的东西了。我们公司里大概有50%的项目都是使用Java编写的,所以测试题就非常专注于Java,其中包含了5个琐碎的问题,紧接着是10个关于特定Java框架的极难问题,比如我们经常使用的问题有:

  类和对象的区别。
  Struts 2中的execAndwait拦截器的用途是什么?

  见鬼的是,甚至是我自己都无法解释这些问题或再补充点什么,每一次面试我都祈祷候选人不会用这些问题来反问我!对一个面试官来说,这很讽刺,不是吗?无论如何我还是会快速浏览一下他们的回答(2-5分钟),之后将时间放在讨论他们的简历上,这浪费了很多时间,于是我决定改进一下。我上网比较了成百上千个面试问题,那时我相信我们必须在测试中放置正确的问题,才能展示一个人才的真正优秀之处,正所谓“好马配好鞍”。

  通用的测试

  经过大约一个月的研究,我已经在网上找遍了各种问题,提炼出最好的50个问题,我认为它们都是好问题,因为用任何语言都能回答它们,同时难度也是平稳提升的。我将这50个问题打散,组成5套10大题,随机分发。示例:

单例是什么?你什么时候会用它/不用它?

  这问题好多了吧,我觉得显而易见的,一个给力的问题通常会得到一个给力的回答作为回报,我实践了几个星期,但是不知何故这并不完全奏效,我觉得我已经做的很好了,但结果却并不怎么好。是的,这些问题能够测试出一个人是否熟悉编程理论,然而最终我对此人能否编程依然一无所知,直到最后我也不确定用这种方法招聘员工能比用以前那种粗糙的struts 2问卷好多少。我想了很多,我意识到这其中有两个巨大的问题:
  1. 问题太泛了,如果不专注于某一种语言,我无法讨论诸如SQL,前端细节等话题。
  2. 问题太短了,10个泛泛而谈的问题涉及面太窄,我没法通过其他方式判断此人是否是优秀的程序员。

  我需要的是更多的问题,并且这些问题必须针对候选人所申请的工作内容。

  测试经理(Quiz manager)3000

  事情逐渐有点失控了,当时我继续深入研究,并创建了一个全自动化的测试工具(在一个实习生的帮助下):测试经理(QM)。这个工具使招聘过程变得完美:在初次面试后,HR会选择三个与工作描述相关的话题,之后工具会自动生成一组多项选择题,其中包含3*20=60个随机但具体的问题,其难度符合测试者的经验水准。示例:

?


1

2

3

4

5

6

7

var i = 0;

function a(){

  var i = 2;

  i++;

}

a();

alert(i);

   好吧,情况比我们想象中的更为离奇,我们之中许多优秀的开发人员会获得和被我拒绝的那些人一样的分数,这才是正解,QM被证明是无效的!我花费了很多时间建立这个工具,同时也花费了很多时间认识到我犯了一个巨大的错误:我们希望对结果进行自动化处理,这迫使我们只能设置选择题。用户只需要选择一个答案,因而问题最后大多演变成了技巧性问题,最终的结果是我们根本没有测试软件开发的技能!要面对这副窘境非常艰难,但最后我还是承认这个工具产生了反作用,展示了错误的印象。之后,工具会绘制一个小图表,产生并发送邮件给HR,直接显示结果,而不是一堆无用的指标。这是我多么为之骄傲的工具!我急切盼望着有候选人能够测试这套系统!我坐在HR旁边,在内部系统上观察候选人选择某些答案后的实时分数。QM使我们所有的工作都变得更容易了,看上去非常完美,直到在我们自己的开发人员上测试它时……

  只需编码

  8个月过去了,我做了更多的研究,视察了一些美国公司筛选候选人的过程,这时候我决定去追求另一种方法:只需编码。这是程序员得到报酬的原因啊,所以为什么不直接展示给我看他们是怎样写代码的呢?你会觉得这很合乎逻辑……在经历了前几个月的教训后,现在测试变得很简单:我会给出三个算法题,你需要在30分钟内解决它们。候选人可以任意选择语言,并使用一台电脑作答(无法连接网络)。这些都是网上能找到的经典问题:其中一个算法题通常涉及字符串操作(比如在一句句子中逆置单词),另一个问题涉及循环(比如计算斐波那契数列),最后一个问题涉及集合(比如列表排序)。示例:

print out digits 1-100.

for multiples of 3, print out foo.

for multiples of 5, print out bar.

for multiples of both 3 and 5, print out foobar.

  起初,我对结果感到很振奋,并继续执行了几个月,然而再一次的,我意识到我遗漏了些什么……好像有些事不对劲……事实上我确实可以依靠这种方式找出能解决算法问题的人,但他们真的是我所要寻找的优秀程序员吗?请你思考一下,一个程序员的水平是不是由他能否解决一个数学问题所定义的?是不是由他能否写出复杂度为O(n log n) 而非 O(n^2)的排序所决定的?所有事情都变得更清晰,更美好了。我可以很直观地看到谁在代码中缩进、注释、遵循约定、寻找解决方案,等等。我可以据此判断这个人在过去的编程量,此外,通过与他们讨论问题的答案也能获得很多信息。我觉得候选人对这些测试题应该会感觉良好,因为我已经试图解除他们所有的压力,他们可以从容作答,选择他们想用的任何一门语言,征求建议,等等。

  能够驾驭一切的问题

  我很清楚的记得,当我初学编程时,windows 3.1还未问世,QBasic语言是搭载在MSDOS 5.0上的,它包含自带的帮助信息,其中有所有的函数和关键字,像一本完美的离线手册。至今我还记得那时候编程的独特感受,萦绕在我心头,每一次我敲击F5,看到我写的程序在我眼前执行,每一行代码,每一个提示,甚至是颜色,或难以解决的问题……我简直是在天堂。我记得我在每一条命令前添加行号,用可怕的GOTO填满我的代码,同时每天又能学到很多令人振奋的新东西。我热爱编程,我会夜以继日地编写游戏、解决问题,并展示给我父母和朋友。时光飞逝,我从QBasic到pascal到vb,通过2400bps的调制解调器和家庭电话线路,为我们的BBS(Atomic BBS)编写游戏。我并不优秀,好吧事实上我的代码相当糟糕!但我热爱它!!我不能失去它……我猜有些人在他们第一次驾驶飞机、驾驶船只、吸食大麻、吃in n out(译注:美国一家汉堡快餐店)时会感受到他们的肾上腺素涌出的感觉,对我来说,那就是编程、编译和运行。25年前我获得了这种感受,至今它从未离我而去,我为编程而生,我永远都是程序员。

  我始终相信,一个热爱编程的人不会只在工作中编程,在家中他们也会继续创造乐趣,这是一种爱好。多少次,我在工作中因为蛋疼的Eclipse而感到失望,只能在我回家后,写Ruby on Rails代码寻找快乐,放松身心!

  回到上一个话题,在一年的尝试和失败后,我完全放弃了技术测试。我会坐在候选人身边,花5到10分钟阅读和点评他的简历,不问任何问题,之后我会翻过简历,看着候选人的眼睛问道:“我们剩下大概30分钟时间,你能告诉我你所编写过的最成功的项目的情况吗?”

  这个简单、独特和客观的问题是关键。一些人会含糊地回答他们之前的工作或学校的项目,而另一些人会突然变得生龙活虎,尽管一开始他们还有点放不开,他们会热情激昂的谈论他们编写的游戏、制作的站点、贡献的开源项目、开发的工具,他们会很骄傲的展示给我看。我时常会被他们的侃侃而谈吸引和着迷,继而询问他们这些喜爱的项目的所有细节,他们的话匣子打开了,讲述了他们所攻克的技术难题,加上一些小小的个人情怀,仿佛这就是他们的孩子。还有一点无法令人忘怀:我仿佛可以看到他们眼中的光芒,仿佛可以看到他们小时候编译和运行第一个hello world程序的情景,很快,我意识到了我们的共同点,我们都是程序员。

  他们中的绝大多数人没有接触过struts或其它我们正在使用的指定框架,然而当他们一进入工作后,他们总是会成为金牌程序员。他们学习快速,能写出更好的代码,他们用创造力和正能量激励着其他人,他们是真正的程序员。

http://kb.cnblogs.com/page/500774/

时间: 2024-11-02 17:59:21

如何通过一个问题,完成最成功的技术面试(转)的相关文章

一场成功的技术面试的几个关键点

在过去的岁月中,我不但参加过很多场程序员面试,也亲手举办了许多.我清楚的知道搞砸面试的众多因素.最糟糕的情况就是,面试官通过一些晦涩难懂的技术知识以显摆自己的聪明睿智. "错了!原因是将它类型强制转化为十六进制!" ["呵呵",笑着用手指了指] 这件事曾真实地发生在我身上.至今让我记忆犹新.虽然最后他们还是愿意雇佣我,但我婉言拒绝了.这样的互动对双方都是一种折磨:不但封闭了应聘人员的技术思维,也让面试官获取不了他们真正需要的信息. 最好的编码测试可以让应聘人员和面试

qq邮箱-【在线等】用system.net.mail类发送邮件,发现一个QQ邮箱账号成功,另一个失败,求解

问题描述 [在线等]用system.net.mail类发送邮件,发现一个QQ邮箱账号成功,另一个失败,求解 环境:VS 2010 ,SQL2005,WIN7系统.两个邮箱账号都是普通邮箱,都是用的英文邮箱名,都开启了SMTP服务.成功的那个邮箱以前也使用过,也是成功的.失败的那个邮箱运行时提示如图所示. 完整邮件操作代码我附在下面了,请高手解答啊!! public String sendRegEmail(string rec string topic string content) { Syst

jsp-为什么两个按钮我随便点击一个按钮都会更新成功,插入按钮我需要的是插入更能而不是更新功能,求大神指教

问题描述 为什么两个按钮我随便点击一个按钮都会更新成功,插入按钮我需要的是插入更能而不是更新功能,求大神指教 <%@ page import="com.trs.constants.AuthConstants"%> <%@ page import="org.springframework.validation.FieldError"%> <%@ page language="java" import="jav

西方记者眼中的邓文迪:一个机会主义者、不成功的商人

[编者按]在西方媒体眼中,邓文迪是一个http://www.aliyun.com/zixun/aggregation/7144.html">机会主义者.不成功的商人.沉不住气没熬到默多克离世便要下堂的妻子.她对默多克.对自己的两个女儿充满了控制欲.她真的有能力颠覆新闻集团吗,她的时代落幕了吧? 历经与邓文迪14年的婚姻,现年82岁的默多克看起来仍活得不错.他似乎已不担心孤独终老,而是要迅速摆脱自己那正值盛年.醉心于名利场的现妻.但邓文迪是一个战士,她舍得一身剐,会为自己不愿失去的东西战斗到

一个全球化品牌的成功离不开战略、创新、营销几个层面

今天下午,联想集团副总裁.MIDH中国业务部总经理冯幸在谈到企业国际化品牌建设的经验时提到,一个全球化品牌的成功离不开战略.创新.营销几个层面.在创新层面上,技术创新是至关重要的. 据悉,冯幸是在新华社"新华国际"与联想智能 手机 共同主办的"国士无双 礼遇天下"--暨"中国品牌全球化"高端研讨会上发表上述言论的.冯幸认为,创新是联想国际化的重要驱动力之一. 在过去的一段时间里,联想在PC领域推出了Yoga,在手机领域则出现了多个单款过百万的明星

一个站点要运营成功的4A原则

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 一个站点要运营成功的几个要素(从客户访问网站的角度). 我们可以模拟客户游历网站的过程,一个客户在网上游历,偶然中通过搜索引擎或是网络广告,或其其他的方式找到了你的网站 1.Arrived 到达: 要让客户找到你认识你,这就要通过网络广告,其他广告形式去宣传,但是宣传是个很花钱的事,如果又想不花太多的钱,又想有好的效果,那就是进行seo.所以

开发一个ios的app采用的技术架构是什么呀

问题描述 开发一个ios的app采用的技术架构是什么呀 是传统的分布式系统么?阿里云提出的云端开发一个app属于哪种方式呢,与传统的开发有什么不同. 解决方案 开发一个ios程序一般使用C/S构架,属于分布式架构的一种.也就是使用云+端的模式.阿里云提供的有PaaS和IaaS服务,这样比较传统开发,节约了总体拥有成本,简化了开发和部署. 解决方案二: 不自己写还能自动生成么- -?

pushlet-请教各位大牛,一个消息推送平台的技术选型

问题描述 请教各位大牛,一个消息推送平台的技术选型 请教各位大牛,一个消息推送平台的技术选型. 现在想做一个由各个应用(假设名字为A系统.B系统.C系统,都是独立的java Web系统)共用的消息推送平台,把各个系统中的消息通知推送到A.B.C系统的用户端.A.B.C系统用户可能使用浏览器登录,也可能使用Android手机登录. 现在已知消息推送数不会特别高,同时的在线用户数比较有限. 请问该使用哪种技术作为消息推送? 是选择openfire这样的XMPP(BOSH)服务器,还是直接用java的

一个英国的网站成功故事

对于英国的潘克赫斯特夫妇,6日可说是一个有着特殊意义的日子.这一天,他们把自己亲手创立的"老友重逢"网站"卖"给了英国独立电视台.虽说他们从中获利3000万英镑,但那种看着自己的孩子要离家远去的感觉,恐怕只有他们自己知道了. 迫切想知道同学情况 现年41岁的史蒂夫·潘克赫斯特和38岁的朱莉·潘克赫斯特有一个女儿,名叫安珀.开设网站的设想起初是朱莉提出的.原因很简单,在朱莉生下安珀之后,兴奋之余的她好奇地想知道曾经的同学中有多少人已经成为人父为人母,便想方设法和同学取