前言:
縱使每個人的求職經歷與感受,如人飲水,冷暖自知,但秉著取之於ptt,用之於ptt的精
神,分享一個北美CS博士班找工作的歷程。
背景:
CS PhD in [email protected]美國東岸大學
Master in ECE & Undergrad in EECS @ 140.113
博班期間阿里北美Intern x 1
LeetCode從找實習開始刷,中斷一段時間,找工季前又開始密集刷,直到找工季結束,共
約350題(easy 111 – medium 229 hard - 13)
學習資源:
很多前輩們都分享過豐富的學習資源,但每個人適用的學習方法不同,這裡僅列出我實際
使用的。
--- 刷題方面 ---
博班期間修過兩次演算法課(大學部+研究所),經典算法及資料結構基本熟悉,所以沒有
額外再讀演算法教材,只有刷LeetCode練習。我覺得對我比較有幫助的刷法是,題目如果
半小時想不出來解法,我就會直接看解答或是討論區,有時候思路大方向是對的,有時候
完全沒想法,但務必確認自己看完解答之後了解算法的邏輯,套用邏輯直接寫一遍,隔幾
天再回頭寫一次。
接近面試前,我習慣刷題的時候給自己模擬面試的感覺,看完題目後,我會先口述不同解
法,並習慣在視窗上打下一些關鍵字,分析時間/空間複雜度,接著再開始寫程式碼。如
果有練習夥伴,實際模擬面試,會很有幫助。
舉例: search a number in sorted list
"""
1.Brute force
Iterate through the list
Time: O(n)
Space: O(1)
2.Binary search
Sorted list, iteratively compare mid point and key
Time: O(lg n)
Space: O(1)
Recursion or while loop
"""
鄰近面試前,參考Blind Curated list (https://leetcode.com/list/5mz5eyue)複習,
搭配一些衍伸的經典題&tag題。
--- ML basics & System Design 方面 ---
我投遞的都是MLE相關的職缺,或多或少都會有machine learning basics & system
design的問題。ML basics的部分,約80%都是學校ML課會教的內容,例如bias-variance
tradeoff, overfitting是什麼這類的,或者deep learning networks的問題。我面試前
,參考網路上的講義大致複習
(https://github.com/hetvidesai03/Algorithm_Interview_Notes-Chinese)。另一方面
ML system design,雖然問題表面上五花八門,但我個人見解認為,對於new grad來說,
核心都是能否闡述一個合理的流程,脫離不了以下幾個關鍵,釐清問題,數據收集,建立
模型,評估模型。具體網路上很多可以參考,分享幾個我覺得很有收穫的。
淺談ML design推薦系統面試心得
(https://www.1point3acres.com/bbs/thread-490321-1-1.html)
Google ML system design mock interview
(https://www.youtube.com/watch?v=uF1V2MqX2U0)
DNN for Youtube Recommendation
(https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf)
A Short Introduction to Learning to Rank
(http://times.cs.uiuc.edu/course/598f14/l2r.pdf)
個人很推薦多看一些Youtube上mock interview的影片,除了瞭解可能會被問到的問題,
也可以學習受訪者如何架構自己的回答。
面試過程:
海投N家,以下僅列出有得到面試機會的公司。
eBay Applied Researcher
-12月底Referral
-1/11 Virtual onsite (VO) 四輪面試+一輪Hiring manager
面試內容主要就是程式問題(LeetCode low medium - medium) + ML basics + ML
system design
-1/15 通知結果
Microsoft Applied Scientist
官網投遞履歷
-1/22 HM email reach out
-1/29 1st phone interview (research background讓我介紹我的研究,提了一些問題討
論)
-2/18 VO 四輪面試
一輪programming + ML design (programming題目,讓你嘗試用ML方法做)
兩輪programming + ML basics
一輪 ML design
-3/31 通知結果
Bloomberg AI Group Research Engineer
官網投遞履歷
-1/22 HR phone reach out
-2/10 1st phone interview (programming LC medium + ML basics on NLP
transformers)
-2/26 2nd phone interview (programming LC medium + ML basics)
-3/18 VO 三輪面試+一輪manager
前兩輪都是ML basics + system design,第三輪programming LC high medium
-4/6 通知結果
Amazon Applied Scientist / Data Scientist
Referral for applied scientist
-2/8 HR email reach out
-3/2 1st phone interview for applied scientist (programming LC medium + ML
basics on deep neural networks)
Programming沒面好
-3/9 通知改面試Data Scientist職缺
-3/15 1st phone interview for data scientist (programming LC low medium + ML
basics)
-3/17 通知可以再改回面試Applied Scientist
-4/8 2nd phone interview for applied scientist (介紹自己的一篇publication&討論
+ programming LC medium)
面試官挑了一篇不是他熟悉領域的文章,讓我解釋來龍去脈,過程中他會不斷挑戰我動機
以及方法合不合理,討論地比較深入,以至於面試完我提問時,他才想到要考coding,最
後延長15分鐘考完。
-4/15 通知進VO,但已經決定去其他公司,故終止面試
結語:
三生有幸,找工季的結尾,是得到一個很好的機會去挑戰下一個階段。最大的感想就是,
努力固然很重要,緣分加上一點運氣也是不可或缺,哪怕是平時有心無心的networking,
履歷剛好被HR看到,面試官看重的評量項目,還有很多其他的因素,都不是我們能掌握的
。試著從那些欠缺一點運氣的經驗中盡量汲取養分,其他的就怪給緣分吧。最後,祝大家
找工作順心!
--