你真以为 Howell 被 Google 拒是因为没做出翻转二叉树么?

2015-06-13 08:22:24 +08:00
 ninechapter
Homebrew 的作者Max Howell面试被 Google 拒啦,因为他不会翻转二叉树,然后作者在twitter上开骂:



1. Max Howell 是个什么鸟蛋?
Max Howell 是Mac上著名软件Homebrew的作者,Homebrew是什么?可以理解为Ubuntu上的apt-get,用这个软件可以轻松的装其他的Mac上的软件。主要是服务程序员的。这是一个非常重要的对于程序员来说不可或缺的Mac软件。

他的LinkedIn和Facebook:
https://www.linkedin.com/in/maxhowell
https://www.facebook.com/maxhowell

2002-2007年在读书,2002-2007年在KDE工作,2007-2009去了Last.fm 担任tech lead,2010-2011年去tweekdeck也是担任tech lead。然后2011年开始创业,先后在Racket担任co-founer和在Popular Pays担任CTO。2013年开始,在Mobile Makers Academy上当instructor。

从这份简历来看,应该是一个很牛的人,大学里就开始在企业实习/工作,接着又创业,当co-founder,做CTO。最重要的是作为Homebrew的作者,让他名声大噪。


2. 翻转二叉树是个什么鸟题?
给出一棵二叉树,求这棵二叉树的镜像。如:



你可以去LintCode上试试看做做这题: http://www.lintcode.com/zh-cn/problem/invert-binary-tree/

这个题目在LintCode上的难度属于Easy,根据LintCode的定义,如果Easy难度的题目无法在面试中答出来,确实是拿不到Offer的。

这个题的解法一句话就可以描述清楚:遍历二叉树的每个节点,然后将每个节点的左右儿子对调。

九章上的参考程序如下,只有8行……8行……8行……:
http://www.jiuzhang.com/solutions/invert-binary-tree/?source=v2exmhw



3. 到底为什么被拒?
面试被拒的原因按照惯例公司是不会告诉求职者的。虽然 Max Howell 从简历上看起来很牛,但是他被Google拒了。具体原因是什么?真的是如他所说的不会二叉树镜像么?那么我们首先要知道,IT企业决定是否Hire一个人的标准是什么。一般来说,主要有在下面三个方面的影响因素:

1)求职者的经历的牛逼程度
2) 企业是否有合适的职位给求职者
3) 求职者在面试中的表现

很显然Max Howell满足第一个条件。我们会一般认为,牛逼的人企业就应该给Offer。但是这是错误的观念。第二个条件和第三个条件的重要程度均超过了第一个条件。

对于第二个条件,试想一下如果公司不缺人,为什么还一定要招聘你?再试想一下,这个人在A领域很牛逼,但是公司需要B领域的人才,那么是该发拒信还是Offer?再再试想一下,如果公司空缺的职位所需要的人才只是花10w$请一个应届毕业生就可以搞定,为什么要花30w$来请一个CTO来做?以上三种情况,都极可能会发生在Max Howell的身上。

对于第三个条件,首先我们要知道面试的流程和面试官给求职者评价的依据。对于Max Howell这样的资深Engineer来说,一般来说面试可能包含如下的四个部分:Coding面试,Experience面试, System Design面试,Culture Fit面试。一般来说至少4名面试官会与你交流给你评价。所以你的面试结果并不是由一轮面试和一个面试官决定的,面试官只是根据面试的情况给出一个评价(hire, no hire, strong hire, weak hire),并说明具体原因。最后这些评价会提交给 Hire Commitee,由HR综合所有的评价给出是否Hire的决定。做二叉树镜像属于Coding面试,算法的考察是一个方面,Coding能力的考察也是一个方面。因此,只是说因为不会二叉树镜像而被拒,是不全面也不负责任的说法。公司并不会给你一个feedback告诉你为什么被拒,只是会告诉你,“这是一个艰难的决定,你很优秀,但是我们没有合适的职位给你,我们期待之后能够再联系”。另外还需要说明的是看似不起眼,但是非常重要的Culture Fit面试。在这一轮面试中,面试官主要考核面试者的内容是看看面试者是否能够和同事们愉快的工作。这方面没有一定的参考标准,但是从Max Howell的经历来看,这一轮的面试很可能无法通过。首先他很Geek。笔者周围的朋友中不乏技术非常牛逼的Geek,但这些人因为太Geek,EQ往往都很低,无法与同事愉快的一起工作,自己一个人干可以,但是在团队中,就非常糟糕,比如总觉得同事都比他傻逼,总觉得老板都是傻逼等等,虽然事实上可能他是对的,但是你愿意和这样的同事一起工作么?从Max Howell的工作经历中,依稀可以看到这一点——每份正式工作都不超过2年,在跳槽不那么频繁21世纪初,这是不正常的。

4. 到底怎样才能拿到Google Offer?
根据前面的分析,我们猜想Max Howell可能被拒绝的原因有如下的一些:

1) 因为不会写二叉树的镜像,表现出来的算法能力薄弱和无法与同事(面试官)一起合作解决问题的能力有欠缺。
2) 经历很牛逼,但这些经历更适合去一家创业公司,而不是Google这样的大公司。大公司更需要能够与人合作的人才。小公司才更需要单枪匹马的人才。
3) 有创业经历者,大公司在招聘时会有一些考虑。因为很可能呆不久就又跳槽了,或者挖人走,也可能不专心工作,自己搞项目。
4) 没有合适的职位提供给他,或招聘他的成本太高。

那么到底怎样才能拿到Google Offer呢?简单的思路是,避免上面这些被拒绝的原因即可:

1) 提高算法能力和Coding能力。算法能力体现的不只是算法的知识储备本身,更加是一个人是否是聪明的人的标志。对于Google这样的大公司而言,他不需要你已经具备在某个领域的很强的战斗力,而是希望你足够聪明就可以了。大公司是很愿意花时间去培养你的。而小公司正好相反。
2) 增强与人沟通和合作的能力。Teamwork是每个大公司都强调的求职者必须拥有的素质之一,一个teamwork方面有欠缺的求职者不仅仅无法做好自己的事情,更加会影响到团队中的其他人。以解决算法面试题为例,其实面试并不是一场“考试”(这是大多数人的误解),而是你与未来同事(面试官)一起合作解决问题的一次模拟。你是可以从面试官那里得到提示和帮助来一起解决算法问题的。一般面试中也会尽量避免算发性特别强的面试题,所以一般只是一些简单的如“二叉树镜像”这样的问题,根本没有难度,做不出来极有可能是求职者过于自负的心理抵触做如此简单的事情。
3) 别告诉面试官/HR你创业过。或许这个经历很牛逼,但那只是说明你适合去小公司,不适合来Google这样的大公司。
4) 在合适的时机找工作。通过内部员工或公司网站了解公司的招聘情况,是否缺人等等。如果你看到Google正在裁员,你被招聘的可能性是很小的。眼光放开阔一点,硅谷并不是只有Google才是好的IT企业。
17448 次点击
所在节点    程序员
59 条回复
Andiry
2015-06-13 10:06:56 +08:00
喷了,写的好像作者是Google面试官一样
monnand
2015-06-13 10:13:57 +08:00
楼主这篇文章写得真是非常实在的。现实中的面试(大部分)都像楼主分析的那样。
FrankFang128
2015-06-13 10:25:03 +08:00
居然不是 @ping++ 发的帖子
windyboy
2015-06-13 10:33:44 +08:00
软广,鉴定完毕
GtDzx
2015-06-13 10:39:56 +08:00
@Andiry 没准真是。九章的团队都是肉翻到google facebook的工程师,当过面试官不足为奇。
hooluupog
2015-06-13 10:48:06 +08:00
“他不需要你已经具备在某个领域的很强的战斗力,而是希望你足够聪明就可以了。”
===================================================
非常同意这句话。所以你会发现很多名企招的名校的应届生对实际工作中具体的某个项目或者某个技术知道的并不多,甚至是空白的。但人家更看重的是“学习新事物”的能力。
LintCode
2015-06-13 11:28:52 +08:00
@hahasong 还真是……参见25楼。
crystone
2015-06-13 11:44:33 +08:00
记得whatsapp作者面facebook的时候不是一样拒了么 后来f家可是花了大价钱买回来的啊
jsuper
2015-06-13 11:46:42 +08:00
软广直接block...............
lyragosa
2015-06-13 11:48:18 +08:00
什么,原来是软广?
AmberBlack
2015-06-13 11:48:24 +08:00
block 你推广你的产品不是不可以,恶心的就是拿别人来做标题。
sneezry
2015-06-13 11:49:58 +08:00
写的很棒!
Khlieb
2015-06-13 11:51:11 +08:00
@vietor @txl263 @xcv58
就是,官话连篇
ivanchou
2015-06-13 12:01:01 +08:00
看了下 id 原来是软广……
ChiangDi
2015-06-13 12:05:43 +08:00
我决定 block 掉那些专门发软广的,比如那个什么 ping++,什么牛课网,还有楼主这个帐号。
太心累了,仔细看了半天最后发现是个软广。。。要发广告就直接发好了,折腾那么多干啥,大家又不是傻子
msg7086
2015-06-13 12:06:52 +08:00
Lintcode不支持Ruby这让我情何以堪
irgil
2015-06-13 12:48:36 +08:00
@hahasong 九章的讲师还真是都是flag里的,也都当过面试官……
quericy
2015-06-13 12:53:41 +08:00
软广不错,差点被钓进去了,看到LZ的头像才反应过来。。
schezukNewTos
2015-06-13 14:33:32 +08:00
『企业是否有合适的职位给求职者』?
有些时候招募一个人就是招募一个部门。招徕一个人才就是储备一种可能性。
schezukNewTos
2015-06-13 14:34:12 +08:00
但是这个软广真的蛮有意思的~~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/198155

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX