[经验] Google、FB、LinkedIn 面试经验

楼主: FRAXIS (喔喔)   2016-04-26 09:45:48
这个月开始上工,在这边分享一下找 new grad software engineer 工作的经验。
先介绍个人背景,我在美国某 College 拿到 CS Ph.D. (花了将近六年)。
研究方向是机器人学的理论部分,论文的程式部分只有数千行而已。
因为曾经换过老板,学术发表仅达勉强毕业的程度。
没有实习/业界工作经验, Ph.D. 就学期间没上要写程式的课程。
结果:
拿到 offer 的:Square、LinkedIn 和 Google,最后决定去 Google 。
On-site 之后被拒绝:Facebook、LiveRamp、Anki、Energid (后两者是机器人相关)
电话面试之后被拒绝:Uber
Online assessment (OA) 没通过:VMware
HR 打电话之后被拒绝:Akamai、Leap Motion
履历直接被拒绝:Airbnb、MS、Amazon、Yahoo、Twitter、Oracle... 族繁不及备载
其中 Uber、Facebook、LinkedIn、Google、VMware、MS、Amazon、Yahoo和Twitter
都是找朋友内部推荐的。
想要知道 Facebook、Linkdein 和 Google package 内容的可以参考
http://www.1point3acres.com/bbs/thread-154736-1-1.html
而 Square 的 package 比 LinkedIn 和 Google 少。
我先分享各家面试过程:
大致上的流程都差不多,先有一个 HR 打电话作背景调查,询问想要申
请的职位。有些公司会有 OA ,之后会有一至二轮电话面试,通过之后
就再 onsite 面试,过一阵子就知道结果。
我个人没写过网页程式,也不会手机程式开发,更不要说是网络/数据库
应用了,因此前后端的工作我都没办法找。所以我都找不特别限定经验
的工作。而大公司像是 Facebook 和 LinkedIn 在投履历的时候会选择
组别,尽管我开发大系统的经验是零,我都选择投 infrastructure 组。
因为所居住的地方是在东岸的乡下,要去西岸面试很不方便,所以我把
六个 onsite 面试安排在连续的七个工作天之内,以求一次搞定。不过
很惨的是我在出门搭飞机的时候感冒了,连续的面试也没办法好好休息,
还得要被迫一直讲话,幸好最后还是找到工作了。
Square (SF):
Square 的面试特别的地方是用 pair programming,面试官和你一起写
程式,所以过程比较轻松,压力比较小。尽管是 pair programming,
当然主要还是要你写,除非你是不想要 offer ,不过你的 partner 会
帮你除错或是 code review ,我觉得考官人都很好。
先有两个电话面试,一次一题,会真的执行程式码,还要写测试资料。
电话面试通过之后,有询问有兴趣的职位,我就回 infrastructure 。
Onsite 总共两轮,都是 coding ,但是其中一轮比较偏系统。
那天总共有 15 个人一起面试,通通集中在公司的一个区域写程式。电
脑上面已经灌好不同种类的 IDE ,可以自己挑擅长的用
(虽然我最常用 vi,不过当天还是挑了 Eclipse)。
LinkedIn (infrastructure 组, Mountain View):
一开始有 HR 背景调查和介绍 LinkedIn 职位。
再来一个电话面试,共三题,不用编译,只需要讲解就好。
Onsite 总共五轮,两轮是 design ,两轮是 coding ,一轮是跟 host manager 谈。
不过 LinkedIn 忘记帮我安排午餐了,害我要一边面试一边吃午餐..
最后录取 storage infrastructure 组。
Google (Mountain View):
先有一个电话面试,只有一题 (但是这题比较长),
不用编译 ,只需要讲解就好。
Onsite 总共五轮,一轮是 research ,四轮是 coding 。
最后录取 Google Ads 组。
Facebook (infrastructure 组, Seattle):
先有两个电话面试,一次两题,不用 compile ,只需要讲解就好。
Onsite 总共有四轮,一轮是 research + coding ,一轮是 design ,
然后两轮纯 coding 。
Seattle 的 Facebook 午餐没有想像中的好,因为他们没有厨房。
不过他们说就快要搬到新大楼了,之后食物会好很多。
Uber (SF):
一轮电话面试,只有一题,但是要执行还要写测试资料。
电话面试后就被拒绝了。
Anki (AI Software Engineer, SF):
这是一家做游戏的 startup,目前的主打是 Anki Overdrive。
一开始他们的技术主管先打电话询问背景,之后会给一份作业,
作业做的好就可以得到 onsite 的机会。
Onsite 有超级多轮,总共花了我快要八个小时,
游戏组、机器人组和 AI 组都个别跟我谈,因为这份工作需要跟不同的
组都有交流。
最后他们的创办人跟我谈了一下,他说公司还在草创期,所以招人要非
常谨慎,我的面试不算长的了。
Energid (Senior Robotics Research Engineer, Boston):
这是一家小的机器人公司,主要的业务是帮政府执行研究计画。
有三轮电话面试,主要是问背景知识和 C++。
Onsite 时给一个 jobtalk,接着继续考 C++ 和一些相关知识。
Leap Motion (Algorithm Engineer, SF):
HR 先打电话询问背景,然后寄给我一台 Leap Motion controller,要
我先试着玩玩看,接下来的技术面试会问你的感想。
但是当 controller 寄出之后,HR 又寄信说公司觉得我不适合,所以就
不用联络了。但我还是免费得到一台 controller..
Liveramp (SF):
先有 OA ,然后一轮电话面试考 design 。
Onsite 第一轮是他们技术高层面试我的,面完之后他就叫 HR 跟我说他
觉得我技术太烂,不想浪费工程师的宝贵时间面试我,就把我轰出去了。
接下来我分享找工作的心得:
找工作的前置作业
对于学生来说,从入学到真的工作至少都有一年的时间,其实可以利用
这段时间好好思考自己的兴趣,然后培养自己的专长,找适合自己的工
作,这样会比乱枪打鸟容易许多。
另外要了解,公司是要找人来工作,不是找人比赛解题,解题只是面试
的一部分,并不是全部,面试要考量的面向很多,除了展现程式设计功
力,也要展现自己的沟通能力,对写程式的热情等等。
网络上大部分的文章都是单纯以面试者的经验来讨论面试的过程(包含
我这篇),我建议要先研究一下公司以及面试官看重什么,再来思考该
如何准备。可以参考下面这两个影片
What I Learned Doing 250 Interviews at Google
https://www.youtube.com/watch?v=r8RxkpUvxK0
Google 面试官分享他在 Google 面试程式设计师的经验。
What to Expect During the Recruiting Process
https://www.facebook.com/video.php?v=10152735806862200
Facebook 介绍自己的 interview process 。
以 signaling theory 的角度来看面试过程的话,就是面试者需要释放
出一些讯号,让面试官认为面试者是真的有实力而不是假货。所以重点
是要提供面试官可靠且可以验证的讯号,不要提供任何人都可以说的讯
号。举例来说,每个人都可以号称自己喜欢写程式,所以宣称自己喜欢
写程式对面试官来说并没什么意义,除非面试者可以提供有力的证据。
传统上面试官参考的讯号大多是学历、GPA、或是比赛得奖。因为要达
成这些成就代价很高,想要走捷径的人不会选择这条路走。而且对于面
试官来说,验证这些资讯不难,所以传统上很常用。但是 grade inflaction
越来越严重 [10],因为学校知道公司都看 GPA ,而学校要美化就业率
或是 graduate school 录取率,所以分数越给越高。另外,好成绩不
代表可以胜任程式设计师的工作,所以这讯号虽然容易验证,但是并没
有那么可靠。
因此,如果面试者可以提供一些额外的讯号,让面试官相信面试者是真
的有能力胜任这份工作,像是积极参与 open source 开发的工作,就
会比其他竞争者来的有优势。研究指出,在 GitHub 上面积极的参与
open source 开发是很正面的讯号,甚至比学历要来的可靠 [7] 。而且
如果可以参与有名的专案的开发,会特别有用。而 project 的 watchers
的数量反而没有用,因为是有可能是作假的 [6] 。我想同样的道理,
LinkedIn 上面 skill 的 endorsement 和 recommendation 的可靠度都不高。
GitHub 帐号只是一个例子,应该还有很多方法是可以让面试官认可面
试者的实力。当然,现阶段可靠的讯息,不代表未来还可靠,因为只要
竞争越激烈,就会有愈多投机客想办法要操弄这些讯号,然后这讯号就
不再被面试官相信了,以前的 brain teaser 和移动富士山问题,都慢
慢地被淘汰了,现在的各种面试题库也不知道何时会被淘汰。但是无论
如何,面试者都要好好思考如何展现自己的能力,让面试官可以轻松的
验证和相信。
建议在开始找工作之前,要好好思考一下自己的特长,找到适合自己的
战场,然后想办法凸显一些自己与其他人不同的地方,如果你已经找到
了兴趣,同时这兴趣是业界很需要的,那恭喜你,只要顺着你的兴趣,
发展出自己的专长,要找工作是很容易的。但是如果像我一样,专长不
是业界需要的,又或是没有特别的兴趣,那找工作就没那么容易了,要
更多花心思。
准备履历:
首先是准备履历,然后同时更新一下自己的 LinkedIn 档案、个人网站、
GitHub、Stack Overflow Careers 等等资讯(不知道 Stack Overflow
的 reputation 对于找工作有没有用)。因为不少公司是使用
application tracking system 来审核申请者,所以履历的部分有针对
ATS 来最佳化一下,我是用 LaTeX 加 moderncv 套件来制作。
履历的重点是简单且清楚的介绍自己,以求可以通过 HR 的筛选。进入
面试阶段之后,履历就没那么重要了,不可能因为履历做的好面试就给
offer,但是有可能会因为履历与实力不符而被拒绝,所以诚实的呈现自
己过往经历就好。
准备面试:
我个人熟的程式语言是 C/C++/Java ,但是用 Java 来面试比较方便,
所以我首先复习了一下 Java 的资料结构、 Java 8 新功能和各种 idiomatic
用法,以求可以写出专业的 Java 程式。
虽然并不需要把 API 都背下来,但是常用的一些 API 还是得记好,有
时候会有多个 API 都可以完成同一个功能,像是
Integer.valueOf(int) vs new Integer(int) ,此时可以上 Stackoverflow
看一下这些类似功能的 API 的差异性和使用时机。
当然,毕竟 API 实在是太多了,面试官自己也未必记得全,所以 API
不熟也不用太担心。如果是上机考一般可以跟面试官说让你翻一下 javadoc,
不过我猜应该没办法要求上 Stackoverflow 。如果是白板考,面试官
不介意的话你可以自己假设某种 API 存在,直接使用就好。
另外,面试大多是没办法使用 debugger 的,不管是白板或是上机。因
为面试官默认你可以用看的找出错误。所以要训练自己在写程式的时候
要想清楚 precondition 和 postcondition ,同时训练自己用肉眼看出
loop invariant 来验证程式的正确性或是除错。
除此之外,我也花了点时间准备系统设计面试,从 OOP 、design patterns
到如何设计 scalable 的系统等等。可以参考这个
http://www.hiredintech.com/system-design
复习完程式设计技术基础之后,就要复习资料结构和算法,网络上很
多人的建议都是把精力放在练习题目上,不建议看书的原因是因为书本
很厚,没那么多时间去看,而且有一堆内容面试也不会考。但是这些练
习题只是算法基础中很小的一部分,就算练熟了充其量也只是一些很
片段的知识。所以我建议要先复习教科书再练习题目,而且教科书上一
般有比较详细的解释,这可以帮助你思考该如何解释你的程式给面试官
听。
当掌握好上述几点之后,可以开始有系统地练习面试题目,我主要练习
以下几个网站:
1. LeetCode, 用 JavaScript / Python 解
2. LintCode, 用 Python 解
3. CodeEval, 用 Ruby 解
4. Codility, 用 C/C++ 解
5. HackerRank, 用 Java 解
因为这些题目都很类似,所以就使用不同程式语言来解,比较不会太无聊。
1 是最多人练习的,2 和 1 很多题目一样。 4 和 5 则是许多公司 OA 的
平台,所以需要熟悉一下。
其他还有几个网站像是 HackerEarth、Interview Cake、InterviewBit,
有兴趣的人可以自己看看。
另外还要熟悉一下 CoderPad 和 Collabedit,因为有时候电话面试会用到。
之前我还有在 Talentbuddy (已倒闭)上练过 Haskell (主要是在练习
point-free style ),也在 HackerRank 上的 functional programming section
练过 OCaml 。不过除了 Jane Street 之外以 FP 为主力的公司很少,
所以为了找工作学习 FP 的投资报酬率可能不高。另外面试一般公司也
不建议使用 FP ,因为还要多花时间解释语法,而且有时候面试官也未
必能了解 FP 的意义。
练习题目难度其实都不高,许多高中生比赛的题目都比这些面试题难。
所以只要耐著性子慢慢的作,终究是可以做出来的。
而当基础知识和实作能力慢慢提升,自然可以在时限内解决问题。
重点是在增加自己的实力,而不是增加解题数或是强记奇技淫巧。
我建议是按照由简单到难慢慢练习,而且一次集中练习同类的题目。
自己帮题目分类和分难度,把需要特别注意的地方记录下来,面试前
可以翻自己笔记来复习,而不用浪费时间在自己一定做得出来的题目。
简单的题目写过之后,我会上网看看有没有比较好的实作技巧。
比较难的题目我会找文献来看看理论上的最佳解法,尽管最佳解不可能
被实现,但是研究者思考问题的深度和广度可以增进思考能力。
我做了一些文献整理,发表在 Prob_Solve 版,有兴趣的人可以看看。
我个人建议是教科书和练习题目之间要取得平衡,虽然看书有点像是在
浪费时间,不过我觉得长远来看是值得的,毕竟是增强基础知识。
先看书复习一下基本的资料结构和算法。然后在用这些题目来测试自
己的了解以及实作能力,借由这些题目来找出自己不懂的地方,然后回
头看书并且思考。
参考资料
书单:
1. Cracking the Coding Interview, by Gayle Laakmann McDowell
2. Elements of Programming Interview, by
Adnan Aziz, Tsung-Hsien Lee, Amit Prakash
3. Coding Interviews: Questions, Analysis & Solutions, by Harry He
4. Programming Interviews Exposed - Secrets to Landing Your Next Job, by
John Mongan, Eric Giguere, Noah Kindler
5. Puzzles for Programmers and Pros, by Dennis Shasha
6. Algorithmic Puzzles, by Anany Levitin, Maria Levitin
前四本是介绍程式面试,后两本是介绍数学谜题。
网站:
1. GeeksforGeeks
2. CareerCup
3. Glassdoor
4. HiredinTech
5. 算法笔记 http://www.csie.ntnu.edu.tw/~u91029/
其他人的心得:
1. 半路出家软件工程师在硅谷 http://brianhsublog.blogspot.com/
2. Wei-Chiu http://goo.gl/2eiXd2
投履历:
虽然一开始有试着找机器人的公司,但是很多公司都要求公民身分,
另外我研究的子领域太过理论,业界几乎没需求,所以很难凭著自己研
究成果来找工作。
所以我的计画是第一轮先投跟自己专业相关,或是一些小公司。
因为我从来没找过工作,所以我需要一些面试的经验,这样当面试想要
去的公司的时候比较不会紧张。在这轮我没拿到任何 offer 。
第二轮是找 Ph.D. 限定的工作,当时投的时候很担心下列三点
1. 业界 Ph.D. 需求量最大的是 ML/Big Data 领域,我的研究方向完全
不相关。
2. 许多公司都希望 Ph.D. 是即战力,所以有实习经验,或是作相关研
究的 Ph.D. 比较吃香。不少公司跟我明言,我的履历上看不出来我
会写程式,而且公司也用不到高深的数学或是理论。
3. 今年我也三十好几了,对于应征 new grad software engineer 算是
很老了,很担心公司不收老人 [2] 。
我都是请在各公司的朋友帮我内推,不然就是在 LinkedIn 上面搜寻工作
然后上公司网页投履历。
我本来是打算还拿不到 offer 的话,就用 Hired.com 来找工作,
Hired.com 是把程式设计师当作是商品,让各公司竞价抢标程式设计师的
网站,有些朋友就是用这个平台找到工作的。
不过后来有了 offer 之后就没使用这网站了。
面试技巧:
面试问题可以分两种,一种是非技术面试,另一种是技术面试。
非技术面试
如果面试官是 HR 的话,一般都是问问背景资料、可以上工的日期和签
证状态。HR 会询问希望的工作内容,来决定要给你应征哪个职缺。
为了确认符合需求,有些 HR 会询问是否有具有某种技术,但是我感觉
HR 好像是拿着一张评分表, 一题一题的问然后填表。毕竟 HR 毕竟不是
技术人员,所以这阶段不要讲太技术的内容,不然 HR 会搞不清楚。
有一个 HR 要我对自己 C++ 能力评分,满分十分,我还真不知道要怎么
回答。
非技术面试中最难回答的就是 behavioral 问题,像是为什么想要加入
本公司?
理论上最好的方法是只申请自己有兴趣且了解的公司,这样这类问题就
很好回答了。但是实务上大部分人只是想要有个工作,就算不了解这公
司也会投履历。
所以在面试前需要去网络上搜寻一堆资讯,研究公司的产品。有时候会
事先知道面试官的名字,可以先人肉搜寻面试官,找出面试官可能有兴
趣的方向回答,而且答案要针对不同公司的特点特制化。
我自己在面试过程中被问到:假设你遇到一个 bug ,公司已经到了下班
时间且其他人都走了,你会怎么办?(我可以回答说我也要回家吗?)
技术面试
面试一般会有三个阶段,双方自我介绍、面试官提问、面试者提问。
双方自我介绍:
主考官会先介绍他的工作内容,然后接下来要面试者自我介绍和简介自
己的学经历。
自我介绍只是一个暖身,而且这部份是可以事先练习的,所以要好好把握。
面试官已经有你的履历了,虽然他们可能没认真看,所以自我介绍除了简
介履历的内容之外,试着把自己的一些人格特质、热情所在或是没办法
在履历上凸显的特长包装进去。
要避免滔滔不绝的讲个没完,先简单介绍自己,看面试官哪部分有兴趣
再讲细节,不然讲一堆面试官也没兴趣听。跟履历一样,不可能因为你
讲的好就给你 offer ,接下来的 coding 面试才是关键,所以诚实且自
信的展现自己即可。怕紧张的话可以拟个草稿,然后练习一下怎样可以
说的比较自然。
因为一般面试官不会了解我的专长,所以我被深入追问的机率很低。问
题大多都是你用什么程式语言写、有没有使用过某种技术、总共多少行、
写那么少啊,那我怎么相信你可以当 software engineer 。
面试官提问
技术面是问题主要有三类,解题、系统设计、research。
如果面试官要求解题,首先要搞清楚问题在问什么,然后问问面试官要
不要考虑非法输入,如果是需要真的 run 程式的,还会询问有没有程式
语言的要求,如果可以选的话,就挑一个比较适合这个题目的程式语言来用。
写的一手好程式固然重要,说的一嘴好程式更重要,尤其是不需要真的
上机执行的面试。如何清楚的呈现想法,然后 high level 的解释演算
法,之后边写 code 边讲解是如何实作解法,这是展现自己沟通能力的
好机会。
写程式难免会有 bug ,所以适当的除错也是很重要的,不过在除错的同
时也是要解释自己的想法,让面试官知道你是有系统的在找 bug ,而不
是随意乱改程式寄望 bug 自己消失。
有时候也会遇到一些难题是不知道怎么回答的,可以先提出一个暴力法,
然后思考改进方法或是跟面试官要求提示。面试官出难题有可能是想看
看你思考难题的过程,倒也不是真的要你找出答案。
我被问过一个问题:在三维空间中有两个相同大小的圆盘位于不同位置
(朝向也可能不同),求这两圆盘间的最短距离。除了暴力法我还真想
不出来怎么作..
如果问题是系统设计,同样的也是要先搞清楚题目在问什么,询问一下
系统的需求,以及系统设计的目标,然后适当的使用图像来解释你的设
计,同时与面试官讨论你设计的系统的优缺点,并且逐步改进。这部份
其实没什么正确答案,只要你设计的系统是合理的就可以了。而且也没
什么完美的系统,系统设计到最后就是不同目标间的 trade off 。
系统设计重点其实是在沟通,因为问题本身的定义是很模糊的,了解面
试官到底是想要问什么,以及找到面试官可以了解的解释方法和讨论细
节度。
因为我是 Ph.D. ,有些公司会专门问 research 的问题。所以要好好准
备如何介绍自己的研究,重点是要先让主考官听的懂,之后才能展现自
己的贡献。
在这阶段让我最难回答的问题是:
你的 research 提供了一个理论上的最佳解,但是你的模型跟现实差距
很大,而且速度比工程上用的方法慢太多,你的研究到底有何用处?
在面试的时候总会碰到各种不同类型的人,会问各种不同面向的问题,
所以对自己履历上或是面试中说过的任何一句话都要有被问的心理准备。
我遇过几个面试官是抱持 数学/理论 无用论的。其中一个人对我说:
你喜欢理论是不是,但是程式设计师工作用不到,不然你给我一个在一
般写程式时必须使用高深数学的例子。
但是也有几个是喜欢 数学/理论 的。其中一个面试官要我举一个自己
觉得最有趣的算法。
我想说要给一个在一般教科书中少见但是简单又有趣的算法,就给他
举了判断串行是否有环的问题(虽然这问题在 CLRS 里面有,但是应该
不多人知道)。面试官之前并没听过这个问题,但是他听完我的解说之
后也觉得这问题和解法很神奇。
面试者提问
面试最后可以问面试官问题,如果有事先查询过公司或是面试官的资料,
可以提一些相关问题。如果面试官是你应征的组的成员或是经理,就问
一下工作内容,问问组里面的文化,以及绩效是如何计算的。
如果面试官只是单纯被找来作技术面试的,我就请他们介绍自己工作最
困难的部分,然后适当的讨论。
Negotiate offer 技巧
面试过, HR 会通知你面试的结果,如果录取了, HR 会找时间打电话
跟你谈 package ,然后寄给你 offer letter。因为一般拿到 offer 之
后必须在限定时间内作决定。所以可能的话,在拿 offer 之前先询问
可以考虑多久,然后安排 HR 给你 offer letter 的时间,尽量把所有
deadline 控制在差不多的时间。不过有时候 HR 是直接把 package 寄
给你,上面写明了 deadline ,那你只能问问看 HR 可不可以把 deadline
延期了。
拿到了一家 offer 之后可以试着把这 offer 报给还在 pending 的公司,
让他们必须在一开始就给一个更好的 package ,接着把这 package 报
回已经给你 offer letter 的公司要求 match 。个人建议是只要有拿到
offer ,都要尽量把 package 谈高,最后再下决定。
有 competing offer 是最有效增加薪资的方法,但是有时候 base salary
比较难谈,可以试着从签约金或是股票下手。公司一般可以接受 match
其他家公司 offer 一次。而如果你的谈判技巧好加上经历够显赫,让
公司 match 多次也不是不可能。
而 HR 的抵抗 competing offer 的惯用伎俩就是用不同的方式计算薪资,
把 bonus 当成是底薪的一部分,股价永远上升,公司每年都加薪,然后
经理会打电话来说公司的未来多好多好,你在这边可以晋升很快,说你
到大公司去就是当小螺丝钉,去小公司没有先进技术可学也没有保障,
只有他们那里最适合你。基本上这种话听听就好,找认识的朋友问问内
情比较可信。
除了薪水之外,有些福利虽然未必可以谈判,但是也可以询问一下。
基本的有休假天数、医疗保险(还要考虑 HSA、HRA 或是 FSA)、
签证(能不能在上工半年内办绿卡)、
401k 的 match(有些公司可以 match 到 50%)。
常见的还有交通补助、健身中心会员和房屋补助(像 Facebook [12],
Google 只有提供短期的免费公寓方便员工找房子)。
此外还有托儿服务、学费补助和 529 plan ,也可以问问。
虽然公司会给签约金,但是一般都会先预扣所得税,在加州可能会预扣
个 46 % 左右。而薪水也会扣很多税,federal tax 28% 、
social security 6.2% 和 medicare tax 1.45%
是跑不掉的,在加州还要加上 state tax 9.3% 和 disability insurance 0.9% 。
税法很复杂,我也不知道实际到手会剩多少。
结语
现在美国 CS 业界需要的人数大于学校的毕业生人数 [11],所以要找工
作不是那么的难。要进 Google/Facebook 等大公司的话,虽然他们每年
招的人都很多,竞争还是不小。但是那种有潜力的未上市小公司更难进,
像是 Airbnb ,毕竟他们工作环境很好 [3] ,招的人又少,要求非常高。
给不给 offer 其实是有很多因素的,虽然题解不好拿到 offer 的机率
就低,但并不是解的好就直接给 offer ,不然 HR 只要上 topcoder
去找人就好了。面试官出题的难度,以及在有时间限制和面试压力下的
临场发挥,都有很大的不确定性,连 Homebrew 的作者都被 Google 拒
绝 [5] ,所以被一家公司 reject 也不需要太难过,再找下一家就是了。
如果被 reject 多了,也不要都怪在解题上面,好好思考一下到底哪里
出了问题。
我在准备面试的时候常常在想,到底一个公司要怎样才能挑到适合的员
工,像 Google 或是其他大公司这样主要考算法和资料结构,真的可
以挑到好的工程师吗?而且也只用白板考,不用真的执行。以前 Google
常考 brain teaser 或是如何移动富士山这种题目,但是后来发现这种
问题找到的工程师并不合需求 [1] 。也尝试过用 foobar 这种秘密征才
法,分析使用者搜寻的关键字来判断是否为好的工程师 [4] , 但是通
过的人似乎不多,我想未来应该还会再改变吧,或许未来会使用 自动化
技术 [8] 或是 ML 技 术来找人 [9] 。
[1] Google doesn't care where you went to college
http://money.cnn.com/2015/04/09/technology/google-people-laszlo-bock/index.html
[2] Don’t Hire Anyone Over 30: Ageism in Silicon Valley
http://anewdomain.net/2014/12/11/dont-hire-anyone-30-ageism-silicon-valley/
[3] Glassdoor: Airbnb #1 Best Place to Work 2016
https://www.youtube.com/watch?v=KB2RVkTrvog
[4] Google Has a Secret Interview Process… And It Landed Me a Job
http://thehustle.co/the-secret-google-interview-that-landed-me-a-job
[5] https://twitter.com/mxcl/status/608682016205344768
[6] Activity traces and signals in software developer recruitment and hiring
http://dl.acm.org/citation.cfm?id=2441794
[7] Open Source Software Development Experiences on the Students' Resumes:
Do They Count?
作者: alpina0114 (Hey!)   2016-04-26 09:53:00
推强者
作者: painkiller (肚子饿~)   2016-04-26 09:54:00
贺 辛苦啦 XD
作者: Luos (Soul)   2016-04-26 10:03:00
太强了 当一下再来看完
作者: tiiu (Tiiu)   2016-04-26 10:18:00
推!好详细
作者: jeffraptor (++ride on++)   2016-04-26 10:26:00
推!恭喜,谢谢分享
作者: FatHouse (肥宅哥)   2016-04-26 10:29:00
作者: drajan (EasoN)   2016-04-26 10:36:00
繁体中文的面经! 赞
作者: kenki98 (W)   2016-04-26 10:38:00
强者!好用心的文章
作者: q1q1w1w1q (123)   2016-04-26 10:41:00
作者: fr373969 (Brian)   2016-04-26 10:50:00
作者: davidlhs (David)   2016-04-26 11:09:00
恭喜您,也感谢分享
作者: umum29 (....)   2016-04-26 11:47:00
感谢分享!
作者: tokei927   2016-04-26 11:53:00
作者: hotdog5478 (Anson)   2016-04-26 12:10:00
原po背景的超强的的!太谦虚了 恭喜
作者: yotsuba1022 (Carl)   2016-04-26 12:26:00
谢谢~
作者: Tony (我是土泥)   2016-04-26 12:27:00
感谢分享!
作者: mieki (Return to ?)   2016-04-26 12:30:00
好有用的经验感谢分享
作者: faze (就其实也还好)   2016-04-26 12:54:00
好精彩
作者: parkerliu (新年新气象)   2016-04-26 12:55:00
强者!谢谢分享
作者: frank11118 (想睡觉)   2016-04-26 13:18:00
push
作者: yoyoyo1011 (yoyo)   2016-04-26 13:44:00
感谢分享!
作者: warrenchen (来,玩棋吧! :])   2016-04-26 14:27:00
感谢详细及强大的分享~
作者: bluebluelan (新阴流大目录免许皆传)   2016-04-26 14:32:00
好认真的一篇
作者: linsou (为死别)   2016-04-26 14:52:00
强大推!认真文推!
作者: UYC (静心)   2016-04-26 15:14:00
用心文 谢谢分享!谢谢你抽空写这篇文 真的很棒!
作者: virdust2003 (XDXDXDXDXDXD)   2016-04-26 17:35:00
强大分享
作者: deanwish (Dean Huang)   2016-04-26 17:41:00
作者: punk86862001 (赵MAN)   2016-04-26 18:48:00
太用心了,感谢分享!!
作者: Dartmoor (纵谷的春天)   2016-04-26 19:24:00
太强啦~ 感谢分享~~很实用!!!
作者: sivid (go back to sleep)   2016-04-26 19:46:00
push
作者: Fjallravens (瑞典小狐狸)   2016-04-26 20:03:00
作者: ykshih (失一墩)   2016-04-26 20:15:00
推 另外你的税率是边际税率,最后不会被抽那么多的
作者: terranhardy (cO.Zy)   2016-04-26 20:30:00
感谢分享,另存新档。
作者: howardtzou (狗狗)   2016-04-26 21:52:00
好文
作者: karmen   2016-04-26 22:23:00
很用心的分享 谢谢
作者: Utah1 (Mr.油塔丸)   2016-04-26 22:34:00
感谢分享
作者: krauserq (null)   2016-04-26 22:35:00
作者: obov (来嘘苍真)   2016-04-26 22:43:00
真好QQ
作者: krauserq (null)   2016-04-26 22:50:00
教主耶
作者: wixter (hmm)   2016-04-26 23:27:00
push
作者: starmovie (盗族)   2016-04-26 23:35:00
感谢分享!!
作者: shiangenlu   2016-04-26 23:55:00
详细推
作者: grtfor (哦啦啦)   2016-04-27 00:08:00
推分享~~
作者: coolmannctu (andrew)   2016-04-27 01:43:00
推 猛又谦虚
作者: runnial (呵呵)   2016-04-27 02:11:00
推!强者!感谢分享
作者: bb1168kk (BlackTea)   2016-04-27 02:23:00
作者: chucheng (时间太少事情太多)   2016-04-27 02:44:00
感谢分享
作者: seeking214   2016-04-27 04:41:00
作者: colza (Passion & Link)   2016-04-27 06:25:00
太用心了,非常感谢!
作者: ccas (昆蟲不一定會飛)   2016-04-27 06:33:00
作者: x51811danny (人)   2016-04-27 07:28:00
精华了
作者: Ouranos (å—¨)   2016-04-27 07:50:00
感谢分享! 大推~~~
作者: aznchat100 (aznchat100)   2016-04-27 09:44:00
谢谢你 非常实用的文章
作者: developers (rejuvenate)   2016-04-27 10:12:00
感谢分享
作者: red0423 (JE甫)   2016-04-27 10:25:00
谢谢分享
作者: henry22   2016-04-27 11:05:00
用心分享
作者: vincentlin25 (阿达)   2016-04-27 11:22:00
强者~
作者: a616 (a616)   2016-04-27 11:32:00
感谢分享
作者: giveme520   2016-04-27 12:54:00
太神拉
作者: squeegee (Squeegee~*)   2016-04-27 13:44:00
强者
作者: smallmac (洨麦克)   2016-04-27 13:50:00
推 真详尽
作者: joybee (IDAHACK)   2016-04-27 14:07:00
感谢分享
作者: wmja4387 (曾经沧海难为水)   2016-04-27 16:03:00
推分享
作者: cybergenie ((不要看这里))   2016-04-27 16:24:00
红明显.若公司用ATS的话,最好是不要用LaTeX.作出来的档案ATS看不懂.用docx最佳.
作者: NOYUYU (深蓝色的风)   2016-04-27 20:50:00
感谢分享
作者: goldduck (哥达鸭)   2016-04-28 01:59:00
CS不用写程式的PHD真好
作者: CHeagleeye (自在)   2016-04-28 04:23:00
大推强者!!感谢分享!!
作者: choulu   2016-04-28 11:32:00
强到不行...
作者: kingnamefu (Hey! K)   2016-04-28 18:56:00
推!实用的分享!
作者: dslin (Magic)   2016-04-28 20:22:00
F大推呀~强者~!
作者: sevenw (7万)   2016-04-29 23:14:00
推 强者
作者: sbL (sbl)   2016-04-30 01:03:00
作者: bab7171   2016-04-30 09:06:00
推实用
作者: harry0890 (harry)   2016-04-30 11:38:00
推强者
作者: parite (Mr.Q)   2016-05-01 11:56:00
推 强者
作者: mayfour (哎呀~)   2016-05-02 01:01:00
推详细分享
作者: jammy50605 (小刀)   2016-05-02 09:05:00
太用心的分享了 恭喜大大
作者: Daredevil316 (菲利浦)   2016-05-02 19:27:00
推!!
作者: peace305 (Solar)   2016-05-06 18:09:00
加油啊, 为台争光!
作者: smallmew (来聊天吧~)   2016-05-08 01:23:00
好详细的分享~推
作者: bug2 (bug)   2016-05-16 23:29:00
非常感谢详尽的经验分享!!
作者: morrislek (阿不幸)   2016-05-25 11:04:00
太强了,推到底!

Links booklink

Contact Us: admin [ a t ] ucptt.com