2020 年末找工小结

2020年末尾准备跳槽找了一波工作,虽然在最开始对自己的面试水平很没有信心,但最终结果还可以。期间也遇到一些比较有意思事情,很棒的人,还有一些心得体会。值得记录和分享一下。

The Funnel

  • 30: 投简历+内推+Recruiter Reach Out

  • 3: 简历拒绝

  • 1: 第一轮挂

  • 7: 因为时间安排不过来,自己主动取消后续面试

  • 10: 完成Virtual Onsite

  • 10: 拿到的Offer数量,超过预期

今年没有投也没有推Facebook, Google, Apple这些大公司,但运气比较好最后也拿到了一些旗鼓相当的不错的Offer,最后选了TC (未上市公司的期权和股票尽量根据公开数据去预估) 排名第二的公司,具体哪家就不在这里说了,认识我的可以私下聊。

准备

简历

我来了美国之后一直用latex来编译我的简历。这样做除了格式比较统一美观之外,最大好处是可以把所有经历信息放在文档中。针对不同岗位投简历时,不想展示的部份直接注释掉再编译一下就好了。我也用gitgithub来管理不同的简历版本和分枝,同时备份。这样做的坏处就是每次我要修改点什么,因为很久不用latex,我都要重新去查相关的语法。

大多数人应该没有这么硬核,用word等工具也不错,但殊途同归最后都要转换成PDF文档。关于简历,除了正常的检查各类错误和match岗位需求以外,我觉得还有个不错的经验就是添加各类的链接,你的LinkedIn,GitHub主页和博客等链接,学校,学院,曾经公司主页链接,邮箱可以加mailto:链接,电话可以加tel:链接,通通都可以加上。这样方便看的人直接点击来了解你的更多信息或者联系你,同时不影响打印出来的效果。更高级的玩法,你可以用带analytics的短地址tinyurl服务来做一层跳转,还能知道这个链接有没有被点击过,被点击了多少次,来提前判断人家是否对你有兴趣。

LinkedIn

我会经常会维护LinkedIn主页,它可以用来展示所有你职业相关的信息,通常一两页简历的版面很难容纳这些信息。同时提高主页的信息完善,也可以提交HR或者猎头来找你的机会,所以那怕你不打算跳槽,也应该维护好你的主页信息。如果你不知道怎么完善,可以参考一下我的主页:weiwio

另外我的LinkedIn目前有7000+的connection,主要来源是平时闲着没事会把它算法推荐的可能认识的人都给加一遍,认识不认识不重要,先加上再说,日积月累到了现在。这么做主要有几个好处。一个是SEO,当HR搜人的时候,你在结果中的权重可能提高,更容易被看到。另一个是当你要内推的时候,可以直接给人发私信,不用再等别人通过你的好友请求,甚至可以直接找hiring manager聊有没有合适岗位,大大提高效率。还可以找到目标公司的员工了解工作环境和氛围等。早几年,加人很容易没什么限制,现在LinkedIn已经做了很多每天每周发送请求数量的限制。我后来才知道我这个connection数量和一个普通猎头也差不多了哈。

算法和系统设计

刷题没啥说的,大家都知道主要是LeetCode,另外HackerRank,TopCoder都可以。我差不多从10月才开始大规模刷题,至今才刷了371道 (我朋友基本都刷到500+),分布是Easy 142, Medium 189, Hard 41。我刷题水平比较差,很多时候都要直接看别人的答案然后花很多时间理解。刷题一定要做好时间安排,由其一边工作一边刷题的情况。然后要尽量覆盖到所有数据结构知识点和算法,做好同类型题目的总结归纳,生疏的部份推荐去看GeeksForGeeks上面的文章复习一下。

面试之前也可以看看公司的面经,去侠客行看,别去地里看,更别给地里充钱。另外现在很多小公司用第三方比如Karat做第一轮面试,我去找了所有面经题目自己做了一遍。相当于已经有了一个题库可以轻松过很多公司的第一轮。同样,我也做了所有亚麻OA的题目。

系统设计的资料也是大家熟悉的

  1. Grokking the System Design Interview
  2. GitHub: System Design Primer
  3. Book: Design Data Intensive Application

我这次没有碰到特别难的系统设计题,但仍然不能大意,因为很可能方向错了就圆不回来了。

开源项目积累

从去年开始,因为兴趣,做了一些很小的开源项目,也预想过这可以在面试的时候作为一个补充展示。实际也符合我的预期,当听到我过去一年收获了700+星和2K+ Repository使用的时候,有一大半面试官都表示不错,会问你做这个项目的动机和收获,有些还表示面试完了要去看看我的项目主页。项目地址:next-pwa和过去的星星增长记录。总体来讲,感觉这方面有15%到20%的加分。

目标和计划

我用notion (这是很好用的工具,推荐大家都去试试,也是个很有潜力的startup,可惜给我简历拒了) 搜集了157家公司的各种信息链接,像crunchbase和level.fyi等都是很有用的。然后挑选出了一些目标公司同时分成三个档。

然后我创建了一个Board View来跟踪自己的面试情况和进度,并随时记下有用的笔记。

在集中面试阶段时间实际上非常紧迫,这套方法帮我提高了很大的效率。

在找工作之前,还需要给自己的定一个总体的目标,明确自己想要什么。定薪资范围目标相对比较容易,可以参考level.fyi,找跟自己经历相似的包裹,然后选个大个作为上限,选个平均作为下限,也要结合自己实力考虑。还有其他一些目标,比如你想要接触最新的技术,你想要WLB,这些建议跟已经在那边上班的同学聊一聊。

面试

为了尽可能拿到面试机会,应该要考虑下面的优先级

  1. LinkedIn直接询问hiring manger是否有合适岗位,他们看过你的主页后一般会跟你约一个十分钟的电话。一般这样后面进度推进也比较快。
  2. 公司自己的Recruiter通过LinkedIn或者邮件找到你
  3. 员工内推
  4. 官网申请
  5. 第三方平台申请,或者猎头

我把猎头排最后,一个原因是我遇到的猎头聊完说去推荐,大多都没有下文了。另一方面猎头主要对高端职位比较在意,同时可能也不太了解对接公司的业务需求,推了也没用。

策略

我的策略是先面一些优先级低的小公司试试水,看看自己的面试发挥如何,面试难度如何,还有哪些地方需要补足的,如果面不过就当mock interview也好(一开始真的好没有信心)。面到后面已经渐渐熟练了,自我介绍都说了几十遍,DFS类似题在面试中写了四五遍,信心也就慢慢建立起来了。

集中onsite非常辛苦,虽然因为疫情大大降低了onsite转场的时间和成本,因为我把大部份onsite都压缩进两周,仍然会很累。有几天从早上9点一直面到下午5点(不同公司),会有缺氧的感觉。我让自己每一场面试都像打鸡血一样兴奋,这样表现出excitement to join the company也是会留下好印象的。做题前一定要问clarification questions。做题时一定要沟通自己打算怎么解决问题,一边写代码一边解释出来。调试的时候要说明你在做什么,做完了也记得多讲几个test cases。另外,自信会加分,紧张不会。

需要提一下,很多大公司流程比较长,比如要team match什么的,不要安排到太后面,不然不容易形成compete。

趣事

某公司的Recruiter在LinkedIn上找到我之后,聊了一次后一直没下文,主动跟进了两三次也没有跟我约面试时间。我都忍不住想这Recruiter应该被立即fire掉,不然这公司得损失不少potential candidate。

另一个公司的Recruiter是我见过的最棒的recruiter,各种邮件和电话沟通都很及时也很专业,一开始就跟你讲他们在这个级别能提供的薪资范围看你能不能接受,面试的时候也给你很多的反馈和后面面试的建议。他更像个帮你考虑问题的朋友,忍不住要给他点赞。

有一家公司在我搜集公司列表的时候倒闭了,不得不删除掉。

投了字节的北美岗,会有一堆HR想要挖你回国去996。有天还在半夜十一点多接到国内HR电话,都不看简历不看时差的吗?

感谢

首先感谢我老婆在我准备和面试的过程中给我提供最大的支持,让我可以全力刷题和面试。

这次的结果超出了预期,也要真诚感谢所有给我机会的人,还有愿意跟我分享信息的童鞋。

感谢最近一直当我电脑桌面的锦鲤壁纸:https://unsplash.com/photos/vXid97obEy8

希望五年后我会感谢现在的自己。