Facebook、AWS、Google、Microsoft面试小记

写在前面

从去年开始换工作的计划也告一段落了,最近疫情期间也稍微空闲了一些,身边的朋友都希望我能写一篇经验总结分享出来,希望这篇文章对正在面试或者准备面试FAANG等美国大公司的朋友有所帮助。

注: 因为签过保密协议,所以本文不会透露任何面试题。

个人背景

16届计算机本科毕业,在阿里的职位是软件工程师,算下来工作三年多了,去年面试了FMAG四家公司,很幸运的收到了几家offer,最终决定去AWS Berlin,做serverless / k8s 相关的技术研发,在此感谢一路走来学长学姐的内推和面试指导。

为什么不去美国

最主要的原因还是因为美国早已千疮百孔的工作签证制度(H-1B签证),取得H-1B的因素不取决于你的收入、公司或者学校,而是完全取决于运气,因为每年申请H-1B的人数远超签证配额,所以美国移民局会在每年4月份进行抽签,又被大家称为「H-1B Lottery」(H-1B大乐透),按照今年的中签率,没有美国学位的中签率不到30%,抽不中H-1B也就无法入职,所以美国绝大部分公司都不会考虑雇佣外国人,除非实在找不到美国人能胜任这个岗位,一个自诩能吸引全球顶尖人才的国家,到今天居然还在用「运气」来筛选人才,而不是他的专业技能,放眼全世界所有国家,恐怕也只有美国一家。至于为什么不推动H1-B改革,理由很简单,需要H1-B的人肯定不会是美国公民,也就不会有投票权,那么对于政客来说实在没什么价值,即使改革它有利于美国的发展。

另一方面,对于FAANG这种科技巨头,人是最重要的资产,所以这些大公司为了绕过H-1B制度,这些年一直在大力发展海外办公室招揽人才,比如Google Zurich、FB London、Amazon Vancouver,它们还发明了一种特殊路径:如果海外的候选人没有抽中H-1B,会外派到海外office待一年,待满一年后可以申请另一种L-1B签证,L签证是美国移民局派发给美国公司海外分部的高级管理人才或者有特殊技能的人才来美国合法工作的一种签证,没有名额限制,唯一的要求是在海外工作时间超过一年。

为什么去柏林

我一直觉得年轻的时候能在欧洲生活一段时间是一件很棒的事,欧洲拥有人类史上最灿烂的文明和最错综复杂的民族、语言和政治,我从小是欧洲史的爱好者,特别是文艺复兴之后的现代史,以及二战史,柏林作为欧洲大陆的中心,去哪里都很方便,德国的医疗、治安、薪资水平、福利等综合来看在欧洲也是最好的之一,所以我想去探索一下,与此同时我也有伦敦的机会,但是考虑到英国脱欧以后的不确定性就作罢了。

德国 VS 美国

很多人觉得欧美的政治制度相差无几,都是帝国主义国家,实际上大为不同,欧洲在我看来属于中偏左的社会主义,强调高税收、高福利、平均主义,美国属于中偏右的保守国家,强调低福利、崇尚自我奋斗,德国对比美国的优劣势如下:

优势:

  • 福利好:医疗、教育都是免费,德国的医院是没有收费窗口的,并且只要一个人交医保,全家人都可以免费看病,美国的医疗和教育贵的离谱。
  • 假期多:除法定节假日外,入职就有28天年假,足够环游欧洲了。
  • Work Life Balance:工作时间一般9-5-5,严格的8小时工作制,周五一般大家都四点走了,oncall的话2-3个月轮一次,oncall是要给钱的,在美国oncall不会给钱
  • 稳定:德国合同都是终身制的,解除合同需要上法庭等等很麻烦,所以不会有PIP
  • 生活成本低:主要是房租低,柏林合租的话500欧左右,单人studio 700左右,是旧金山湾区的三分之一
  • 旅行:欧洲旅行太方便了,春天可以去巴黎郊游,夏天可以去挪威自驾,秋天可以去罗马希腊,冬天可以去阿尔卑斯山滑雪,各个国家之间火车、自驾都很方便,廉价航空经常几十欧元的票价,飞行时间不会超过两个小时
  • 永居:同澳加新不同的是,德国并不是移民国家,买房是不能拿永居的,职业移民持有欧盟蓝卡,德语达到B1水平,21个月就可以拿永居,蓝卡的申请条件也不算苛刻,主要是学历、收入和行业要求,如果你在Amazon或者Google肯定满足要求,最重要的是德国永居没有所谓的「移民监」

劣势:

  • 薪资比美国低
  • 税比美国高,将近40%
  • 职业发展没有美国好,在柏林L6基本到头了,美国的话可以冲刺L7等更高的职位
  • 跳槽机会比美国少,德国pay比较好的就是Amazon和Google,本土的科技公司都不太行
  • 德语比英语难得的多

未来计划

短期的计划是在欧洲待1-2年然后去美国,长期的计划是回国,顺利立个FLAG:

  • 环游欧洲所有国家
  • 写一本我所理解的解读欧洲史的书,争取能出版中英文两个版本
  • 德语达到B1水平

欢迎关注我的微博和INS,我会经常分享我在欧洲的见闻

  • 微博:FrancisChiangDev
  • INS: francis.jjk

面试会问什么

面试内容一般分为三类,数据结构和算法(Coding)、系统设计(System Design)和行为面试(Behavior Question),算法决定是否录用,系统设计决定职级。

应聘流程

科技公司面试流程都差不多,主要分三步简历筛选、电面、最后Onsite ( 现场面试 ),Onsite的机酒公司会报销,一般是一个上午或者一个下午,一共五轮,三轮算法+一轮系统设计+一轮行为面试,每轮45分钟,通过面试后会开始谈薪水、接受offer后开始背景调查、办理工作签证和移民相关(如果有家属,可以全家一并办理),最后onboarding。

如何练习英语

我四年前考过一次托福,总分104其中口语25,英文基础还算不错,平常看美剧听CNN也没什么问题,我学习英语有几个小tips可以分享给大家:

  • 学习一门语言其实就是背单词,单词背到1万,听力和口语都会有不小的提升,推荐用扇贝单词App来背单词,随便选一门托福的单词书就可以。
  • Youtube上有几个学英文的频道真的很不错,推荐这个 Maaaxter English
  • 提升口语的话没什么办法,只有多练习,可以找朋友模拟面试,如果你需要专业真实的面试体验,也可以和我约时间来一场模拟面试:
Mock Interview with Francis - Francis Chiangcalendly.com图标

如何拿到面试

从我个人的经验来看,找朋友内推是最好的方式,我所有的面试都是找的学长内推,Google如果内推的话,还可以skip电面,可以上Linkedin上找学长学姐内推,如果你对AWS感兴趣的,可以发简历到我邮箱,请附带一段英文自我介绍和职位id,职位可以上AWS Career上搜索。

简历

内推不一定保证会有面试,主要还是看你的工作经历跟职位是否匹配,这个时候一份好的简历将会大有帮助,推荐一本书《The Google Resume》

算法面试

我的整体观感是这次面试比起三年前校招的时候,明显感觉到难多了,主要是行业内卷的厉害,leetcode从当年的200题到现在已经1400+,线段树、最小生成树、Morris Traverse这些以前的高级算法如今也沦为了电面题,A * 算法、二分图、三维DP这些难题我在面试中也都遇到过,并且这些都不是我遇到过最难的。

推荐大家一个写的很好的博客

labuladong的算法小抄labuladong.gitbook.io图标

我比较喜欢总结,我把我的题型总结放在Google Driver上了,有需要的也可以看下

题型总结drive.google.com

一点小tips是量变会导致质变,我在500题之前,每次周赛只能解三题,刷到700+以后,基本上能稳定在前100-200名AK,不过最重要的其实是运气 : )

系统设计面试

推荐两本书《Grokking the System Design Interview》用来入门,讲的内容都偏浅,第二本《Designing Data‑Intensive Applications》由浅入深,讲的非常好。

行为面试

行为面试(Behavior Question)最初是Amazon引入,现在Google和Facebook等各大科技公司都会有专门的一轮考察, 面试的形式的是面试官抛出一个问题,你要结合日常的工作经历用故事的形式说明,比如:

Describe a long-term project that you managed. How did you keep everything moving along in a timely manner?

可以在Youtube上搜索Dan Croitor, 他的讲解非常清楚了。

我的经验是这些故事你现场想是肯定来不及的,要针对每一条领导力准则提前准备好至少两个故事,便于临时切换。

薪资谈判

FAANG的薪资组成一般是base salary(基本工资)+RSU(股票分四年vest)+sign on(签字费)+relocation(搬家费),首选需要明确的是HR给出的初始offer本身就不是最高的数字,一般都留有谈判空间,所以不管offer如何,你都不要第一时间答应,这个时候如果你手上有多个offer,那就直接跟HR说,让他match你手上的最高offer,这种一般是最好谈的,如果你没有多个offer,那么也可以拖着,用各种合理的理由(比如长途搬家)要求加钱,其次,base一般很难谈,股票相对来说比较好谈,你需要记住两点:

  • 公司为了招聘你已经付出了很大的成本,绝对不会因为你要价过高而取消offer,当然你也不要太过分的去要,推荐一个网站levels.fyi,可以查到每个级别对应的薪资水平,做到心理有数就好
  • 自古以来的谈判都是谁先摊牌谁就输了,不到最后千万不要跟HR说给我这个数字我就签了,等她开口

FAQ

Q: 面试是中文还是英文?

A: 英文

Q: Google的Hiring Committee是怎么回事?

A: 面试结束后,HR会收集每轮面试官的反馈,提交给Hiring Committee决定是否发offer,Hiring Committee是由Google资深的工程师组成,HC通过率我个人感觉跟headcount也有点关系

Q: Google的team match是怎么回事?

A: Google是全球general hire,也就是你可以在全球任意office面试,通过面试后team match全世界所有的office(美国除外,还是H1B的问题),onsite的话一般去你所在地区最近的一个office,我是在上海面的,team match主要是和Hiring Manager聊天,看看互相是否匹配,team match的时间一般在1-3个月左右

Q:offer最长可以保留多久?

A: 一年

Q: 这些公司大致面试难度是怎么样的?

A: 我的体验是Google是最难的,Google几乎没有leetcode原题,他们公司内部有自己的题库,很多都是工程师自己想的,Facebook面试大部分是leetcode原题,但是一般要求一轮做两道,对速度有要求,Amazon的题库也比较大,难度方差也不好确定,我的第一轮是常规的DFS,但是到bar raiser这一轮给我出了一道三维DP,所以完全看运气吧,微软的题目中规中矩

Q:为什么我题目都做出来了还是挂了?

A:这个问题我也想问Google….开玩笑哈哈,其实面试最核心的还是交流,不只是蒙头做题,一道题往往有很多解法,你的解法是不是最优的,即使是最优解也可能有多做写法,比如一般DP的题都能用DFS+Memo解,你有提前跟面试官沟通好他想要哪一种吗?面试的过程中,要不断的跟面试官讲你的思路,不要一个劲的自己在那儿写,不然很容易被当成是在背题,如果你觉得你的表现都没有问题最后还是挂了,那很可能是面试官当天心情不好: )

Q:我每天修福报根本没时间刷题怎么办?

A:我每天晚上十一点到家,刷到两点

模拟面试

模拟面试真的挺有用的,我建议在真实面试之前至少模拟面试1-2次,如果有条件请找FAANG在职员工Mock,对方提供的feedback也会更精准,如果你找不到人,也可以找我来Mock

Mock Interview with Francis - Francis Chiangcalendly.com图标

为什么要换工作

很多人都问过我这个问题,包括我的爸妈,因为在他们眼里我的生活已经非常舒适了,年纪轻轻就进入阿里这样的大公司工作,拿着远比同龄人高的薪水,又在很早的时候在杭州买了房,几乎没什么房贷或者其他的经济压力,为什么要换工作呢?在国内互联网蓬勃发展的今天,又为什么要出国工作呢?

早些时候我读过罗素的《The Conquest of Happiness》,里面提到了「快乐主义者」和「道德家」的概念,假如一个孩子落水,你不假思索的跳水救人,那么你就是一个「快乐主义者」,如果你脑子里第一时间冒出来的是,我受到的教育让我必须去救他,那么你就是一个「道德家」,虽然最后都是救人,但是动机却截然不同,一旦我们对我们自身以外的人或事产生了真正的兴趣,隐含在自我克制中的自己与世界的对立就会消失,谈论到工作时亦是如此,你是为了生计,还是发自内心的喜欢这份工作?

对于我来说钱虽然很重要,但是并不是最重要的,跟我一届进入阿里的,差不多有一半的同学年薪已经超过百万,另外一半去拼多多的同学比这更多,但是他们真的开心吗?在阿里这么多年,能真正称得上工作开心的,我只认识一个,其他人不过是捏着鼻子赚钱罢了。钱能带来的快乐是有阈值的,一当超过这个阈值,大部分的消费习惯并不会突然改变,那么钱能带给你的快乐就很小很小了。

那对一件事真正感兴趣究竟是一种什么感觉?我想大概就是精疲力尽以后,一想到还是能够兴奋不已、依然还是想去做的事情吧,研究新技术和不停的旅行依然是我热爱的,所以我才做出来这个决定,这个决定可能是对的,也可能是错的,但是不去试试怎么知道答案呢? 最后引用一段对我启发很大的一段话(来源 https://byvoid.com/zht/blog/4-years-at-google-4):

许多顺风顺水的人在某个时候都会陷入路径依赖——尽管每个局部选择可能都是最优的,但最终归于普通。这就像贪心算法的问题——取决于初值,沿着梯度优化最终只能得到局部最优解。这相当于最终能达到的高度在一开始就被决定了。

破解这种局面的算法之一是模拟退火。模拟退火算法的理念是在初期引入随机性,随着迭代次数的增加而减小随机因子,这样最终收敛到全局最优解的机率更大。跟随这个理念来考虑职业的选择,我决定跳出现有的路径,哪怕是这个路径的前方一片光明,现在只是为了体验不同的选择。
编辑于 06-02

文章被以下专栏收录