Google 偏爱白板谈兵的大学毕业生,胜过业界多年实务经验的老工程师?

收藏:353

Google 偏爱白板谈兵的大学毕业生,胜过业界多年实务经验的老工程师?

不管怎幺看, Google 都是软体工程师最梦寐以求的顶级公司之一,其高薪、免费食品、校园般的环境、创建的各种有趣技术,吸引了各方人士前往求职。但在另一个重要面向,该公司可能已经自打嘴巴其求才若渴的形象:传奇般困难的面试过程。

Google 目前正在挨告,是来自一些没得到工作的求职者有关年龄歧视的诉讼。 Google 回应这些官司是「毫无意义」的指控,这些控诉确实可能没有意义,但有些程式设计师确信该公司的严格招聘流程,非常偏爱那些刚从学校毕业而无业界经验的社会新鲜人。

针对其臭名昭着的面试过程,自由程式设计师 Michael Geary 接受 Business Insider 记者的访问表示:「即使已经以外包程式设计师的身分为该公司服务了 5 年,根本就不想在 Google 全职上班。」

Google 知道他是 Google Maps 专家

回到 2007 年年底,Geary 已经在一家名为 Zvents 的草创公司工作了一段时间,该公司创建了区域事件日曆(后来被 StubHub 收购)。

他的工作是为事件创建地图,因此他成为运用 Google 地图的程式设计专家。做为一个友善、乐于助人的人,他花了很多时间在 Google 地图的邮件列表(mailing list)上,解决其他程式设计师遇到的问题。随后 Google 也注意到了他,于是聘他来协助该公司建立 2008 年美国总统大选的选举地图。

虽然他住在山景城的 Google 总部(Googleplex)附近,但他却是被挂在华盛顿特区工作的团队底下。这个团队喜欢他的工作成果,他也喜欢与他们合作,续签了 5 年的外包合约,刚好就在这个时间点时, Google 把这个计画拉到了公司内部。

当时他面临一个人生的抉择:是趁机申请转 Google 的正职,或者继续用外包的形式合作下去?

最后他选择了继续维持外包的身分。

「我听说过他们的面试流程,」Geary 说到,「这个流程似乎是针对大学刚毕业后的社会新鲜人而精心设定的,当你刚毕业时,你有很多演算法,有很多资料结构,而且你会在白板上进行快速的思考,就像你在学校做的一样。但这跟真实业界写程式是完全相反的,因为有更多其他的事务会被捲进来,比如在我实际二十多年的工作职涯里,我从来没有用过白板,我就是直接在我的电脑上作业,但在面试中,却得全部在白板上进行。」

他对这个过程表示担心:「对演算法细节的测验,不得不在白板上现场编写红黑树, 这有利于刚从大学资讯科学相关科系毕业的学生。」

许多人都对 Google 的面试过程充满疑问

Hacker News 是专属程式设计师讨论感兴趣新闻文章的网站,最近上面有一篇由 Pierre Gauthier 发表的网誌,他拥有 37 年的程式撰写经验和 24 年的研发总监经历。

TWD Industries(一间资安公司, 知名产品是 Remote-Anything )的创始人兼 CEO 的 Gauthier 写道,他从来没有主动向Google 求职过,而是被邀去申请工程主任的职位,所以他同意接受了Google 面试官的电话面试。他在文章里贴出了他在那场电话面试,对方的问题以及双方的对谈,还有他的内心话。

基本上,应试人员会被询问一系列的技术问题,而每一题被认为只有唯一的「正确」答案,他说。根据网誌,他提到:「Google 的代表说,这个职位需要管理和最新的编码技能(罕见的混合),但是很显然纵使有超过 20 年管理经验、近 40 年的程式语言经验是远远不够的:因为我没有给出『正确答案』。」

大家可能很好奇究竟是怎样的题目问答,可以「考倒」一名这幺多年经验的资深工程师?笔者就翻译其中的 3 题成中文给大家:

{

什幺是 Linux inode?

Gauthier:任何特定档案系统上独特的档案识别符(file identifier)。

面试官:错了,它是档案的后设资料(metadata)。

Gauthier:inode 是在一个档案系统上识别一个档案的索引(index),您可以从这个索引查询到大小、时间、所有者、权限等档案属性(attributes);您甚至可以在某些档案系统上的 inode 添加自己的属性。

面试官:错了,不是「属性」,它是「后设资料」。

Gauthier 的内心话:喔?「后设资料」比「档案属性」是更贴切的词,真的吗?(译注:这个词语的差别也跟不同时代大学教学用词的差别相关,后设资料本来是图书馆用的词,2000 年以后因为数位化潮流才进入电脑世界。)

}

{

为何快排(Quicksort)是最好的排序法?

Gauthier:这不是永远成立的,也不会永远合适的。

面试官:Quicksort 有 big-O 最佳的效能。

Gauthier:「big-O」忽略了资料储存设备的延迟(latency)、拓朴、容量、可用记忆体甚至在特定运算设备上的实作中,涉及到每道 CPU 指令的计算成本,仅仅计算了演算法操作的数量! 没错,「big-O」可以是设计演算法时高价值的指示,但是最佳性能和扩展解决方案取决于具体问题和环境的特定规格。

面试官:你答错了,快排项目你已经给我大大的零分。

Gauthier 的内心话:Google 营运所倚靠的 Linux 核心就选择了堆积排序法(Heapsort)而不是快排,目的是为了低记忆体的使用量与更可预测的执行时间。(译注:这内心话,笔者略译了美国学术界的菸草丑闻比喻,因为华人圈无该背景知识,不好理解。)

}

{

有一个 16 位元、10,000 栏位的阵列,你要如何最有效率地计数这些位元(bits)?

Gauthier:你只要以 64 位元的 word 为单位来操作位元移位(shift bits),也就是 Kernighan 演算法。

面试官:错!

Gauthier:还有更快的方法,是用 64 位元的 word 与位元遮罩(mask),但我没有办法透过电话解释,我必须实际写程式码。

面试官:正确的答案是使用查询表(loopup table,一般缩写为 LUT),然后加总出结果。

Gauthier:是在哪种 CPU 上?何不在一个 benchmark 测试中比较我的程式码和你的程式码的效能?

面试官:这不是这个测试的重点。

Gauthier:所以这个测试的重点是什幺?

面试官:我必须检查你知道正确的答案。

Gauthier 的内心话:这废话还要继续多久? 8 位元 LUT 只能依序处理一个 byte 接着一个 byte(一个 byte 就是 8 位元),而用 64 位元遮罩的方法,一次就可以处理好 8 个 bytes(现代的电脑主要是 64 位元电脑,一个运算周期,就可以算好 8 个,比起 8 个周期才计算完来得快)。除此之外,如果不考虑可移植性,现代 CPU 指令甚至允许你用 10 倍的速度去一次处理好 128 位元。由于今日的电脑还达不到 64 位元 LUT,哪一个才是更快的方法是毫无疑问的。

}

基本上,这段摘录的问答,反映出现在 Google 的面试官在乎教科书上的单一标準答案,像 AI 谈话机器人一样,执着于特定的词语(「讲话」跟「说话」、「吃饭」与「进食」差在哪里),而忽略词语所代表的真实意义。更进一步 Gauthier 的技术解决方案更为务实、优秀,完全把 Google 面试官的「正确」答案碾成碎片,可是他在 10 题里只有 4 题拿到分数,不及格,恐怕 Larry Page 来现在的 Google 应试,也会不及格吧?

此外还有一个有名的故事,是 2015 年 Google 拒绝了一位名为 Max Howell 的程式设计师。 Howell 因创建名为 Homebrew 而闻名于世(设计给 Mac OSX 的软体套件管理程式,用来简化原来繁複的软体安装过程)。 Howell 曾在这则 twitter 上大吐苦水:「Google:我们的工程师中有九成的人使用你写的软体(Homebrew),但是你没有办法在白板上反转二元树, 所以你可以滚了!」

他后来在该篇推文的回应中解释说:「我今天早上被拒绝了,这就是我那时直率的反应。」而这则 twitter 像是病毒般地被广为流传,引发许多程式设计师的诸多有关白板理论派 vs. 实际写程式 coding 派的讨论。

Howell 告诉 Business Insider 的记者说:「对我来说,这个情况好比:Google 非常、非常需要一个水电工人来解决漏水的问题,所以我以自豪的 20 年经验带着所有对的工具(有些还自己开发的)前往;然而,他们却要我在捲袖子开始施工以前,坚持我先坐下来考过流体力学才能进行。」

快乐的结局?

讽刺的是,Gauthier 在 Hacker News 上发表文章的前一周,製图团队的产品经理联络 Geary 确实想要聘请他,并试图让 Google 赞助这个职位,但被拒绝了(译注:Google 不再外包这个工作)。虽然他现在依然不想要在 Google 工作,但是 Geary 回顾当时为何不向 Google 求职:「这可能是我自己的问题吧」,也就是说 Geary 离开 Google 了。

在此同时, Max Howell 投效了苹果公司。 Gauthier 也更新了他的网誌文章,提到在这篇文章发表后,收到了大量的工作机会(他不需要,因为他是一间公司的 CEO),和收到许多履历(想为他工作)。他认为自己公司的「后量子」(post-quantum)安全技术比今日的学术研究更加先进,「Google 却这样冷落我,我可没有要找工作,我可是 18 年前就创立了 TWD 呢。」(译注:跟 Google 同年创办。)

当 Business Insider 的记者要求 Google 回应有关面试偏爱大学毕业生的批评,Google 的发言人回应:「从成千上万的面试中,我们每年僱用了成千上万的工程师,从大学刚毕业生到有几十年经验的人都有,这个过程是出名的严谨,但应试者回馈给我们一致的肯定。当然在许多面试里,有一些应试者是很不高兴的离开,我们希望聚集更多来自不同年龄、背景的优秀人才来本公司工作,所以非常感谢他们的回馈。」