分享下在职面试经验以及offer compete心得

最近结束了换工作,分享一下历程和经验,回馈论坛。长文慎入,希望本文对以下的童鞋们有帮助:

  1. 在职换工作,工作经验4-5年,介于SWE和Senior SWE之间,希望拿到心仪level;
  2. 准备+面试希望在2-3个月内完成;
  3. 创业公司换大公司;
  4. 不知如何处理国内工作经验;

先介绍一下背景和整体情况:
楼主国内创业3年,然后来到美国master读书1年,毕业后2年湾区创业公司工作经验。考虑到绿卡等各方面原因,今年5月到7月遍历式面试了南湾几个大公司,拿到了FLAGU,VMware,Atlassian,Confluent的offer。最终楼主也compete到了心仪的level和薪水。Offer基本情况为:Level 5, 38W。

两年半前找工作时大概刷了200道LC题目,然后就再也没有刷题。这次计划换工作时看到LC已经1000+,目前的创业公司的工作经验和主流的system design题目要求也没有太大相关性,内心是崩溃的。。。考虑到楼主背景稍微复杂一些,各个公司对工作年数的认定不尽相同,所以对具体level也拿捏不准。但是经过精心准备,最终也得到了比较理想的结果。希望这些准备经验对大家有帮助!

一、准备篇
先列举一下本阶段对算法面试最有用的资料:

  1. LC 会员1000+题目刷不完,只能刷公司tag高频了…
  2. 论坛里大家对面经的讨论,主要是通过大家对面经的讨论把握一下刷题方向;

刚开始准备时,楼主的策略就是“遍历式面试,以扩大命中率;无法遍历式刷题只能遍历式刷题目类型,因为题目真的是刷不完。。。”

第一个阶段:
楼主PTO两周,躲在图书馆8:00AM - 4:30PM集中刷题。秉承以上策略,第一天就把题目分为DP, String, Graph, Tree, LinkedList等类型,两周内要把所有类型遍历掉。楼主的方法是每个类型随机选择10题,完成并背诵全文。晚上的时间几乎都用来重新研究白天做过的题目,牢记解题思路。这样两周后心里稍微踏实了一些,碰到新的题目不会再一筹莫展,至少知道解题方向了。

第二个阶段:
PTO封闭结束后,在公司边工作边刷题是很痛苦的阶段。在公司只能扮做鹌鹑,作为曾经积极向上的青年,内心压力很大,请边工作边面试的同志们一定坚守住最初的梦想!楼主的作息是早晨8点到10点集中刷题,在公司上下午抽空想想早晨的题目解题思路。晚上饭后7点到10点30继续刷题。

以上两个阶段加起来共一个月整。此阶段只刷题,完成题目大概200+, 目标就是遍历所有算法类型,要达到碰到新的题目虽然不一定能做出来,但是一定能想出来解题方向;碰到做过的题目无bug复读。接下来就需要实战练手,锻炼communication skills(非常重要!!!),积攒实战经验。

此阶段并未准备任何system design,楼主system design是从下阶段开始准备。
转入面试篇。

二、电面阶段
老规矩先说心得经验:
算法面试:

  1. 【重要经验】集中刷论坛里面经,跪谢论坛里的面试经验分享!
  2. communication skills:
    a) 碰到华人,楼主经验是不需要太多废话,第一目标是迅速给出最优解(最起码也要解出题目!!);
    b) 碰到欧美,楼主经验是一定要多废话,第一目标是秀出你的解题思路;
    c) 碰到印度童鞋,楼主的经验也是多废话,秀出你的解题思路(此类型经验不多,希望不要误导大家);

System design资料:

  1. 主要靠Youtube Gaurav Sen, Tech Dummies - Narendra L, Tushar Roy视频讲解。作为入门材料真的非常不错,也真心希望国人大牛多出来分享;
  2. 各公司Engineering blog有空读一读;

楼主先选择了一些不想去的小公司练手,方式是试用linkedin premium account(一个月免费,此时正好派上用场!)search找同学内推或者直接Pitch HR。因为楼主目前在一个创业公司,楼主精心准备了一段PS,吹嘘了一下目前的公司和自己。基本上联系的公司都拿到了电面资格。准备的PS里特别强调了5年的工作经验,虽然其中3年是在国内且是创业公司且没怎么写过代码…否则HR看到2年美帝工作经验,可能直接就按new grads处理了…

电面第一个阶段:
楼主先面了六七家中小公司,适应电面环境,耗时大概一周多。电面几家后,楼主发现电面的大概率碰到面经和LC各大公司高频题!

电面第二个阶段:
经过第一阶段,心里有底后,楼主开始内推并面试目标公司。

针对于算法电面,除了一定要看一看面经和高频题外。楼主想特别强调3个问题:

  1. communication skills,就是以上总结的碰到华人、欧美、印度面试官的经验。楼主挂掉的两个电面都是华人面试官,楼主自己分析是因为话太多,最终时间不够并未给出最优解。而后楼主自己也反思了一下,我在目前的公司也是面试candidate的主力,其实自己碰到华人candidate时也总是会不经意的把bar提的高一些,因为知道对方一定刷过题,所以期望就更高一些。而对欧美candidate反而比较宽容… 这个是不是咱们自己把自己作死了呢? :frowning:
  2. 认真和recruiter沟通,“秀出你的实力”,很多大公司的面试环节是可以跳过的… recruit有权利让你直接进入onsite… 楼主G家就跳过了电面;
  3. 认真反思,补差补缺,楼主因为DP挂了一个公司,当天发愤图强,集中补充了十几个DP题目,重新复习了背包问题…

楼主此时开始准备System design。每天利用晚上的时间看以上列举的几位印度童鞋的视频,白天则在公司里看一看各个大公司的Engineering blog。针对System design,楼主真心觉得很难准备,因为考的是整体实力。能给出的建议就是:

  1. 印度童鞋的视频和上文提到的slides基本上涵盖了system design的方向,能够帮助你了解system design的面试方向,避免在面试时听到题目后头脑一片空白;
  2. 几个典型的设计题目,比如messager system, twitter design, distributed KV store 一定要自己把系统框图画一遍,朗读并背诵全文;
  3. 补充自己的薄弱环节,比如楼主很久不用DB了,sql syntax都几乎忘记,就认真补了补;

整个电面持续了3周,大概面试了20家。刚开始会挂掉一些,后面就会越来越顺手。也是给onsite打气的过程!

说回到心态,边工作边面试的童鞋估计需要在公司进行电面。楼主当时的calendar非常恐怖,基本每天1-2个电面和1-2个HR call,加上公司的meeting,calendar密密麻麻全被覆盖。。。楼主给自己打气的口号是:这些算法题,30行内必有解,没有一行是垃圾code,还不用写注释,比起工作里不需要动脑子的code,不知道高到哪里去了。。。

三、Onsite面试
老规矩先说心得经验:

  1. 手表,很多面试房间都没有时钟,带一个手表偷偷瞅一下本轮还剩多少时间很有用。。。
  2. 算法面试中的communication skill同电面;
  3. system design时的心态:面试官是我的同事,我们一起解决这个设计问题。被面试官challenge时,不要摇摆,如果认为可行就坚持一下并说出自己的理由。因为一是系统构建的问题不是非黑即白,有理有据就可以,二是有很多面试官其实对细节也是一知半解。

每个Onsite都十分耗时,基本上都需要一天,此时就需要做选择了。楼主自己的选择策略是:

  1. 南湾公司,住在南湾,到城里面试都觉得远。。。
  2. 可能会去的公司;
  3. 传言Offer比较高的,用来compete;

第一批非重点目标,用于练手:Confluent, VMware, Atlassian, Amazon
Confluent 是现在比较火热的startup,面试时间非常长,涵盖算法、system design, resume和hehavior。非常锻炼人!
VMware,四轮45min每轮,组内自己面,节省时间好评!每轮穿插算法和简历问题,建议问简历时,尽量的介绍简历里相关的经历。面前HR让申请MTS 3,因为不太想去所以也没有太关心level,面完后因为非常match(楼主认为是resume介绍的内容和team做的非常相似),给了Senior MTS。楼主后来发现貌似FLAG对VMware家的Senior MTS级别很认可,都认为至少是L5和E5的level。所以请大家擦亮双眼,即使不想去虚拟机家,他家的Offer用来compete level是一个很好的选择!毕竟他家面试并不难。。。
Atlassian,4轮半天,节省时间好评!他家面试官质量参差不齐,楼主system design被澳洲大牛小哥虐了,算法时又觉得面试官可能没太跟上我的思路…
Amazon A9,楼主5轮碰到了4轮system design,有一轮设计了两个system。。。不知道自己造了什么孽。。。面完口干舌燥神志不清。不过楼主觉得A9家的面试官对system都有非常深入的理解,可能本身就一直在做各类large scale Ads system。通过面试楼主学习了很多,也算是遍历了一下主要的几个系统设计问题,对System design信心大增。

第二批重点目标:FLAGU,这里的A为AirBnb
关于这几家的面经太多了,简单说下吧:
F,重要事情说三遍:面经面经面经!论坛里有一些合集一定要认真准备,算法一定做出来两道;系统设计也跑不出去面经题目;
L,整个面试环节充满人性关怀,楼主非常enjoy,觉得面试官都非常nice。因为L家是每个org单独面,manager那一轮,建议多说说和对应Org match的项目经验,show出实力和craftsmanship,因为这个manager很可能就在接下来的team match来选你。楼主就是,而且team match时manager给楼主level还加了一级。
G,面试官质量是最高的吧,题目很难预测。楼主建议多和面试官沟通,因为和F家不同的是,G基本上不会有第二个问题,所以有充足时间和面试官沟通。楼主有一个题目show出了从brute force到recursion到DP的思路演进,面试官比我还高兴;
A,重要事情说三遍:面经面经面经。A家算法题目要在线运行,楼主两轮都丢了code,因为网页忽然挂掉,请大家小心。。。如果碰到这个情况,可以argue在面试全部结束后,在原地补时间写code发邮箱。。。另外就是通知楼主10:30到,但是楼主接待处等到10:50才有人来接我,面试体感很不好。不多说了。
U,U家有一个bar raiser,请大家注意,在Bar raiser前show出leadership。楼主面senior,但是最终给SDE II。考虑面试时和要去的team manager聊的很开心,楼主估计挂在bar raiser了。楼主拿其他家Senior去compete,hr说需要加面才可以给senior…

此流程持续近3周。

四、Offer compete
这个阶段楼主觉得如果是遍历式面试,手握很多offer,就要把recruiter当做你的朋友,开诚布公,并秉承以下策略:

  1. 告诉recruiter你手里的offer公司名称,比如G听到已经拿到了LA的offer,F也在途中,直接给一年有效期Offer再team match;
  2. 选择性透露最高的offer的细节,比如用V的级别去谈F级别,让G match L package之类的;
  3. 让对方先报offer细节,然后再去往上compete;如果对方追问,就说“I don’t have a specific number in my mind, I’m open to discuss any competitive offer…”

关于team match,楼主认为这个非常重要,能够助力offer compete,成功在望,一定不能松懈。如果对方manager非常想要你,级别和价格都是可以谈的!楼主的L家就顺利升一级,G家虽没升级也把offer价格match到了高一级别的价格。L家的team match更加科学,永远1v1,楼主match的几个team都主动约了一起吃个饭聊,提前做了功课后,可以聊的很深入。G家因为Candidate和Manager都是1vN,所以比较难聊的深入,但是一样可以准备一些高质量的问题,而不仅仅是“请介绍你的团队,请问你觉得现在你们组的challenge是什么?对新team member的期望。。。”

此流程大概持续2周。


赞 但是为啥要对国人要求高啊 自己千辛万苦走过的路看别人过的轻松些就不平衡的心理要不得

楼主之前并没有意识到这个问题,直到这次反思才意识到自己在做面试官时的确不经意的会把华人的bar放的稍微高一些。。。分享出来是希望大家也能够思考一下。

首先楼主十分希望公司多一些华人,真心不是不平衡的心理。楼主现在所在公司十分多元,做TL和其他group争抢过资源后就会意识到自己人多么的重要。自我剖析觉得这个“不经意的bar提高”来源于担心对方不能survive,毕竟绝大多数国人communication skill竞争不过欧美,只能靠实干。。。

现在反思,这个担心虽有合理性但绝对是多余的。和大家共勉!


请问楼主安排那么紧密:rofl:在办公室面试,怎么才能不被发现呀

楼主现在公司有电话小黑屋,到点提前5分钟拿着电脑去面。不过arrange这么多电面的确比较辛苦,电面前还担心被manager拉过去讨论。偶尔碰到这种情况,楼主只能说有一个scheduled bank agent call需要接一下。。。

最主要的还是心理压力吧,楼主还是很喜欢现在所在的小公司,氛围很好。身在公司,但是觉得自己精神又不属于这个集体了。只能告诉自己坚守“最初梦想”。


请问lz国内的工作经验真的会认可吗?简历是如实写上就行还是需要怎样的润色?

楼主做的润色是突出数据!因为国内即使小公司的数据,比如多少用户、利用xxx技术使得xx提高了xx%按照老美的眼界,都会觉得很厉害。。。
另外楼主和HR沟通时的技巧是:

  1. 自我介绍第一句就是我有5年industry工作经验,避免hr根据最后一个学位毕业时间算工作经验;
  2. 如果问到美国MS degree,就说工作三年后觉得自己对xxx很感兴趣,就gap一年又学习了一下。这一点老美应该比较认同,因为楼主的MS里欧美人全部是有工作经验的;

谢谢分享!另外想问问楼主 commucation skill 有啥youtuber推荐可以练吗

这个楼主还真没刻意训练。想一想,可能过去2年在目前公司做面试官的经验很有帮助。见多了DFS不会写却能和你洋洋洒洒扯半天的老美,收到了熏陶。觉得练习就是可以找个朋友多多mock吧。楼主有几轮leadership behavior提前和家人mock了一下,虽然mock时充满了“尴尬”,但是觉得还是对面试很有帮助。真正面的时候,也可以做到扯leadership blahblah 2h不停下来。。。