你曾经在应聘一份编程工作的面试中被问及一些解谜类的问题吗?我反正碰到过。我被问到的那个问题是:
你最喜欢的那个牌子的苏打,有多少是在本省被消费的?
拜托,正确的答案不能是“关我什么事”,除非你不想得到这份工作了。我当时对这个问题毫无头绪,后来才知道这是一个“费米问题”(Fermi Question)。
译者注:恩里科·费米(Enrico Fermi),美籍意大利裔物理学家,曾经荣获1938年的诺贝尔物理学奖。他能够通过非常少量或者不精确的数据,来得到比较好的估计,费米问题或费米估算因此得名。一个经典的费米问题的例子是,“在芝加哥有多少位钢琴调琴师?”
谜题作为一种新生事物,在1990年代的程序员面试里风靡一时。这在《How Would You Move Mount Fuji?》(如何移动富士山?)一书中有很好的记载,书中还强调微软公司在招聘过程中就使用了谜题。
如果你已经知道你将去应聘的公司会问这类谜题,预先研究一下常见的面试谜题是很明智的。如果你觉得你已经对一般的谜题很在行了,那我就要来考验你一下,看看下面这道史上最难的面试谜题吧:
这里省略N字...... 这里有很多谜题:http://www.cartalk.com/content/puzzlers/2011
换句话说,我讨厌谜题!(但愿那些谜题狂热者们都能解答出来……)意料之中,我没有通过那次面试。我当时很失望,因为那份工作还是挺酷的!
倒不是说我在“与程序员面谈”一节里给出的建议会更受欢迎,但我确实认为那要好得多!
在前一节,我给大家介绍了一种我自创的方法,那也是面试程序员最理想的方式:让候选人在你的团队面前就他们做过的某样东西做10分钟闲聊式的演讲。你当然还可以用一些实际的需要动手的编程测试来作为补充,以确保那位候选人不是在招摇撞骗——尽管我坚信,如果你不是真的理解你正在谈论的东西的话,你是不可能在一个技术性演讲里糊弄一群同仁的。(如果你真能这么糊弄,你现在应该已经成为一家创业公司的CEO了!)
我在这里要强调的是沟通能力。对于大部分程序员来说,在他们通过了“Fizz-Buzz”级别的能力测试之后,他们看起来已经相当不错了。但只会写代码还不够。如果想从优秀发展到卓越,你必须培养起有效沟通的能力:与你的同事沟通,与你的老板沟通,与用户沟通,最终与全世界沟通。
因为我们第一个小孩的出生,我和我的妻子在一家医院里待了5天。在住院期间,我们受到了很多名护士的协助——每天至少两名不同的护士,有时还会更多,因为我们要去不同的科室就诊,而且护士每天还有换班。这家医院的护理质量总体来说是相当高的,但我们也为从最差的护士那里和最好的护士那里分别得到的护理之间的差距倍感困惑。几天之后,我终于发现了一个共性——最差护士的沟通能力必定最差的!这些护士无法跟我们进行有效的沟通,比如:
- 为什么她们需要做某事
- 可选方案有哪些
- 提供建议
- 排解我们的问题
这让我们觉得,她们都是些死板的、只知道照章办事的人,她们不会照顾人,或者她们没有主见(必须不断地请示上级)。当然,事实不是这样的。我相信,她们都是完全合格的专业护士。但在必要的沟通缺失的时候,她们确实看起来很糟糕!我还得说句公道话,这些护士常常(也不总是)不是本地人(她们的母语不是英语)。
即使在最佳的条件下,招聘也不是件易事!但如果让面试流程太过依赖于谜题就太冒险了。当然,程序员们最终可能把你扔给他们的蹩脚谜题解决了(我猜他们也许只是记住了答案)。但是,把那些解决方案有效地解释给团队中的其他人听,难道这不同样重要吗?对于很多程序员来说,那是谜题中最难的部分。
分享到:
相关推荐
对于大多数程序员都是给人不善交流沟通的感觉,但实际开发中程序员有大量的沟通需要,需求的把控,产品的设计都是要通过沟通才能防止需求理解错误而导致的设计失误和大量返工,所以沟通之道,程序员非常需要哦!
爱工作,爱生活,练习普通话。程序员给人的印象总是木讷、呆板,真的是这样的吗?其实,只需要稍微花点小心思,你聪明的小脑瓜一定可以让自己变得魅力无穷!
程序员提高团队协作的必备书程序员提高团队协作的必备书程序员提高团队协作的必备书
程序员应具备的能力和素质.doc
咕泡首创互联网程序员职业成长路线能力模型
IT 技术的发展日新月异,新技术层出不穷,具有良好的学习能力,能及时获取新知识、随时补充和丰富自己,已成为程序员职业发展的核心竞争力。本文中,作者结合多年的学习经验总结出了提高程序员学习能力的三个要点。
从网上档下来的一篇讲程序员该具备什么能力的文章。
程序员面试综合能力测试题 非常全面 在找工作的时候非常有用
程序员能力矩阵教材.pdf
注重实效的程序员,事实上的绝对好书,保证你看后恍然大悟,增强你学习编程的能力
根据程序员的学习能力、协作能力、技术知识能力等21项指标打分,将程序员划分为助理工程师、初级工程师等8个级别。按此模型对研发人员进行能力评估并以此为依据制定薪资
程序员能力矩阵 Programmer Competency Matrix 注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。
作为一个作为一个程序员很重要的一个能力应该是解决问题的能力
程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器
程序员的自我修养 学习笔记,好东西要懂得分享。
程序员工资程序员工资程序员工资程序员工资程序员工资程序员工资
程序员考试程序员考试程序员考试程序员考试
IT技术的发展日新月异,新技术层出不穷,具有良好的学习能力,能及时获取新知识、随时补充和丰富自己,已成为程序员职业发展的核心竞争力。本文中,作者结合多年的学习经验总结出了提高程序员学习能力的三个要点。 ...
程序员的酸甜苦辣程序员的酸甜苦辣程序员的酸甜苦辣程序员的酸甜苦辣