这个就照着申请回忆录的格式写的。
北美CS找工作所需要准备的所有东西:
- 个人信息、CV、实习经历
- 投递公司list与投递策略
- 口语(偏tech)
- 刷题,coding
- Behavioral question
- System design
- 八股文(CS/ML),数学题
- 面试slide
- Compete Strategy
面试流程是:
- 投简历,海投或者内推
- (有些公司没有)oa,online assessment,发个链接做完
- 电面,phone screen,一轮或者两轮
- vo,virtual onsite(由于疫情,现在都是virtual)
- hr call,谈package / compete
- 签offer
除了最后一步之外,剩下的每一步都会挂。于是就有一些黑话比如挂了1叫简历拒,挂2叫白嫖oa,…
Timeline也很重要,早投简历意味着机会更多,不过还是有春招可以捞。不过作为ng (new grad) 如果追求TC(total compensation,总包)大小的话,还是有一些可以操作的空间的。
为了方便,1/2/3代表10w/20w/30w,单位为$;通常现在(2022)毕业的master拿到的TC在1到2,顶包差不多3。这篇文章的目的就是对于Master ng而言,3是可以操作的。
数下来一共投了快100个公司,最后拿了一个5,三个3,好多2就不列了。拿offer比例差不多10%,面试比例差不多40%,OA比例不想数。面试有些到后面都不想面了就直接和对面说不想面,不然应该offer比例会更高。
背景提升
第一步先写个CV看看有啥能提升的空间。反向思考下:假如你是HR,在看这个简历的时候都会注意哪些?学校/GPA?过线就行。diversity?改不了。experience?skill set?
HR可能不是很了解,那么hiring manager (hm) 呢?project?experience?是否和当前自己在做的项目match,以及还得考虑培养新人的时间:如果特别不match的话,招进来还得培养个半年一年的,得不偿失,还不如直接找一个senior。
言外之意就是如果在master ng的时候能有类似senior的能力,那么找工作会轻松很多。而这个能力其实并不需要用时间来堆起来
实习与项目
大家都说去大厂实习对于背景提升十分有帮助,之后能够大大增加过简历的概率。
我不这么认为。至少对于我而言。有这么几个原因:
首先我自己是做RL的,大厂实习只会对于general SDE有帮助,因为北美这边intern除非是去Google brain / FAIR之类的对我而言才有帮助,但是众所周知,通常只招phd,bar高,并且hc稀少,我也不认识什么人有什么connection,再加上COVID带来的hiring freeze…你懂得
其次由于COVID的原因我虽然有个fb的intern offer也到不了美国本土实习,后面被取消了
然后最关键的一点原因是,我不觉得大厂intern project能够有多大的scope,产生多大的impact,并且学习到什么新的东西,对于我有正面的提升(比如在cv里面加分之类的)。所以当SAIL说有坑搞RL的时候我觉得挺好的就去了
如何差异化
盲目地卷几段实习、GPA多高、paper有多少、学校项目有多好之类的其实怎么说呢……边际收益太低了,人太多。有没有别的赛道能work-life-balance地卷过这些人?
苏老师之前说过一件事情:“CS的核心竞争力有三个会被重点考虑:1. paper;2. 比赛名次;3. github repo 三位数star”
我一直记着这句话。提炼一下就是如何拥有和表现自己的核心竞争力。我在大四的时候就选择了点github科技树,有这么几个理由:
- github能够较为公正地展现自己以往经历,以及社区的一些反馈,所有内容所有人都可见
- 人少,没什么人在卷github profile
- 运营开源项目既能够锻炼自己的代码工程能力,又能锻炼自己的交流能力(虽然都是书面的),而这些都是工作所真实需要的(感觉这个是master拿L4的必要条件之一)
- 也是最重要的一点,我想通过开源来实现自己的impact和人生价值,为社区做出自己微小的贡献
至于别的:
- GPA对于我而言并不是那么重要,过线就行,不像本科的时候占很多机会的几乎决定性因素;以及如果排除了GPA的干扰的话,自己在学校能够放下包袱去学一些真正有用、有意思的课程与知识
- Paper也不是那么重要,因为反正都是之后找工作,不找教职,不读phd,而且我已经有paper了;我自己并不想做Research Scientist,觉得Research Engineer更适合我
- 实习也不是那么重要,重要的是自己在实习的时候做了什么project,有什么impact,能不能对github profile有正向的贡献(现在看来SAIL完美符合了这几点)
于是就可以在CV上面写上比如“我在GitHub上面有1.8k followers”并且加粗,以及“这个项目有超过4k+的star”之类的语句,能够吸引hiring manager的眼球(事实也确实如此)。
不过这么做也是有风险的:有的HR可能不懂行,并不会意识到GitHub这个维度的重要性;有的HR习惯了采用先看学校和skill set的模式然后跳过其他关键字来初筛(比如简历份数巨多无比(成百上千)的时候),这种简历就会被漏掉。
为了对冲这个风险,采取的策略也很简单:多投。假设上面的事件发生的概率是个常数,那么只要增大base event的数目就不是什么问题。
投简历
简历投的时间如果好的话能够极大概率增加面试和offer的机会。正常来讲,秋招的时候投简历的最好的时间是暑假,而不是9-10月——因为这个时候人太多了。春招也是类似的情况。在刚开的时候没什么人,HR的bar也就是刚初始化的,还没对新的data point作出相应调整,因此相对而言会容易不少。
但是我傻逼了,到很后面(11月)才意识到这件事情的重要性。我在8月底9月初的时候消极投简历,一共就投了不到15份,想着反正能去SAIL躺着也还行。但是美帝毕竟是美帝,资本主义头号强国这个title并不是吹出来的,后面和别人约饭的时候见识到了什么叫做master ng上3(而且还是有两个3的offer)然后就开始怀疑人生,寻思着自己背景条件也不差,但是拿的这个小package和别人比就是完全没啥好比的,直接被碾压。
不过还好有春招能捞,并且有些岗位是常年都招人的,并且后COVID时代找工形式要远远好于COVID的时候,并且面试都是virtual,所以可以放开了随便投。12月刚好打了booster然后躺了好几天啥都做不了,每天只能投简历,投了一共一周快一百个公司,每个公司投多个,看到有一点match的就投(因为我当时也不知道真实的找工形式是怎么样的),一共投了两三百份。
海投 or Refer?
我之前以为refer对于拿面试而言很重要,能增大概率。但是现在马后炮来看的话,结论并不是这样的
12月这周我采取的策略是海投,几乎没有任何refer(就1个citadel)。当时想着先广撒网,放低身段看看到底能钓上来什么鱼。并且还有个原因是上3同学的十几个offer并没有和refer有相关性,相关系数几乎=0
于是后面一周就直接爆炸了:
或许前提是CV比较好才能这样不靠refer随便海投?
找什么样的公司
个人比较懒,对着上3的那位同学的list海投了一遍,以至于等到发面试的时候才去看 这到底是啥公司
首先我在投的时候手里已经有google和octoml(compete前的初始包)的offer,个人感觉如果只有这俩的话肯定去octoml毕竟scope大、成长快、做开源、想象空间大。所以后面接面试的时候我会先问自己:如果这家公司给了你offer,和octoml相比你会考虑谁?如果这个问题都过不去的话我会直接不接面试(当然前提是面试太多了应付不过来……哪怕当时在放寒假,面试其实真的挺累的),除非他们家的onsite时间真的特别短比如就只要两小时(Cerebras就是这样……本来我都想直接拒面试了)
其次如果想有compete offer突破常规master ng tc的话得不走寻常路:量化。众所周知quant给钱多但是wlb不太行,虽然我是做RL的但是RL用在quant上面还是一个待研究的课题,所以实际上和我并不是很匹配。我的策略是,如果量化公司给我offer,我应该也不会接,只是专门用来compete tech pkg用,除非真的很match比如幻方搞AI Lab做RL。
量化还有一些讲究就是国内量化还是国外量化。一般而言国内量化能给20几到20大几(换算$之后的),和这边tech差不多,并且面试难度要比北美难不少,更灵活,啥都问,对于锻炼自己的面试水平还是有很大帮助的,想象空间也很大(据说国内只有20%的交易是自动化的但是美股是90%+),唯一的concern是政策监管的问题。国外的话市场成熟,但是很多量化公司都在Chicago,而且如果作为一个SWE进去的话上限也没那么高,也不搞RL,所以就不是那么喜欢。
Compete的话也得看成功概率,比如用国外量化compete国外tech的话多半不会成功,因为给的太多了;国内量化compete国外tech的话还是在合理范围内的,就看国外公司认不认。我自己的dp是octoml从初始的中1用国内量化大2 compete到了小2,tiktok用国内量化小3直接开到了3(当然后面又涨了一轮)。
其次除了钱之外还得找自己感兴趣的职位,不然的话没法做到可持续性竭泽而渔(当然前提是有保底选择)。我最后分类可以大概分成:
- 大厂(随波逐流,当普通人)
- AI研究院(搞RL)
- 各种ml startup与unicorn(看有没有财富自由的机会)
- 车厂(搞RL)
- Quant(国内搞RL)
面试
首先由于COVID的缘故,本来要飞到公司面试(onsite)的环境统统变成了线上面试(virtual onsite),于是就可以在家各种面。不知道之后还会不会接着这样virtual
面试时间最好不要差太多,不然的话可能一家发了offer另一家才开始面,而且大部分offer是有deadline的,有些患得患失的人(比如之前的我)就很在意要不要现在就接了。拖面试也很好操作,HR预约时间选最后一个时间然后到时候装死reschedule。不过也有风险:万一headcount没了就真没了
我是把大部分面试都放在寒假……好处是可以专门面试,坏处就是机会没秋招第一波多。
刷题
这个我没啥好提供经验的因为我高中搞信息学竞赛,做这些题个人感觉……掉智商
不过有同学问我题咋做的时候我都会回复的,到他们懂了为止,毕竟能帮一个是一个。还会手把手教刷题做模拟oa,交换条件就是包一顿饭。卖艺了属于是
BQ: Behavioral questions
情商小测试。主要考察口语以及编故事能力。
对着 https://sugarac.gitbooks.io/high-frequency-interview-questions-and-answers/content/bq-by-xiao-tu-dao.html 里面的Interview Preparation Grid写了个自己的表格,感觉确实挺管用(虽然真正bq的时候几乎没看,都是现编一个scenario)
讲个笑话:9月份fb ng sde面试的时候我挂在了bq(没人会挂的我挂了),毕竟第一次bq嘛……情有可原。对面原话是:“没事你之后还会经历很多次bq的”。后面2月FAIR面了我两轮的bq来洗刷黑历史,我觉得我答bq的效果要远比其他场面试来得好,也算是一雪前耻了
Update: 上3同学推荐亚麻BQ准备手册:https://www.youtube.com/c/DanCroitor/videos
System Design
有些onsite会做一些system design的题,但是对于ng而言又不是那么正统的system design,比如随便propose一个问题叫你如何分析、如何收集数据、如何写一些伪代码来描述主要算法,可能的瓶颈在哪里之类的。比如某onsite会赶人走的北美quant公司考了个设计摩拜单车的公司初始运营策略。(ps. 他们家衣服质量真好)
反正就是瞎扯淡,扯到对面满意为止,如果扯不出来对面也会提醒的,毕竟还是得照顾一下ng。
正常的system design还是得看ddia,但愿这学期结束能看完。
其他
亚麻的AS考ML八股文,传统ML,我不会并且不想准备,于是面试的时候直接开摆,理所当然地挂了。因为我当时想法是,我去Seattle的时候见识了一堆的AS然后他们纷纷表示羡慕国内量化…… 我:?
Quant通常会考数学题,国内国外都是,然后还专门准备了一番。主要是随机过程那方面的,技巧也很简单,只要能枚举一点点然后找规律写公式就好了。
Quant以及其他一些公司还会考CS八股文,比如底层OS,我忘光了,只好现编但是多半是错的。为了弥补短板,最后一学期选了cmu的os来上,防止之后如果有人问这方面问题答不上来暴露自己真(cai)实(ji)水平。
Research Lab偶尔会按照phd要求进行面试,比如MSR第一轮是先一个小时的自我工作介绍,还好我有project和paper可以撑得过去。
有些onsite最后是HR面,我都是如实回答问题。我觉得应该真的会HR面挂人但是好像并没有……
谈offer
我列了很多metrics来衡量一个offer的优劣:钱&税、地点、安全系数、工作方向、个人成长、身份、升职间隔、公司盈利模式与股票上限、工作时间、午休、工作环境与氛围、绩效考核、开源项目、生活成本、天气、吃喝玩乐。还考虑了父母但是家里说你这才ng呢先不用管我们,所以就没写进去。行吧。
新加坡其实挺好的,税差不多全球最低,缺点是:没啥玩的地方毕竟地方太小、都是夏天、跳槽几乎没有其他选择、给的比北美少。为了长远的职业发展考虑还是北美这边相对好一些
国内量化其实也挺好的,幻方钱多离家近并且做RL,杭州吃喝玩乐也挺多的,不考虑买房的话国内170w的购买力其实抵得上北美快50w刀的购买力了。缺点是政策稳定性和职业发展受限,之后多半只能搞quant相关的行业了……以及国内工作环境,你懂得
北美大厂SDE不想考虑……自己不想变成CRUD boy荒废人生,与其做着CRUD的事情,倒不如花点心思想想有什么新的场景,开辟下新的赛道能让其他人去CRUD
北美大厂的MLE比如tiktok和pinterest看起来还行,但是并不是十分match我
北美startup/unicorn的MLE比如OctoML和Cerebras主要搞ML compiler的事情,虽然不是很match我但是可以学学,并且想象空间要比大厂大
我最后还是认为AI Research Lab的Research Engineer最适合我。如果不看钱的话,FAIR > Nvidia Research | OpenAI > MSR,因为FAIR搞开源特多并且面试的时候问了下说维护开源项目算作personal impact,也就是可以被用于升职。牌子也很好,田渊栋老师之前也做过很多有影响力的工作,能学到不少东西。
Compete 策略
我的大方向是用量化先compete tech,只要有一个能接受就相当于开了个口子,然后再用这个compete过的tech offer去compete别的tech,这样认可度和成功率都会高一些。
上3同学:“我还以为大家都看过这个:https://www.1point3acres.com/bbs/thread-464079-1-1.html ”
不过到中后期都是直接发其他家的offer letter过去然后说我没有一个确定的心里价位,你看着给
Read More