3年工作经验CS在职跳槽-从头准备并安排时间拿下多个offer

来自其他站点
新的一年开始了,我想对自己在职跳槽的整个准备过程做一个总结。一是总结经验以备不时之需,二是地里大部分是针对一个公司的经验贴,很少涉及到时间规划和前期准备。楼主也不是地里拿到无数offer的牛人,折腾半天就拿了3个offer。所以经验仅供参考,能给大家一点儿启发就更好了。大牛们就当个乐子看吧。

1 背景
先说我的背景,楼主不是大牛,在湾区可谓平平无奇,面试过程基本就是3分运气3分努力3分智商1分机缘。楼主985毕业,转专业来美国一所top30读的CS硕士。毕业后去了一个三线小厂,工作3年,好不容易升了L4。疫情期间公司前景不好有组被裁,楼主终于感到危机决定跳槽。

项目:楼主升职虽慢但毕竟小厂,其实scope干的颇大,一直在带项目+top performer,所以简历上项目还是很亮点的。L4没毛病,L5基本没戏,有些小奖和突出业绩那种。
刷题:刷题水平来自new grad时期的老底儿,当年大概刷了400-600题上岸,leetcode竞赛3题左右水平。但3年过去,一题未碰,手生,还准备换语言到python,一上来刷题感觉想\"回到过去”,以及恨我当年不知总结。
系统设计:楼主scope虽大,但全是machine Learning算法层,和distributed system完全无关,唯一能用上的是MySQL。系统设计水平直接5分,然而满分100分。
行为面试:楼主英语很差,但胜在面儿上能撑住,情商还可以,带项目前到PM后到另组技术骨干,大到skip manager小到intern,全都有点儿故事和心得。所以楼主属于有故事,面试偶尔还可以自由发挥吹一吹的水平。至于英语问题,只要我不尴尬,别人就比我尴尬😭。
时间: 楼主工作繁忙,常常加班,且一下班就想睡觉。地里有人能在职一天刷8小时,楼主没面试一天1小时都不一定能坚持😭。
面试:楼主面了大概7家,挂了一个VO,挂了一个店面,3个offer,其中2个都超想去能搞得起包裹compete,所以后面还有2个VO就cancel了。

2 刷题相关:
4-8月:陆陆续续开始刷题,大概一周刷10-20道。参加leetcode竞赛,大概水平稳定回3题水平。楼主主要还是在刷leetcode前200题,因为这是我new grad时期刷过并且按tag总结过的经典题,刷一遍有利于恢复以往的记忆。
我个人认为刷得精比刷得多重要,经典题刷出个人模版和风格是刷题核心能力高压和时间限制下完成leetcode竞赛是面试核心能力。这个准备时间大家可以自行缩短,楼主当时确实松懈。

9-10月:疯狂刷面经,大概一周50-200道,全看面试公司有多少面经。毕竟deadline就是第一生产力。Leetcode竞赛大概一半3一半4。事实上根据我和周围人的经验,这个水平再加上刷足了面经,已经可以参加大部分一线厂的面试了。时间上基本Hard30-40分钟,Medium差不多15-20分钟。当然还有个面试经验的问题,但有工作经验的朋友大多有面试经历,这就不做赘述了。另外这个时期,每次面试前,楼主会过一遍5-10道很容易bug的面经题,并且3句话总结算法,这时候练习的是卡时间描述题目以及bugfree的能力。很多朋友都是输在这里了,但据楼主观测,刷面经顺便注意一下描述和bug,基本可以临时抱佛脚练起来。

3 系统设计:
8月:刷基础知识。楼主太菜,一开始看系统设计题,到处都是不懂的专业名词。所以先看的基础知识,系统设计题就是粗略一扫看关键词,然后继续把不会的关键词拿出来看它的相关信息。
资料包括educative.io 和 github.com

9月:刷题目 + 核心论文。看多了基础和上面资料,会发现其实上面资料都是入门级,离面试级还差着远。
这时间楼主开始按经典题看油管,总结各个视频优缺点,慢慢有自己的思路。
同时还按经典题去看国内的blog和核心论文。国内尤其是大规模秒杀构架,讲的极复杂重视技术且用户量巨大,看完视野会开阔很多。别人的视频再精彩,都是别人吃剩的还不知道对错,论文有时候能带确定感和更多的细节知识。
楼主还去上过国内公开课,类似微服务架构马士兵那种,连续半夜5点爬起来去听。但从抽象概念走到一个具体的技术构架,学习方式可能更适合中国人,楼主觉得很值。

10月:总结知识体系和面经题话术。楼主最后面了系统设计的全过了,算是短板至少补到能装水了。这里还是要提个个人面试理解问题。系统面试的核心其实是探讨工程问题,因为深度和广度差别很大,准备过的面经还是会被面试官抓住一个小细节dive deep到未知领域。所以学会把话题侧重到自己擅长的领域。比如楼主擅长算法和大数据,会引导面试官一起讨论这种算法设计,无限followup,哪里能用上大数据随时要加上一句。遇到自己不太擅长的NoSQL领域,楼主就会实话实话自己没有用过,但理论上我知道哪些,在这里应该可以用什么。另一个核心是要学会做一个真的在设计的工程师,用户体量QPS,核心需求,工程上的tradeoff,虽然是小细节,但能一直注意到这些的,很容易让人明白你是有工程思维的。

4 BQ:
9月:时代不同了,基本每个公司都要面BQ。每面一次,我就面前准备一次。非常神奇的是,楼主亚麻feedback反倒是BQ比算法好,真的很难为面试官能听着我蹩脚的英文,理解我说的是什么了。
第一次面亚麻,楼主准备了2-3天,之后的面试准备大概2小时。因为亚麻是市场公认BQ最难,所以重点是了解一下其他公司的核心价值观和亚麻有什么不同,剩下按亚麻准备。所以BQ准备耗时不长。但以我多次mock别人的经验,BQ的准备时间,和你简历实力成反比。项目经历丰富,BQ只要准备核心优点和公司的价值观匹配。项目经历不丰富,就要花1-2周时间甚至更长,重新梳理项目,看看能不能多抓一些优点,甚至从别人那个参考一下。而且BQ mock很重要很重要,找BQ大牛mock,或者听BQ大牛mock,是提升BQ最快的方法。
另外常常有人忽略面试闲聊和礼仪问题,因为楼主英文渣,一紧张还结巴,每次面试前都准备了自我介绍/礼貌用语/结束用语/闲聊模式/最后问面试官的问题的小本本。BQ还有一些重点话术提前有写下来。

5 面试相关:
8-9月:简历准备
9-10月:寻找面试
9-11月初:面试中
11月: offer谈判+敲定

5.1 找有工作经验和面试经验的学长修改简历:8月份,请教了两位10年+manager帮忙看简历,和大部分人会犯的错误一样,楼主花两个晚上认真把new grad时期简历改了改,就交上去给别人review了。结果自然是非常差,被人从头批到尾。往大了讲,完全没有L4的scope,还抓着一些小feature小技术在描述,往小了讲,语言能力完全不professional。往风格上讲,完全不懂得如何sell yourself。注意如果大家要让别人review简历,最好找比自己级别高1-2级的。New grad找New grad review,基本效果只剩相互安慰。谁也不好多说谁啊。

5.2 简历Scope:8月中,楼主痛定思痛,重写简历,这次注意从项目和全局角度思考,有business insight,还有一定要写出个人的影响力。比如提高了多少QPS,获奖专利paper,模型给公司节省多少利润,项目是为了公司什么核心业务,增加了多少用户,top performer,lead,都速度堆上。思路从刚入门实现feature的码农,改成要向大老板汇报项目优秀程度的lead,当然核心还是汇报你自己有多么优秀。

5.3 简历语言+格式:8月中,楼主改完scope后,加了一个附加2页简历版。然后在网上找了2家专业技术行业HR帮忙修改简历+cover letter+linkedin(就地里的Fiverr)。要求就是删减2页到1页,润色语言,同时加入关键词,改简历模版到专业模版。另外楼主软实力有lead项目,电话沟通时HR觉得可以加上一些(楼主自己实在不好意思写)。2家修改完后,楼主自行合并各自描述优点,整理成最终版简历,并且不同岗位有些侧重,还整理了cover letter和linkedin profile。

5.4 寻找面试Linkedin:9月初,楼主整理好简历+linkedin。效果非常明显,Linkedin的recruiter访问量直接加倍了,喜欢的厂的HR也出现了。当然楼主connection大概3000,而且陆陆续续加了很多大公司HR。期间主动来找的公司有Apple,Amazon(太多组了),Adobe,Airbnb,Microsoft,…,还有国内公司+猎头,各种startup。
我的建议是,时间有限,注意筛选和安排好面试。职位+地点很重要,有的和HR一聊你就知道没戏,不必花太多期待在上面。有的HR其实是第三方或者招contractor或绿卡,你约电话一聊便知。国内公司如果有想法,大厂直属HR比猎头有价值的多。
但无论有几家联系你的,不要骄傲,因为有工作经验的,都这个水平,印度朋友会经营linkedin的,机会比你想象的更多。所以注意社交礼仪。有HR联系你,1小时之内速度回复,喜欢的公司最好秒答,快速敲定第一次HR call时间。回答内容要专业,附带简历,而且记得对HR的公司进行全方位夸赞,给HR一种你确实有可能来的感觉很重要。比如亚麻HR来找你,请表达出对宇宙第一司的肯定和优秀产品的认可。即使你心里想着是他们家PIP太厉害不太想去。
另外Amazon是家大公司,所以组多招人多,要自行筛选想去的组,有两个组都喜欢不要慌,可以找HR商量一起面。

5.5 Linkedin海投:9月-10月,楼主同时投了几家公司,主要靠每天观察linkedin job alert,有心仪的公司心仪的岗位,第一时间改一下简历+cover letter投出去。因为就投了几家,投的全是第一时间,匹配的岗,所以基本50%有回响。注意海投时限很重要,刚发出去的招聘岗位,自然对简历筛选要松。这时期拿到的面试是Snapchat,Uber, …。另外这种职位多少是组面,基本7天筛简历,之后流程有极快也有极慢,建议第一次HR call就问明明白白,否则安排不好时间。而且HR call和面试的时候,千万记得对组和职位表达出兴趣,毕竟组招。

5.6 内推:9月初,楼主拿到几个面试后,开始找人内推dream company。很明显,Google和FB HR是不会主动来找你的,除非你之前有面试或在他们系统里,而且他们流程很慢完全掌控不住。所以在楼主开始敲定好第一次店面时间的时候,请朋友做了内推。然而众所周知,FB L4没有headcount已久,最后还是没内推,只推了Google。我运气极好,内推很快被人联系,还遇到了一个干事儿非常靠谱的HR,还在期间拿到了别家offer很多VO催HR,但从内推到HR call到onsite,楼主用了2个月。从VO到拿到offer又用了2个星期,单说2个星期是因为楼主team match的飞快,纯运气,事实上基本不现实,平均水平大概要3-6个星期。所以时间上,谷歌至少需要2.5-4个月,而大部分其他家1-2.5个月。
楼主还内推了字节,然而当时是字节最艰难的时期,HR call完就毫无回音了。

5.7 面试时间安排:
楼主在职,最多每周安排2个面试其中一个是店面,否则请不了假。基本店面前把该公司面经刷完(除了谷歌根本不可能刷完)。前期VO各有侧重,尤其亚麻练BQ,谷歌练算法,过完亚麻和谷歌后,算法和BQ都是浮云了,别的公司主攻VO系统设计还有background knowledge。
建议大家系统设计或者算法,最好整个所有面试开始前就至少准备好一项。否则后续每场VO都很难抉择。楼主算法还可以,所以一周2个面试,基本能准备得过来。

5.8 Timeline + Offer谈判:
和HR交流是个技术活儿。
对HR问其他公司timeline,楼主的做法是如果有同级别公司的面试,如实讲,但如果你拿了哪家offer就肯定不来这家这种,还是要考虑清楚讲不讲。并且HR call前就有准备一些面试时间规划,对HR公司和组的看好话术。HR call中,记得详细询问整个公司面试流程和大约时间。
包裹谈判更是个技术活儿,楼主谈包裹都没有出writtern offer。但因为前面讲其他公司timeline的时候,已经如实和HR都交代了,所以也没有HR不相信我。谈offer前地里的包裹数字楼主基本摸清,面试feedback也大概了解,所以一般踩着底线和别的包裹加数字。但这里楼主建议,包裹谈判最大的砝码,一定是你有不来这家公司的底气,如果没有,请谨慎。

感谢大家能看楼主唠叨到这里,有大米的请捧个场,有面试经验的可以在下面多多分享,集思广益,取长补短。希望疫情赶紧结束,大家工作顺利,生活开心。

补充内容 (2021-1-19 09:14):
关于面经:取决于公司,谷歌地里面经大多超难,主要看LC半年tag,其他厂题目不多是综合地里+LC,OA则是看地里+LC Discuss。楼主刷面经不是完全做题,因为时间不够+面试紧张,都是把面经答案按tag整理成文档就好。

补充内容 (2021-1-19 09:17):
50面经:主要训练的是遇新题有思路,所以快速扫题。一档是很难实现/思路复杂=>记下题号认真做,一档是好实现/思路绕=>对着答案重写代码或者描述思路,最后一档是做过/好实现/一看就会=>随便扫一眼题解。

补充内容 (2021-1-19 09:27):
Linkedin:大量加高质量的朋友+大厂HR。注意印度朋友一般更active要多学习。Open to work随时可开,没有HR看时效。同时有些HR会在linkedin上post岗位让人发评论简历,可以多关注并点赞以传递给你1-3rd关系网。
54条回复