我们积极的对外招聘已经有四个多月了,如果要问从这次经历中有哪些收获,我只能说,我终于明白,Jeff Atwood在FizzBuzz这篇文章里说的并不是玩笑话。(译者:这篇文章里说程序员不会编程)。
在新成立的公司中,我们RethinkDB公司因面试过程最为苛刻而出名。这是事实——我们对面试过程不会有半点妥协。我们期望通过最大范围的筛选来建立一个高质量的开发团队。对于这个初衷,我在之前的一些文章里提到过多次。在过去的几个月里,我们遇到不少人认为我们的要求高的有些离谱,以为我们是在招聘同时具有量子力学和计算科学双学位的火箭专家。这是误解。我们只希望招的能编程的程序员。
为了满足大众的好奇,我们公布了一些冒烟测试过程(smoke test),这写过程只是半个小时内的一次电话交流,大概20个候选人中有19人通不过这个测试。(这些候选人都是经过简历审查筛选出来的)。我们并没有 要求他们对一个复杂的算法提出解决方案。我们并没有让他们去做脑筋急转弯问题。我们并没有让他们做复杂的指针算法和操作。就像下面的这个问题,绝大多数的 应聘者都不能正确的解答,甚至做满半个小时,甚至给了大量的提示的情况下:
请写出一个C函数,实现反转一个单向链接表的功能。
就这样的一道题。我们选了一些简历写的让人不可抗拒的应聘者(包括做内核开发的,编译器设计的,还有一个哲学博士学位的),没有人能正确的编写出来,不管给他们多少时间。
我们当然也问了些其它问题。把N个元素插入到一个Vector里(或者ArrayList,或其它的你所选择的语言里被称作动态数组的东西),最坏的最复杂的一种运算情况是怎样的?我们并不是考察应聘者对这个数据结构的了解程度,我们只是希望他们用自己的见解阐述一下。我们会告诉他们vector的内部工作原理。你们知道吗,我们甚至接受O(N log N)次这样的答案。
如何实现一个读-写锁?我们并不要你通过电话编写出这样一个程序。只是说说方案,如果你的方案里能提到饥饿矛盾问题(starvation issues),那我们就算你中了头彩了。我们真的希望老天能不拘一格降人才,可是我们真的没有找到这样的人。
我们试探着询问多任务运行的合作模式和抢先模式的区别。我们试探着询问条件变量的工作原理。20个人中有19个人从头至尾一句话都没说出来。
为什么我们会询问这些很特别的问题?因为这些知识对一个大学毕业生来说是他们所学的全部课程中最核心的部分,因为这些知识在我们的日常工作中会以这 样或那样的形式被使用。而且,在这四个月的招聘中,我们发现,如果你能理解线程和协调进程的区别,你就能知道如何反转一个链接表,如果你对条件变量有了基 本的了解,你就能获得更多的机会在众多的应聘者中证明你是个更好的程序员。很多的人都做不到这些。
我们希望所雇佣的程序员拥有比我们上面所说的技能更多的能力,而且我们不认为这些要求很过分。只是希望你们对基础知识有扎实的掌 握,有潜力去完成艰巨的任务,对你们所开发的程序有虔诚的热爱。引用我的同事第一次听到FizzBuzz里的言论时的反应:“如果他们不能编程,他们能干 什么?”挑选简历需要好几个小时,每个应聘者需要20多分钟进行冒烟测试。然后面试过程每个人需要45分钟。整个过程差不多要15个小时的工作。这占用了 一个懂技术的工程师大量的时间去发现一个可用的候选人。
真正的程序员,请你站出来。
分享到:
相关推荐
作为一个程序员,真正的成长不仅仅是掌握更多的编程语言或框架,而是涵盖了技术、思维、沟通、学习能力等多方面的提升。本文将围绕这些关键点展开,探讨程序员如何实现自我进化,成为更优秀的开发者。 首先,扎实的...
在IT行业中,识别一个真正的程序员并不只看他们的年龄或简历,更重要的是他们对技术的热情、理解和应用能力。本文将深入探讨这一主题,帮助你理解如何判断一个人是否...这些都是评判一个人是否为真正程序员的关键指标。
《VC教程入门——真正的程序员用Visual C++》 Visual C++是Microsoft公司开发的一款强大的集成开发环境(IDE),尤其适合...利用这个教程,你可以逐步掌握Visual C++的基础知识和实践技能,成为一名真正的程序员。
lover-awesome:程序员相亲助手,重点解决程序员交友、程序员恋爱、程序员相亲、程序员找对象的问题,真正开源交友。.zip,程序员相亲助手,重点解决程序员交友、程序员恋爱、程序员相亲、程序员找对象的问题,真正...
### 作一个真正合格的程序员要知道的关键点 在IT行业中,成为一名合格的程序员不仅意味着能够编写代码,还需要具备一系列的专业素质和技术能力。本文将根据给定的标题、描述及部分内容,详细阐述一名真正的合格...
### 作一个真正合格程序员的七种素质 在IT行业中,成为一名合格的程序员不仅需要扎实的技术基础,还需要一系列软技能和个人素质。以下是成为一名真正合格程序员所必备的七种关键素质。 #### 1. 团队精神和协作能力...
针对文件信息,接下来的内容将基于“程序员到项目经理”的职业发展路径进行详细的知识点阐述。 首先,程序员与项目经理虽然都属于IT行业中的职位,但他们的工作职责、技能要求、以及日常活动有着根本的不同。程序员...
### 程序员的八重境界解析 #### 前言 在IT行业中,程序员的成长与发展路径一直是人们关注的重点话题。《程序员的八重境界》这篇文章以幽默且深刻的笔触,描绘出了程序员职业生涯的不同阶段及其特点。文章不仅对...
《像程序员一样思考》分析了程序员解决问题的方法,并且教授你其他图书所忽略的一种能力,即如何像程序员一样思考。全书分为8章。第1章通对几个经典的算法问题切入,概括了问题解决的基本技巧和步骤。第2章通过实际...
"程序员,你能真正掌握多少编程技术"这一主题直指程序员的能力与技能水平,下面我们将深入探讨这一话题。 首先,编程技术的基础是至少掌握一种编程语言。无论是C++、Java、Python、JavaScript,还是其他语言,...
在IT行业中,程序员是至关重要的角色,他们负责创建和维护软件、应用程序以及各种技术解决方案。那么,什么样的人适合成为程序员呢?...通过这样的自我修养和努力,才能在IT行业中不断成长,成为一名真正优秀的程序员。
《真正的程序员 For C++》.torrent
了解用户真正需求是软件开发的核心,深入调研,避免开发出与用户需求不符的产品。有效的沟通贯穿于整个开发流程,避免出现需求传递的误解,确保团队协作顺畅。 程序员在编写代码时,不仅要考虑功能实现,还要顾及...
共有三部分,第一部分1、程序员的基本素质。第二部分2、程序的编辑、编译、运行。第三部分3、代码规范。
《2006年程序员试题:照亮你的编程之路》 在信息技术日新月异的今天,程序员这一职业已经成为许多人的梦想。2006年的程序员考试试题,作为历史的见证,为那些准备踏入...在不断学习和实践中,你将成为真正的技术专家。
《像程序员一样思考》分析了程序员解决问题的方法,并且教授你其他图书所忽略的一种能力,即如何像程序员一样思考。全书分为8章。第1章通对几个经典的算法问题切入,概括了问题解决的基本技巧和步骤。第2章通过实际...
然而,他们可能缺乏与实际业务需求对接的能力,忽视了市场和用户的真正需求,因此在大型项目中可能显得力不从心。 四流程序员则更注重技术整合和项目管理。他们具备更宽广的技术视野,能够根据项目需求选择合适的...