疫情期间找工作一年拿到4个Offer的超详细总结

作者@hst_bright
发布在一亩三分地

欢迎大家点击左下角“阅读原文”到原帖与作者交流讨论哦!

声明: 本标题有标题党的成分,楼主的经验不一定完全适用所有人,只是希望借此方式能或多或少给大家一些启发

楼主背景

非名校 PhD,ML/CV方向,有若干顶会顶刊。三个实习经历,覆盖不同AI、DS应用领域。性格爱组织活动爱social。面试约20个公司,拿到4个offer,最后决定去一个湾区一线CV大厂。

刷题篇

因为楼主不是CS专业,对刷题一直没太有信心,但是深知虽然目标不是SDE,只要跟ML相关也有不小的算法要求。每次看到日益增长的LC题库和进展缓慢的个人进度就很焦虑。所幸在地里的推荐下购买了Grokking the Coding Interview课程,对于有一定算法基础并且需要高效地系统梳理的同学非常有帮助,相传有做完课程刷题量可达200的功效 (??没收钱真的不是广告)。所以特别适合楼主这种一直信奉少而精,而非题海战术的人。楼主的使用方式是,按pattern刷题,每道题大概做三遍:

1) 第一遍:先想自己的方案,感觉不是最优就看一下提示(非代码),然后对照最优思路写出初始代码

2) 第二遍:对照自己的代码和答案,找出可以改进的地方。找到对应的LC题目在LC上做一遍。因为educative.io一般只有个test case,LC的test case 和run time performance更全面

3) 第三遍:总结代码思路,把完整的pseudo code写进注释。最后用一句话概括解法提示,总结在一个大的表格里,方便面试前快速查找复习

因科研任务紧和拖延症,楼主只覆盖了ML相关的patterns,注重array,string,search,没有精力涉及DP难度较高的方面。最后,楼主直到找工作结束也没有做pattern课程(大概只做了七八十道),而且一看 LC记录只有50 道左右。但是楼主见过刷题上千拿其他厂顶包的,最后TC比楼主多五六万的,不得不服。

另外,会做题和能讲好题是两个截然不同的level。为了锻炼自己mock能力,我尝试参加过几次朋友组织的刷题活动, 基本上就是大家规定一周刷一些,然后轮流讲思路,但是发现持续性不高。这里强烈推荐一个在线mock 网站pramp(免费),上面可以自动匹配跟你一起mock interview的队友,一人当考官,一人当面试者,然后过半小时对换。

楼主特别喜欢这个平台,在上面就跟网上交友似的,有一次遇到一个妹子吐槽找工作和政策的艰辛,讲完题又聊了半小时。

楼主遇到过啥都不会的三妹妹,也遇到过老美刷题大神后来拿到了google offer。不仅自己当考官的时候可以用不同视角产生很多新的体会,跟不同的队友可以学到特别多。

比如楼主刷题第三遍一定要总结pseudo code的经验就来自于那个google大神,他在做题前的边际分析和代码思路行云流水。最后,楼主在没有面试的日子里坚持每周至少mock一次(总共至少10次),锻炼了自己的嘴皮子,克服了临场恐惧。

ML算法篇

算法部分的准备主要是基本概念简单coding

因为楼主的找工方向是ML+DS+AI+CV, 基本概念主要分为 statistics,linear algebra,ML,DL、CV。即使是自认当年学习得很认真(后来证明自己想多了)的楼主,在面对一些基本概率的时候也经常一下反应不过来,比如 SVD vs eigen decomposition的物理意义,Vanishing gradient是什么导致的,怎么解决之类的。这些概念虽然很基础,但是非常庞杂,需要一定时间整理和复习。而且对于ML方向的同学一定不能只顾刷题,不顾算法。楼主在找工初期有好多公司,比如P&G,Nvidia的面试都是挂于此。推荐大家有时间的话看一下上课的讲义或者网上教材online course,没时间的话多看一些medium的总结。楼主自己就针对自己的弱势和面试经历总结了自己不熟概念的问题和答案cheat sheet,每次面试前刷一遍,彻底理解了的内容就remove。另外推荐一个open souce的概念总结 NoML

Coding 部分,ML 的经典算法就十几种,时间富裕的最好都完整过一遍(链接)。经历有限的可以考虑重点放在一些规模比较小,不是很复杂的算法上。因为面试时间的限制,现场考查过于大型或者公式复杂的算法难度较大。就楼主的经历比较常见的算法就几种decision tree,random forest,Logistic Regression,Perceptron/MLP, 连SVM都很少遇见。DL的方向主要是对package的熟悉,最近一段时间个人感觉,工业界platform的鄙视链 pytorch> tensorflow>keras>caffe。掌握程度也就自己可以简单搭一些常见的模型即可。

简历包装篇

主要分三个方面,CV/Resume,LinkedIn和 portfolio

CV/Resume

CV/Resume 的目的是在第一关吸引HR注意给面试资格,第二关在初始面试的时候让面试官了解你的优势便于提问。所以非常非常重要,楼主至少改过几十版本。内容方面参考STAR法则。另外没有绿卡的不建议注明自己的international学生身份,楼主自己就曾经很天真的标明需要sponsor,结果可能有公司有些职位能sponsor的但是HR不知道就直接刷掉了。布局的建议是BS/MS 一页,MS/PhD 两页。推荐经典模式不建议太有创意,如果两页太空就一页, 如果是有research经历的建议附上文章列表。我曾经自己想创新试过双栏的,结果跨行太多,而且网传不识别。另外如果有地方的话可以考虑summary的部分,用一两句话总结自己的经历,一定要吸精,能显得自己与众不同的那种,但是不推荐太主观或者太夸张的描述。附上一个楼主自己的summary部分供参考:

[Degree]with 5yrs of research and a year of professional experience in Deep Learning, Machine Learning, and Computer Vision. Diverse advanced industrial experiences including [Field#1], [Field#2] and [Field#3]. Published in the top-tier AI conferences ([Top Conference Names]) and Journals ([Top Journal Names]), involving Image Segmentation, Object Detection/Classification. Strong passion for real-world problems and high communication skills.

电子版的简历尽可能附上project对于的代码/report/文章链接,方面面试官深入了解详情。另外可以自己尝试上传的简历到测评网站,分析是否有改进的地方。

另外,推荐自己对于不同类型的公司及不同职位,准备不同的版本的CV/Cover Letter.我自己就针对自己实习的方向准备了三个field·,两种职位的版本。

LinkedIn

标题有特点,注明自己的经历和感兴趣的职位,这样HR在搜关键词的时候就能搜到,而且在回复或者点赞别人的post的时候别人也能知道怎样帮助你。

About 的重要性等同于CV 中的summary, 还可以加上programming skills

善于使用每段经历的“media“部分,等同于project链接

有些同学有leadership experience 比如社团主席之类的会跟工作经历一起放。我自己是experience只放工作经历,volunteer放learship experience和volunteer。我这人觉得放一起容易混淆,当然具体看个人喜好

Portfolio

锦上添花,一定要选好模板。楼主自己曾经做过第一版网页用的github webpage自带的模板,结果放到jumpstart被网友吐槽像上世纪老教授的个人网站。后来好好整了一版总算” 代沟“能小点了lol。网站用处还是挺大的,楼主每次面试的时候都会发链接给面试官,主要是CV方向的图很重要,照着网站的图讲思路能更清楚。

Networking篇

虽然network的质量跟人脉和学术/工作能力有很大关系,但是楼主多年的social经历还是希望能大家一些参考。主要的原则就是proactive和respect。

勇敢和自信地表现自己。咱们经常说印度人有很大的表达优势,其实我们要是好好锻炼也不会比他们差。在networking的场合表现地积极自己,往往会给别人留下深刻的正面印象。楼主曾经在参加meetup的时候提了一个问题和建议,是presenter都没有想到的方面,会后详细交流了一番。后来这个presenter帮我内推了一个机会。

在索取帮助前先想好自己能给对方带来什么。(比如我在想向大家要大米之前,先想好我能给大家分享什么:-P)在开始话题的时候不要先想着自己想要什么,而是怎样切入会让别人感谢兴趣,比如可以先聊对方的工作方向、自己做过类似的或者有什么见解,可以帮忙推荐什么朋友之类的。然后渐入佳境地时候再提出自己在寻求机会。

重视long term build。
短时间follow-up: 在见面(virtual 见面也算)聊过之后一定要follow-up,加LinkedIn或者发邮件说在某某场合聊得很开心,这样即使之后再联系聊天记录也在,方便别人想起自己. 
长时间互动: 记录好每次networking联系方式,当时回复和下一步进展。很多时候当自己或对方time line不适合的时候,大家会礼貌性地回复“keep contact”,然而很多人就不再联系了。但是如果有计划地总结这些详细情况,总结networking的进展,就可以避免contact的流失。对于recruiter,可以过一段时间(有CV重大更新的时候)就联系一下update。对于employee,可以多给人点赞评论linkedin。楼主dream offer 的hiring manager就是两年之前联系过的,当时给了intern但是已经接了其他家,两年后再来联系full time没想到人家挺热情还记得我。

面试机会

通常主要有几大来源:海投,参会、内推和猎头等。着重说一下以下三个方面

海投

楼主一年来海投过50到100家(具体不记得了),得到面试大概2-3家。海投的一大弊端就是通过率低,最主要的原因是筛简历的很可能不是Hiring Manager 而是HR,而他们可能对你的方向并不是很熟悉,很可能由于很多奇奇怪怪的原因拒掉,比如毕业时间,sponsor,typo, lack of keywords, candidates from the same school 等。

几个建议是

能内推的公司不海投!!!

重要性排序是:公司官网>linkedin> glassdoor/Indeed.

总结自己的网申记录包括reject结果,避免重复网申和了解冷冻期timeline (一般简历冷冻期远小于面试冷冻期)

参会

参会绝对是找工作networking的绝佳机会,包括招聘会、学术会议和职业发展会等。我身边不下十多个朋友是参会在公司boost聊得很开心,或者manager看了poster、文章很感兴趣然后立马安排面试的。楼主个人就通过参加学术会议拿过三四个面试。

另外对women in Engineer ,GHC。线下的会议感觉非常好,记得两年前参加GHC认识了的HP小姐姐,一年后还联系我帮我推了职位。但是今年线上的会就大打折扣了,今年的GHC简直一场闹剧。总体感觉这类会对于妹子而言,BS、MS在简历关(面试关还是靠能力)性别优势可能大一些,PhD来说性别优待没有那么多(可能主要是基数少)。

朋友内推

具体就是放低姿态,厚脸皮。要理解朋友可能会因为工作比较忙,帮你是情分,不帮是本门。为了尽可能减少别人的工作量,建议内推的时候附上:

1.职位ID
2.最早工作时间
3.第三人称自我介绍
4.CV+LinkedIn
5.SDE的话可能有LeetCode

最后如果推失败了要记得感谢人家,如果推成功了要记得特别感谢人家!

心态篇

楼主找工作历时快一年,年初开始,到九月中才有了第一个offer,现在在negotiate offer的细节。在这期间我还因为疫情期间找工作进展缓慢,延长毕业了半个学期。

虽然之前很多朋友说我的专业和背景找工作不成问题,但是突如其来的疫情打击和今年一整年的各种政策变动,都让我措手不及。面试被拒的时候曾质疑过自己的能力,压力大的时候也崩溃过。

现在在身边亲朋好友的支持下和地里兄弟姐妹的帮助下总算挺过来了。我知道这个时候大家都很不容易,我也不想说什么只要坚持下去就会成功的空话。但是只要自己努力争取过,无论结果如何以后不会后悔。

感谢大家的回复和支持,补充一下我的timeline以供参考

一月份开始准备找工作,刷题基本没怎么开始。

三月份过了一个中部大厂的HM直招的onsite 面试,本来八九不离十了,但是四月份因为突如其来的疫情和股票的影响被revoke。计划被打乱。

五月到八月开始陷入大量投简历+焦虑+刷题+面试的循环。

九月疫情常态化市场回暖,拿到第一份正式offer。

总体来说我集中准备的时间并不长,但如文中所述,长期来讲在research,networking和follow-up的投入是没有间断的

大家如果还有相关的问题和看法,欢迎点击“阅读原文”到一亩三分地讨论