脸书成功上岸经历和面试准备心得

avatar 305437
aaaaaking
19909
42
LZ是在2019成功跳槽FB的,准备面试的时候我没少在地里各种看面经和心得。在此分享下我的面试准备经历,希望我的经历能给跨入2021还在找工作的各种兄弟姐妹们打打气。

说说我的背景,LZ是前100学校毕业的的小硕。毕业后直接拿了实习小公司A的return offer,毕业的时候只想着赶快找个公司申请到H1B求稳,压根没想什么刷题上岸啥的。在公司A呆了2年多感觉自己所在的部门的经营状况每况愈下,senior纷纷走人。LZ感觉这个部门随时可能会被砍掉,于是楼主开始第一次跳槽。第一次跳槽楼主一共就准备了一两个月,刷了50题左右,自知实力完全不够FLAG(尝试了狗家电面毫无悬念的挂了),考虑到所在部分摇摇欲坠的现状,快速的找了个小startup入职以确保H1B身份无忧。然后在startup一晃就是三年多,2到3年后感觉职业发展到了瓶颈期,于是准备刷题走人。这次由于公司状况比较稳定,所以我准备了很长的时间(前后历时能有一年半),一方面是由于不急着跳槽,LZ又比较懒,前期刷题常常三天打鱼两天晒网。另一方面可能是之前刷题基础几乎没有,刷题所花时间也确确实实超出我预料之外。
关于刷题:
  • 这是面试准备最花时间的一项,尤其对刷题基础薄弱的LZ来说,当时毕业求稳拿return offer跳过刷题阶段的债还是要还的。一开始LZ天真的制定各种计划,比如今晚搞定3道medium,明晚搞定2道hard,结果是有时候一道medium搞一个晚上,一个hard要两个晚上才能搞定。准备过程中不断怀疑是不是LZ智商的碰到了天花板。刷着刷着,慢慢发现量变确实会导致质变,慢慢的LZ就从一道medium都要改10几次才能过leetcode compiler变成了一两遍就过。LZ前前后后一共刷了500到题,每道题刷了至少两遍。高频面经题偶尔刷个3到4遍。
  • 我的刷题方法也很简单,第一遍按照题目类型刷,找同类的高频题,从简单的linkedlist,map,two pointer 开始,在短时间强化对同一类型题目的解题技巧,陆陆续续刷够500题;第二遍就按照公司刷,由于LZ地处Boston地区,可选的上岸公司只有少数公司,例如🐶,脸,亚麻。所以我基本就是找这3家公司的高频题,陆陆续续的也刷了500多。
  • 由于LZ的dream company是狗,所以google高频题刷的稍微多一点,google也是刷的最痛苦的,LZ觉得至少有1/3的时间是花在了不少只有狗才考的hard题目上。狗的hard题不仅多,而且很多难度独一档,NP-complete都不罕见,不少狗的hard题是看答案也要看很久才能搞懂(LC大神们太强了,哎!)哪怕LZ到了快onsite的时候,看到部分狗的面经题还是发虚。不过后来onsite运气好,一道类似的hard都没碰到:)
  • 关于面经和高频题,这里很感谢地里兄弟的无私奉献,最后onsite的时候还是遇到了好几道面经题/高频题,虽然基本都是变种,但是解法万变不离其中,onsite前两三周把公司的面经高频题过一遍还是很有必要的。
  • 关于编程语言,LZ刷题用的是Python。LZ跳槽前在日常工作中主要用的语言是Go和Javascript,LZ一开始想用JS刷题,毕竟用的广容易懂,不过刷了几道发现JS对各种data structure的支持不是很全(也可能是LZ没研究透,LZ写JS主要是前端用,没用过node),感觉有点别扭,如是就放弃了。对于Go楼主是有些犹豫对,虽然Go是狗家出版的语言,不过在业界普及度远不如Python,LZ不太想面试的时候还有可能得向面试官解释语言的基本用法。于是LZ就偷懒用了Python,主要是看上了Python上手简单,写得快,普及率高的特点。
  • LZ刷题全靠leetcode。一开始LZ自己想,实在想不出来了就看答案,然后就自己实现。这里没有捷径,就是持之以恒。久而久之就从easy/medium也花一个多小时要submit10+次才能bug free的水平变成了大部分medium15-20分钟一两次搞定接近bug free的水平。


关于系统设计:

  • 这个是面试的第二难点,LZ一开始也不知道该怎么准备,毕竟系统设计没法像刷题一样轻松的验证结果正确与否。LZ日常工作中也没有接触到全面的设计distribute system之类的东西。最后通过上网看各路网友经验的问朋友经验。
  • 关于Grokking the System Design Interview课程,上完了课之后,LZ还是有些虚,感觉课上的例子可能还不够应付面试,同时也希望看看对同样的题目会不会有不同的解法,(毕竟系统面试题,同样的设计,一两个需求的变化可能导致完全不同的系统构架)楼主就购买了这个课程进行研读,增加知识储备。
  • 关于Designing Data-Intensive Applications,这本书也是朋友推荐的,这本书读完了LZ也是收益匪浅,如果说前面两项是让LZ系统设计入了门,知道了很多解题常用知识点,这本书则是把这些知识点系统化,把点连成了线,最后组成一个整体。LZ大概全部浏览了一遍,这本书讨论了data 系统设计的方方面面(data其实也是大部分系统设计题的核心,怎么存储,怎么调用等等),以及他们的trade off和各方面的区别。看完之后对于各种不同architecture的选择有了更深入的认识,而且还运用到了以后工作中。


关于behavioral interview:
  • 这个一律按照亚麻的强度来准备!各位都知道亚麻对Behavioral的重视程度,以及著名的十四条。准备好了亚麻的behavioral基本就能应付其他的公司的。
  • LZ基本就看地里对behavioral question的总结,每个题准备两三个不同的例子,同时针对亚麻的十四条每条准备两三个例子,之后自己说一遍,有时候还让老婆帮忙问问题然后评价我的回答。


最后LZ在2019上半年找了朋友内推狗家,同时有FB和亚麻有recruiter主动联系,LZ感觉也准备的差不多了,就安排了phone screen,全是easy/medium题轻松搞定。之后LZ听说狗家面试后出offer出得很慢,所以就6月安排了狗家的onsite(后来证明确实如此),7月先后安排了亚麻和脸书onsite。亚麻还很奇葩的让我飞去Seattle面试,明明boston地区有好几个大site好伐!?就当作免费旅游一趟。6月狗家onsite运气好没碰到啥特别难的题,面完不久知道过了HC欣喜若狂!感觉一只脚已经踏入了dream company!之后去面试亚麻和脸书感觉底气足多了!7月份飞去seattle面试亚麻,结果挂了,给的feedback是technically strong不过culture wise not fit。。。看来LZ十四条理解的不够。不过好在脸书给了LZ口头offer,剩下就是狗和脸二选一。LZ一开始必然是倾向于狗家的,毕竟dream company,而且脸书一直wlb风评不好。可惜LZ和狗家缘分不够,LZ过了HC后,狗家的team match流程历时两个多月,面谈了好几个组,其中LZ最喜欢的组没看上LZ,最后match上了一个LZ不是特别感兴趣的组(当时LZ也没时间继续耗下去了,脸书offer都出了,感觉按照狗家team match的速度,选到喜欢的组遥遥无期)。同时,在offer negotiate的时候,也明显感觉到脸书更豪爽一些,会希望能beat狗家,相反狗家考虑仅仅是match上脸书,再三考虑之下还是拒绝了dream company,选择了脸书。现在LZ呆了一年多,并不后悔当初的选择:)

以上就是LZ准备面试的经验和面试经历,希望能对还在找工作的小伙伴们有所帮助!
  • 261
42条回复