美國CS PhD Research Scientist找工作經(jīng)驗總結(jié)【學(xué)術(shù)人生】
當(dāng)你初入江湖,迷茫不知道該干什么的時候,不妨去模仿前人是如何進(jìn)行科研的,并從中歸納出最適合自己的道路。為此,我們推出“學(xué)術(shù)人生”專欄,介紹科研的方法與經(jīng)驗,為你的科研學(xué)習(xí)提供幫助,敬請關(guān)注。
過去小半年的時間主要就在找工作和決定去向,趁著還沒入職工作的間隙,在這里發(fā)一篇文章總結(jié)一下經(jīng)驗,希望對后面找工作的朋友有幫助,也算是對這段經(jīng)歷的一個記錄。
我找的是CV/DL方向美國Research Scientist的崗位。根據(jù)我的了解,Research Scientist主要是做研究的地方有FAIR, Google Research, MSR, NVIDA Research, Snap Research, OpenAI, DeepMind, 其他的地方除了一些較小范圍的組,可能有更多的工程或者產(chǎn)品上的工作職責(zé);但是劃分也不是絕對的,而且同一個組每個人可能也不一樣。我投的是前一種為主,但是面試下來兩種的形式是基本共通的。下面我拋開具體公司的流程,按照環(huán)節(jié)來總結(jié)一下整個過程中的經(jīng)驗。
投簡歷:
根據(jù)我的經(jīng)歷和聽聞,RS的招聘一般都是面試前先具體定位到組:你想加入對方組,對方組的manager也覺得你的背景比較適合他們組,才會安排面試。一般不會是先通過公司層面的面試,再去匹配組。當(dāng)然如果是多個組對你都感興趣,可以協(xié)調(diào)安排一起面,通過之后會再有一個匹配組的過程。簡歷在公司官網(wǎng)海投的效果不太好 ,尤其是大公司。找人推到公司內(nèi)部的內(nèi)推系統(tǒng)這種,也不推薦;因為這種情況一般不會匹配到組,可能很久之后才有人會看到你的簡歷。我有非常厲害的同學(xué),因為只是找了一般的公司系統(tǒng)內(nèi)推,而沒有拿到面試。
對于真正考慮去的地方,建議先定位想要去的那個組,然后通過組里面或者臨近的組里面認(rèn)識的朋友師兄師姐來向manager推薦。這樣可以保證對方manager能看到你的簡歷,而且對manager來說,有人推薦的一般比去打撈簡歷靠譜很多。我非常幸運,很多朋友和前輩在這里幫助了我非常多。我通過這種方法投的基本都拿到了面試,官網(wǎng)海投的大部分沒有音信。根據(jù)我過往的經(jīng)歷,PhD找實習(xí)面試也是一樣的道理,通過官網(wǎng)之外的渠道找靠譜一些。
通過這種方法投了,但是如果對方?jīng)]有招人名額的話那肯定也是不行了。20-21兩年疫情嚴(yán)重的時候這個就是個問題,21年末/22年初的市場貌似開放了很多名額,很多組都在招不少人,但是22年下半年似乎情況又急轉(zhuǎn)直下了。如果有名額,給面試的可能性看研究方向和成果。一般來說成果沒有辦法短時間優(yōu)化,所以找工作肯定是越合適的組成功幾率越高。但也不是一定要求小方向上嚴(yán)格匹配,尤其是在做研究自由比較大的組和公司。有時候一些我以為并不是競爭特別激烈的非頭部大廠,但是實際上他們需要的方向和技能并不匹配我的,我就沒有收到消息或者面試。關(guān)于研究成果,理想情況是對方聽說過或者讀過你的工作;我就聽說有人文章很少,但是有一個工作非常牛,然后找到很好的研究崗位的。數(shù)量質(zhì)量兼?zhèn)淇赡苁抢硐肭闆r,這樣從manager和公司角度來說,你既能保持效率,又有機會搞大新聞。如果簡歷關(guān)順利通過,就到了面試環(huán)節(jié),下面按照幾種面試種類分類來說。
電話面 (0-1場):
英文"Phone Screen",一般半個小時,是看到簡歷覺得ok,但是onsite面的成本太高,所以需要通過電話面來刷掉一些人。一般是簡單了解下你的研究背景,也有的公司是其他的形式,比如很短的一個presentation,也有少部分很簡單的coding的。過了電話面就進(jìn)入所謂onsite,一般是5-10個面試安排在同一天或者有時候在相鄰的兩天。雖然叫onsite,但是歷史原因了,現(xiàn)在為了方便都是遠(yuǎn)程面。下面介紹的都是onsite面試中不同的內(nèi)容。
Research talk (1場):
onsite當(dāng)天第一場,一般是45分鐘的research presentation,加上10-15分鐘問答時間。這個某種程度上可以給onsite的一天定調(diào),如果講的效果比較好的話,應(yīng)該對后面的面試會有幫助。一般后面要面試你的人會去視頻會議里直接看。大部分情況下都被錄像了,后面在公司內(nèi)部會公開被更多感興趣的人聽到。大概要做的就把自己過往的重點工作用一條主線串起來,講一個好的、能被聽眾聽懂的故事。不需要用到所有的工作;我認(rèn)為一般重點講的不超過3個工作,太多了可能會顯得沒有重點。我認(rèn)識的有兩個同學(xué)都是只重點講了一個最近的工作,然后拿到了非常好的offer。網(wǎng)上有很多如何做好research talk的教程和建議,我也參考了很多。但是我的準(zhǔn)備也是有一個問題,就是沒有把講的過程練習(xí)到很流利。這部分準(zhǔn)備的時間取決于之前的材料有多全,有些同學(xué)就是把之前做的就很好的PPT拼接起來。每次講完,我也會看看有沒有什么可以改進(jìn)的地方。research talk雖然很多公司是不會顯式打分的,但是應(yīng)該是所有面試中比較重要的一環(huán)。
Coding面 (1-2場):
Leetcode類型的coding題,其實沒有我想的考的那么多,平均每個公司不到一題。我沒有被考超過Leetcode中等難度的題;就算是中等,也是其中比較簡單的。所謂的AI coding可能更多一些,就是numpy, pytorch或者是ml/cv的一些基本操作(比如nms, iou, filtering, tensor操作,但沒有手寫back-propagation這種)。這個因公司而異,有個別公司從頭到尾一道coding題都沒考。
我以前沒有搞過信息學(xué)競賽,大概準(zhǔn)備Leetcode類型題我花了一個月左右的時間。我買了個Leetcode會員,刷了可能200道左右Leetcode簡單和中等的題 (看到自己賬號2014年大一大二剛注冊的時候就刷了幾道困難題,還在論壇上和別人發(fā)過帖討論,有點感嘆自己老了)。每一個基本的考點,比如DFS, BFS, DP, 鏈表等等,都至少做了幾道題。比較熟練之后,不用做到每個練習(xí)題都寫完整,想出思路即可,可能我在這里又看了100道題。coding面也是有技巧的,比如如何在不會做的情況下做出一些分析,讓面試官給你一些提示,等等,網(wǎng)上也有很多教程??梢詫χ镜某R婎}刷,好像出現(xiàn)重復(fù)題的概率還是挺高的,我在Meta前幾次實習(xí)面試就被一直問同一道題。
當(dāng)然這里我說的主要是偏研究崗位的;如果是偏工程的崗位的話,coding肯定是會更多,或者可能全部是coding,可能難度也會更高。
ML/Math(0-1場):
有一些公司會考一些機器學(xué)習(xí)基礎(chǔ)知識。比如解釋overfitting的定義,如何判斷overfitting了,Adam和SGD的區(qū)別。還有一些大一的數(shù)學(xué)知識,比如矩陣的特征值分解,如何判斷正定,泰勒展開,梯度,導(dǎo)數(shù)相關(guān)的知識點等等。不是很多,大概有三分之一的公司考了,一般不會太難,稍微復(fù)習(xí)一下應(yīng)該就能比較好地應(yīng)對。沒有手推SVM這種。
Research面(2場或者更多,有的6,7場也是有可能):
這個大家找過實習(xí)的應(yīng)該都會面的。總結(jié)介紹一下自己的過去的研究,挑出一兩個重點講一下,自己做了哪些貢獻(xiàn)。常見問題有:對自己過往的工作回過頭來怎么看,還有哪些地方可以改進(jìn)的;將來打算做什么方向;對某個小領(lǐng)域做個簡單的概括/怎么看;我想做一個東西能不能這樣做,可能出現(xiàn)什么問題;做一個東西總是做不好,有可能是哪些問題等等。也有那種設(shè)計問題,給你一個場景,問你怎么開始解決這個ML的問題,設(shè)計系統(tǒng),一般是從如何整個pipeline角度來說,收集劃分?jǐn)?shù)據(jù),設(shè)定metric等等。也有那種問一個題目,看看你有什么思路,有些就是他們工作中碰到的問題。Research面可能是面試的主體部分,應(yīng)該占了所有比例的一半以上,所以得做好多次重復(fù)說一樣的內(nèi)容的準(zhǔn)備。也有很多面試官會在這個環(huán)節(jié)中留很多時間讓你提問,或者介紹他們組的情況。如果你本來就認(rèn)識面試官,在這一關(guān)有可能也沒有太多嚴(yán)格的考察內(nèi)容,都是在聊天,或者給你介紹他們組的情況。這輪如果面試完了,對方覺得從你這學(xué)到一些新的視角或者insight,那可能是最好的。也有Research面和coding面混合的,前半部分Research后半部分coding.
Behavior面(0-1場):
問一些過往的經(jīng)歷/場景,你的處理方法,學(xué)到什么,想看一看你工作中的性格品質(zhì)。比如介紹一個工作中和別人意見不同的情況,以及最后是怎么解決的。有些公司是有專門的一場面這個,有些是在其他面試中穿插著的,也有不面這個的。這個部分也需要準(zhǔn)備一下,參見網(wǎng)上很多教程。準(zhǔn)備過程基本上是,回想一些過去工作學(xué)習(xí)中發(fā)生的一些有趣的經(jīng)歷做為素材,然后可以應(yīng)對不同的問題做為答案。雖然我準(zhǔn)備了,但是發(fā)現(xiàn)很多時候還是即興回答的。一般人可能很難面的很差,當(dāng)然想出彩應(yīng)該也比較難。這個按照亞馬遜的標(biāo)準(zhǔn)來準(zhǔn)備,應(yīng)對其他的就比較簡單了。
補充:
每一家公司面試的方式和輪數(shù)不同,但是research talk和research interview一定是有的,我的理解也是在其他幾項過關(guān)的情況下,對方比較看重的。不同的公司面試也不一樣,這個在拿到onsite面試之后,有些公司會和你介紹面試大概面什么,前期總體準(zhǔn)備來說不太需要具體到每個公司。
最后分享一些自己的經(jīng)歷。我完整面完了8家公司的onsite,并且都集中在2022年3月。這期間平均每天(周末除外)大概有3-4場面試/talk;強度最高的一次,是上午8點面到下午5點,每兩場中間15-30分鐘休息。正式的面試就有七八十個單場,所有面試和交談加一起遠(yuǎn)超100場。當(dāng)然你也可以選擇,拿了想要的offer后就退出這個游戲,然后專心休息或者做其他事情。但是我剛開始一方面是為了求穩(wěn),一方面也是因為確實投的地方都考慮去,就安排的比較多,雖然很累也很有收獲。最后給了onsite的這8家公司都拿到了offer。還有少量一些沒到onsite就結(jié)束了的:有簡歷拒,有電話面后告訴我沒有名額,也有過了電話面和coding筆試,但沒給后續(xù)的面試。剩下的還有不少海投簡歷的沒音信。這些我大多也覺得不是特別match,否則就會試著找人推來投了。
面試過程中感覺到,很多地方都是很好的機會,學(xué)到了很多東西,也認(rèn)識了很多新的朋友、同行和前輩,manager也都人非常好,很多組說可以給自由選擇工作內(nèi)容的空間。糾結(jié)了很久,最終還是決定去FAIR,部分也是因為我在FAIR實習(xí)過,從適應(yīng)環(huán)境上來說風(fēng)險相對低,內(nèi)部工具的使用上也會比較容易延續(xù)。在此做一下記錄,網(wǎng)上找research scientist崗位的經(jīng)歷分享相對較少,不希望自己以后淡忘了這段找工作經(jīng)歷,也希望可以幫到后面畢業(yè)找工作的同學(xué)們,國內(nèi)找工作的同學(xué)也歡迎參考。
來源:劉壯?https://zhuanlan.zhihu.com/p/537028803
