记录一下2019年找工作的一些心得体会

avatar 518674
LionHead
12635
19
今年是LZ入行的第五个年头,也是第一次跳槽。从开始准备到最后决定去处一共历时5个月。虽然战线拖得比较长,总体来讲还算顺利,拿到了包括谷歌,亚麻,领英,微软在内的所有想要的offer。LZ绝非任何意义上的CS大神,所以这次找工作的心得和体会也许比较有普适性。在这里分享给大家,希望有所启发。

LZ是美本CS专业出身,学校专业排名30左右。上大学前几乎没有接触过编程。大三暑假获得微软实习,之后拿到return offer。毕业后全职加入微软 (东海岸),到今年整整五年一直在同一个产品做infrastructure/backend。今年决定跳槽是因为预感到即将发生很大的reorg所以提前做打算。LZ在西海岸朋友比较多所以只考虑了加州跟西雅图的机会。以上为背景。

二月份开始准备。说来惭愧,工作几年下来虽然业务水平有所提升,大学学的算法跟数据结构的知识真的完全忘掉 (bubble sort都不知道怎么写的程度= =)。换工作的事情迫在眉睫,LZ也只能硬着头皮从基础开始准备。以下是LZ准备的流程:

  • amzn.to入手,把Data Structures,Concepts and Algorithms,以及Advanced Topics下面的章节非常仔细地过了两边。把每一章自己觉得重点的的部分copy到OneNote上方便之后复习,然后保证每道例题都能非常快地回忆起解法。为了节约时间,这个过程LZ更多的是去记忆。
  • 新版的amzn.to加入了Additional Review Problems。LZ很粗略地过了一遍。一般是直接看答案搞清楚解题思路就过了。
  • 花了大概两周的时间把amzn.to的内容看完,准备开始在LeetCode上面刷题。因为没有跳槽的经验,不知道会需要多长时间准备,LZ开通了一年的LeetCode Premium。事实证明,这是LZ这次准备过程中最明智的投资之一,确实帮助LZ在刷题的选择上避免了一些弯路。
  • LZ有两个刷题策略。一个是按公司tag分类,然后从最高出现频率依次往下刷。LZ刷了的公司依次为微软,亚麻,领英,谷歌。前三家都是刷了top 50,谷歌因为时间问题只刷了一部分。另一个是按topic分类,每个topic大概刷了出现频率最高的前10~15道。LZ一共刷了281道题(86 easy, 143 medium, 52 hard)。
  • LZ对于hard题的态度是不主动不拒绝,刷不到就当没看见刷到了就跟它死磕。52道hard中大概有一半左右是LZ自己想出来的 (虽然有些时候到最后submit成功需要花好几个小时),剩下的就看高票答案。最关键的是举一反三。所有刷题中学到的知识跟技巧都记录到OneNote里面。
  • 时间上来讲,LZ是周一到周四每天晚上学习2到3个小时。周五休息。周末如果不跟朋友出去玩就全天学习。

谷歌的recruiter半年前不知道通过什么渠道看到了LZ的简历,主动联系LZ面试。电面推迟了好几次,最后定在四月末。由于缺乏面试经历,LZ第一次电面节奏特别不好,在解决第一个问题的时候花了太长的时间,以至于follow-up没来得及修bug时间就到了。电面以后心态有点爆炸。所幸的是,recruiter给了再电面一次的机会。当时的想法是,第二次机会一定要把握,要跪跪在onsite,于是约了五月末。

接下来的一个月里有针对性地做了很多面试技巧方面的强化。主要用了两个网站,一个是interviewing.io,另一个是pramp,都是完全免费。前者提供三次跟大厂工程师做mock interview的机会,每次一个小时,问题难度跟真实interview相似,结束后会有反馈。后者是一个网友互相mock interview的网站,每人半小时,问题难度较低,遇到过几次明显没准备的奇葩,优点是频率高。对于LZ而言,mock interview最大的作用是熟悉给别人讲解解题思路以及消除面试紧张感,所以感觉两个网站都还不错。LZ也用了LeetCode自带的mock interview,但感觉上更像online assessment。题库貌似更relevant一些,每周更新一次。

与此同时,LZ也开始给其他公司投简历。首先是微软内部找了几个哥们把简历直接发给他们org的hiring manager。亚麻是先去amazon.jobs申请然后再让朋友内推。领英是用微软公司账号海投。另外也有通过Triplebyte和interviewing.io跟一些公司接触。

Fast forward到五月末六月初,LZ开始了大规模的面试。随着面试经历的增加,LZ也越来越进入状态。有点可惜的是,由于人在东海岸而飞西海岸面试实在劳累,不得不放弃了几家公司的onsite。LZ赶在六月末前结束了所有的面试,并将所有的onsite转化成了offer。接下来聊聊面过的这几家公司的流程及体验,按面试时间先后。

WeWork
  • 第一轮电面是在interviewing.io上面,问的String Compression,难度easy。
  • 第二轮是正常电面,问了一个string manipulation的问题,难度easy/medium。
  • 没有去onsite。


C3.ai
  • 第一轮电面是在interviewing.io上面,问了一个serialize嵌套object的问题,难度medium。
  • 第二轮电面是behavior。
  • Onsite是通过网络会议,不需要人飞过去。
  • Onsite一共3轮,第一轮3场technical (难度medium/hard,有DP问题),第二轮跟CFO聊薪水,第三轮跟CTO聊理想。
  • TC比较一般 (20万出头),但公司可以全额赞助念一个AI领域的master,毕业的话还有现金奖励。这点还蛮有意思的。
  • 拒掉offer。


Riot Games
  • 第一轮电面是在interviewing.io上面,问了很多knowledge-based questions。面试官没有给过但很认真地留了一大段feedback指出LZ表现出来的长处跟不足以及如何提高。整体来说是一次不错的面试体验。


Uber
  • 第一轮电面是在interviewing.io上面,问了一个bit operation的问题。LZ很快给出了解法,但面试官说有时间要LZ想想有没有更好的方法。Bit operation不是LZ的强项,所以一直苦思不得其解。面试官全程一声不吭。
  • 快结束的时候面试官告诉LZ,LZ的解法就是他知道的最优解。
  • 面试官所表现出的傲慢让LZ非常不爽,于是拒掉了随后的onsite。


Asana
  • 第一轮电面是在interviewing.io上面,一个关于meeting room scheduling的问题,问了两个follow-up。难度medium。
  • 没有去onsite。

本帖隐藏内容需要登录后才能查看。<*>包裹: instant.1point3acres.cn<*>接了offer (真香)。

整体体验/心得
  • 跳槽是科技行业当前最高效的提升收入的方法。
  • 刷题是跳槽最直接最有力的武器。
  • 最重要的不是刷题数量,而是刷题方法。但刷的太少也不行,经典的题型得看过。这就涉及到了刷题选择的优化,再次推荐LeetCode Premium。
  • 小公司看重背景经历,大公司更看重你作为程序员本身的素质 (无关对错,只是LZ的一点观察)。
  • 面过的所有公司难度区间基本上都是medium,没有遇到过无从下手的题。面试的时候一定要think out loud。
  • 去了onsite的公司里面,难度上,谷歌 >= 领英 == 微软 == C3.ai > 亚麻。
  • LZ在每一场面试前都会扫一遍整理的OneNote笔记,做一道easy的题,稍微调整一下心态。
  • Practice makes perfect.


现在能想到的就这么多,谢谢大家!祝大家早日找到心仪的工作!
  • 326
19条回复