以我在LinkedIn做面试官的经验,来给程序猿面试提些建议

n6xb 9年前

原文  http://www.centrechina.com/news/34078.html


以我在LinkedIn做面试官的经验,来给程序猿面试提些建议

笔者之前在LinkedIn做技术工作同时,也花了不少时间在招聘上,成为了当时LinkedIn前三的面试官,包括挖掘候选人、参与校园招聘、草拟面试题、电话面试、Onsite面试、填写反馈,和最后决定是否发放Offer,都有完整的流程和经历。

在本文中,我按问答形式给大家借鉴。这里也推荐一下我的新书:程序员面试白皮书(An Ultimate Guide to Coding Interviews).

问题:硅谷公司的招人的渠道有哪些,跟国内有何不同?

一般公司都有自己的Refer和面试系统,HR人员寻找候选人,在LinkedIn上就有丰富全面的简历库,通过对毕业学校,就职公司的过滤去挖 掘潜在员工。还有一些高水平的学术会议,工业界愿意支持和参与,像SIGMOD,VLDB顶级数据库大会;也喜欢举办公开技术讲座,邀请社会各界参加,注 册时留下联系方式。或者写一些技术博客,开源产品,通过他们做的有意思的项目来间接吸引人才。有时也举办一些hackathon比赛,24小时做出一个小 产品原型,欢迎各类技术人才挑战。当时我也参加LinkedIn的编程马拉松,每人发一件T-shirt,写着 Eat, Code, No Sleep。我记得内部统计表示,2/3的人都是通过内部推荐进来的。

其实国内的思路更厉害,比如最近雅虎北京一裁员,忙坏了各路IT公司,某创业公司也凑热闹一起去抢人,派出2个高级工程师去面试,结果,负责面试的2个员工都被人挖走。

问题:硅谷公司招聘流程是什么,跟国内有和不同?

我刚好在国内外都工作过,我可以做个对比。

国内:如果是在校生,一般都要有个笔试,通过率也不高,可能就百分之几,然后在校园里面试3轮左右,分别对技术,基本功,价值观的考察。然后就会大规模发offer,一些大公司如百度,阿里一年招上千人是很常见的。

硅谷公司:一般是没有笔试。如果HR发现简历的一些关键字和背景符合职位需求,简单介绍公司,安排1,2轮电面,如果通过,邀请onsite面试,里面会有4-7轮,里面涉及到不少白板编程,虽然很多人争议,但目前为止还是有些无奈的选拔手段。

LinkedIn会花很大代价去组织,包括报销来回机票,吃穿住行,赠送小礼物,给候选人一种非常受尊重的感觉。比如附带礼物中有一个inMap, 把你在LinkedIn上面的联系人聚类可视化呈现出来。非常酷。

这里面成功率非常低,真的是千里挑一,虽然代价很大,但很多公司都是强调人才是第一位的,在宣传企业文化和价值上也是起到积极作用。然后就是收集 反馈,一般是2个面试官back to back同时给出评价,按1-4打分,最后取平均分,Yes = 3.0 ; Very Yes = 3.5; No = 2.5 招聘委员会通过投票和辩论来确定是否发放Offer。

我记得印象深刻的面试:面试者岁数大些,当时我面的时候也没出众,我准备给他一个一般的分,但他回去马上给我写了一篇长信,解释当时我问的问题, 给出详细参考,我对他的回答非常佩服,至少态度很积极,也许是当场没有发挥好,我立马改变了印象,给他很高评价,但其中有个初级面试官居然给他1分,什么 概念

  • Produce a system that is clean, elegant, well thought

  • Explain why you choose this implementation

  • Be familiar with your experience level to make decisions

  • Answer in high level of scale and complexity

其实大家大可不必追求完美,在真正的面试中,没有人能对答如流,往往面试官也会给出善意的提示,就算你没回答某个子问题,在面试后的评价中也会综合衡量,跟其他的面试者比较,最终打出一个分数。很多人在2到3分左右,目标是尽量在3分以上。

问题:我不是算法大牛,不是ACM队员,听说Google,非死book有很多牛人才能进,那我怎么能拿到好Offer?

首先要是要有信心,算法不是想象那么难。

第一:因为面试常见的算法就那么几种。只有你努力去总结归类相似题目,才能只做很少的题就可以会很多的题。不要盲目关注数字。做题质量非常重要。标准是:你做过的题目,让你再做一次,你就能“完美解决”。

第二:即使你知道一题的解法,你未必能写好。因为你可能每次写出来的程序都很随性,这样会漏洞百出。程序员是一个非常讲究严谨性的职业,如果你在 总结题目的时候能够找到这些题目的模板,你把模板提炼好,碰到类似的题目,可以一边写模板,一边想想怎么在模板上做一点简单的改动。这样节省时间又保证不 会出错。

问题:如果本科不是学计算机的,又想转行该怎么准备?

1、让自己更Professional。比如你的简历只能放和计算机有关的东西,其他东西再牛也不能发挥用处如果Resume还是很空,就多去做项目。在Github上面多去follow项目,然后参与到感兴趣的当中。

2、在某一方面达到工程师实力。临时转行时间短,找一个容易入手的准备,如果你以前做的事情跟数据有关,就申请Data Analyst。本来就会一些基本技术的,可以做前端,JavaScript, HTML, CSS,去真正做一个自己博客。如果对产品感兴趣,就玩Django, ROR这样的网站框架,了解一个网站是怎么搭建起来的。如果对Mobile感兴趣,就用IOS或者Android写2个APP。这样做的好处是,简历不 空,如果问到,可以驾轻就熟。如果不相关,坦诚相见,说由于我是转行的我这方面不熟悉,可以尝试猜猜看。也可以直接告诉面试官,我是转行的,我对计算机很 感兴趣,做了这么这么几个项目。于是面试官不会问你难题。结果你早就准备好了,超出面试官预期,就是一个高分!

问题:面试时候如何表现自己体现沟通能力?

首先你要站在面试官的角度,面试官招你进去当同事,他希望同事是怎么样的人就决定了他的立场。学会换位思考。

让面试官时刻明白你的意图,不要闭着眼睛不停写。对于面试官来说,他根本不知道你的解题进行到哪一步了。你可以反复和面试官交流自己的想法,得到 面试官认可以后再动手写。可以讲讲你怎样想到这个思路的。记住,你并不是要说服他接受你的想法,而是要把你的想法解释给他听。面试官提出质疑的时候,第 一,不要觉得面试官什么都不懂,怎么这都不知道,第二,面试官比你经验丰富得多,很有可能就是你犯错了,赶紧想想是不是真的有问题。

问题:面试中出了Bug怎么办?

BUG Free很重要,这个需要我们平时不断的练习,按照我们方法的准备,还是可以避免一些坑。但碰巧你可能不在状态,写出了BUG被面试官指出,是不是就挂了呢?

别担心,出BUG很正常,也许面试官来面你之前正在DEBUG:( 衡量一个程序员能力的标准,并不是他能想出多牛的算法而是当遇到问题的时候,程序员去分析和解决问题的能力。而出BUG的时候,正是展现你是否是一个合格程序员的时候。

DEBUG流程:

  • 通过TEST CASE定位BUG所在位置。

  • 不要立即修改代码,重新梳理逻辑。因为很有可能还有其他BUG。

  • 走完所有逻辑之后,心里有数怎么改了,再动手开始改。

  • 用TEST CASE再走一次新的代码。

  • 在整个过程中,不停的告诉面试官你在干嘛。

这样,成功排解BUG,不但不会减分,还会因为你优秀的DEBUG能力和与此同时展现出来的沟通能力而加分。

最后希望大家在找工作方面能有所收获,不用多久,就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰~想想还有点小激动呢,嘿嘿~~ 同学,梦醒了么,该去搬砖了。

本文参考资料:

  • How to Conduct a Better Coding Interview

  • In Defense of Whiteboard Coding

  • 像谈恋爱那样去招顶级程序员吧!

</div>