别再搜集面经啦!小夕教你斩下NLP算法岗offer!
推完上一篇文章,訂閱號和知乎后臺有好多小伙伴跟小夕要面經(還有個要買簡歷的是什么鬼),然鵝小夕真的沒有整理面經呀,真的木有時間(。 ?︿ ?。)。不過話說回來,面經有多大用呢?最起碼對于NLP崗位的面試來說,小夕發現根本不是面經中說的樣子。。。
其實今年參加NLP算法崗秋招的小伙伴可能有感慨,
“照著別人的面經去準備了辣么多,輪到自己面試時內容怎么這么不一樣?!”
“說好的要做到熟練推導SVM呢?怎么從來沒人讓我推導SVM?”
“整場面試都在聊前沿論文啊什么鬼?從來沒見這樣的面經呀!”
“為什么面試官只問他簡歷內容,輪到我時一點簡歷內容都不問?“
不止今年,將來的面試肯定更趨向于千人千面,畢竟AI行業也將越來越細化嘛。所以小夕精心準備了這篇“萬能”文章給你們,希望大家將來都能收割到自己想要的offer~
這篇文章不是面經集合,也不是裝X和販賣焦慮的曬offer貼,也不是堆砌可能問到的知識點,而是希望給還在迷茫的小伙伴提供一些系統的指導和建議。當然,這些建議可能不適合每個人,因此希望大家從這篇文章里汲取到適合自己的養分,千萬不要邯鄲學步哦m(——)m
目標觀眾
首先,本文的討論范圍僅限自然語言處理(NLP)相關崗位!親測NLP崗的套路跟數據挖掘、機器學習崗還是有明顯差異的,所以千萬不要按本文的套路去準備DM、ML的面試!
然后說一下本文的目標群體。想去拿Google AI中心、FAIR、MSRA offer的大佬請放過小夕(。 ?︿ ?。)真的木有經驗可以分享。還有那些已經一大把頂會的小伙伴,求給小夕指導好么!
其實之前小夕也曾想著去外企的研究院(雖然菜的一無所有),然而很扎心的一次次打聽到外企的研究院基本只招PhD。雖然外企的業務部門也有NLP崗位,而且碩士也能進,但是進一步打聽了一下,聽說碩士進去很少有research相關的工作,最多做做模型優化,弄不好就是爬數據、清洗數據了。后來拿了一家的offer后發現確實如此,加上后來沒什么面試的狀態了,也就放棄這一塊了。不過有條件的同學可以在外企研究院或業務部門做做intern,這方面對碩士友好的多,而且聽說很多業務部門的research工作也會讓intern來做。
言歸正傳,對于想拿國內一線大廠的核心研究部門和核心業務部門NLP算法崗/研究崗offer的童鞋,轉發本文,你就收獲了半個offer!打賞本文,你就收獲了0.75個offer!(等等,文風好像越來越像傳銷了。。。)
國內的NLP方向的崗位一般叫做NLP研究員/算法工程師/工程師,如果你的目標是跟下面小夕的戰績一樣,那么本文或許可以給你提供點啟發。
按流程來說吧。首先簡歷投了一圈都很幸運的木有沉(算了算差不多十來家,很多沒內推);筆試參加了網易、網易游戲和今日頭條,都很幸運的木有掛(雖然做完后都感覺要掛);面試過程中跪掉了騰訊和頭條(小夕辣么可愛,怎么能忍心拒絕(。 ?︿ ?。)),最后拿了下面幾個offer:
百度和阿里的SP offer或以上(某廠offer我不確定是不是該叫SSP),還有網易游戲等幾個第二三梯隊、快手等startup公司的offer(出了等級的也都給了SP及以上)。
ps:其他公司都是各種原因沒去筆試或面試(記錯了時間或者時間沖突,HR又不給調時間m(_ _)m)
好了,如果確定你是本文的目標讀者,歡迎往下看。
Research or Product ?
首先,要搞懂自己想要什么。粗略的看,如果想做research,比如發發paper,打打國際比賽,做做通用技術平臺,為現在或將來的產品孵化算法接口,就去偏research的部門;如果想直接優化產品的算法指標,看到自己的成果快速反映在產品的用戶體驗和經濟效益上,那就去偏業務的部門。這兩種不同導向的部門在面試的時候的關注點會存在一定差異。
當然,再偏research的部門也會把成果直接或間接的輸出到各個產品線上(否則養你干嘛),再偏業務的部門也會有做research的團隊,畢竟NLP本身還沒有成熟嘛。
不過總的來說,比如你想做research,有不錯的論文或比賽經歷,對某個方向研究的比較深入,但做系統的經歷相對匱乏,則偏research的部門可能更賞識你;如果你想做產品,并且做系統、啪代碼的能力不錯,論文也刷了不少但是科研熱情不高,則你可能跟業務部門更match。
說了這么多,到底該怎么判斷一個部門偏research還是偏業務呢?最靠譜的還是跟HR或者該部門的師兄師姐聊,如果沒有,可以根據名字猜測一下,比如下面給出幾個case:
ps:以下case跟人家真正的定位沒有半毛錢關系,信息多總結自小夕和小伙伴的面試主觀感受,注意是主觀感受
偏research/通用平臺的:
百度:自然語言處理部
阿里:達摩院的數據科學研究院(IDST)
騰訊:AI lab
網易游戲:伏羲AI實驗室
京東:AI lab
滴滴:AI lab
商湯:研究院(沒錯,商湯研究院也有NLP)
偏業務/產品的:
百度:度秘事業部、智能客服部
阿里:智能服務部(阿里小蜜)、達摩院的AI labs(天貓精靈等)
網易:有道事業部
好了,搞懂了自己想做什么,瞄準一兩個目標部門立個flag,后續就要圍繞這根主線來哦。有條件的童鞋可以找師兄師姐提前打聽一下意向部門的研究方向或者業務方向,免得準備了一年后發現人家根本不做這個。。。如果實在打聽不到,可以搜羅一下該部門近幾年的頂會paper、專利、宣傳文章之類的,結合官網上的宣傳,基本可以摸個差不多。
啰嗦了好多,下面就分享經驗啦。內容分私貨篇和干貨篇,私貨篇主要講前期的準備(筆試、簡歷、論文、比賽、實習等,沒耐心的同學可以只看加粗的內容),干貨篇看似是對小夕幾十場面試的面經的知識點濃縮,實際上只是為了說明一個trick,即別人的面經不重要,去為自己的關鍵詞去量身定做復習計劃吧。文末給出一些超級有信息量的tips。
私貨篇
1. 筆試與面試中的筆試的準備
這方面小夕走了不少彎路,其實提前批(7月下旬到8月底)基本不會有筆試(今日頭條、網易、網易游戲這三家有),因此大可把主要精力放在簡歷及延伸內容里。但是!解基本編程題的能力還是要鍛煉出來的,這是紅線。
面試中的白板編程題一般都超級簡單,基本都是leetcode簡單級別的或者劍指offer上的原題,偶爾出個leetcode中等難度的題。小夕把劍指offer刷了不到一半,leetcode刷了30來道題(按類別和top review過濾后刷,先刷簡單的),發現應付提前批面試中的編程題基本都可以應付了。當然,精力允許的話還是多刷點,畢竟解題解得快,別留邊界問題,會給面試官印象好一些。
哦對了,編程語言的話,放心的用python就好,小夕實在沒時間復習C/C++/Java了,所以leetcode還有各家的筆試面試都是用python寫的,親測沒毛病。
至于計算機網絡、操作系統、計算機組成原理、數據庫、編程語言、設計模式之類的基礎課,閑暇時翻一翻吧,全都從頭復習一遍太費精力了,這些一般只出現在筆試的選擇題中。面試過程中除了今日頭條,其他家從來沒考過。
另外,矩陣論、概率統計這些數學課也記得順手復習哦,聽后來參加正式校招的小伙伴說,有的大廠的算法崗試題不怎么考計算機基礎,本科的數學課倒是考了很多。不過小夕親測碩士階段的數學課像最優化之類的,考的非常非常淺,科普級別的深度就夠應付了。(感覺最優化白學了(′Д` ))
最后小夕不靠譜的猜測有的廠的筆試刷人可能不全看總分。因為小夕在網易的筆試的選擇題部分瞎蒙了好多題,最后40分的問答題也完全空著沒做,就中間30分的編程題磕磕絆絆的基本AC了(也掛了幾個case),但是最后筆試竟然過了。
2. 簡歷的準備
翻了一下,發現自己的簡歷前前后后改了23版。。。回看7月份的簡歷,簡直辣眼睛╮( ̄▽ ̄””)╭
毫無疑問簡歷是最最最重要的東西,它不僅是面試的敲門磚,而且基本貫穿了整個面試過程!從小夕的經歷看,不加面試中的白板編程時間,簡歷內容一般會占據每輪面試80%-100%的時間(今日頭條除外),其中占到100%時間的面試能占到50%以上。
做簡歷的最基本也是最關鍵也是最容易被忽視的一條原則是,整體內容一定要跟崗位需求match!其實做簡歷跟寫文章很像,要圍繞一根主線展開,如果發現電路也做,視覺也做,推薦也做,NLP也做的話,很容易被打上“跟崗位不match”或者“這孩子做事浮躁”的tag。(身邊一小伙伴就這樣被某二梯隊廠以“NLP經歷不足”為理由掛掉)
對于已經一串paper的那種簡歷來說,就不做建議了。但是如果對于比賽、論文、項目、專利都只有幾條的童鞋來說,完全可以把簡歷做的有的放矢,match的內容展開寫,不match的一筆帶過或者直接不寫,這樣面試官也省的一條條甄別信息量,面試過程也會變得更加主題明確。
小夕的一個小trick是,可以嘗試把最有信心在面試中談起的經歷所在的板塊寫在最前面(僅次于教育經歷),并用配色突出這條經歷。小夕親測這樣的第一條經歷可以聚焦非常多的面試火力,甚至有15%的面試是全部面試時間都在死磕這條經歷!而且小夕神奇的發現,各輪面試很少有第一輪面試官問第一條,第二輪面試官問第二條這種,倒是經常有面試官覺得你第一條經歷很亮,于是告訴下一輪面試官這條很亮,然后下一輪面試官出于好奇就深入問這條經歷,如果他也覺得很亮,就會轉述再下一輪面試官,于是再下一輪面試官又會主要問你這條經歷╮( ̄▽ ̄””)╭,然后offer就到手了。當然,這樣的副作用就是,如果對面試官來說這條經歷不亮,那面試基本掛掉一半了。
另外,除非你碩士期間對一個方向鉆的很深、已經可以駕馭這個方向的絕大部分問題了,否則小夕墻裂建議單獨設置一個板塊列一下自己研究過的算法問題。比如分兩級,第一級講方向(比如對話系統),第二級講具體研究的子問題(比如聊天的一致性問題),這樣可以避免面試官對你進行天馬行空式的考察,畢竟碩士時間有限,哪怕只做NLP中的一個方向,也難以研究的面面俱到。該板塊會貢獻大量的關鍵詞,這些關鍵詞基本可以決定面試官對你的考察范圍,詳見后面的干貨篇。
還有一個trick,簡歷內容太多,做到兩頁后,難免最后要塞一些無關痛癢的榮譽(比如獎學金啥的)還有一些主觀內容(比如算法研究、IT技能、自我評價之類的),這樣面試官看到后面發現沒營養了反而容易忘掉前面的亮點,所以小夕是把一條亮點經歷放在簡歷最后點個題(記得顏色突出一下,否則真被忽略了就哭了),這樣會讓面試官覺得整個簡歷“干貨滿滿,這么亮的經歷都只能排到最后面了”。
最后,對小夕簡歷好奇的小伙伴也不要好奇了,除了性別沒什么亮點╮( ̄▽ ̄””)╭各種被HR指控填錯了性別,最后無奈之下把性別加粗了。嗯,是加粗了,不是改了。
3. 論文的準備
首先diss一下很多人把收不到NLP算法崗offer歸結于沒有頂會論文,實際上碩士期間出一篇頂會論文對于絕大部分碩士來說還是非常難的,更何況AAAI這類頂會自帶灌水嫌疑,如果面試過程中也給人感覺是水文的話更不算什么加分項了。一般來說,碩士期間出一篇有意義的頂會最少意味著:
研一下學期之前把所有基礎打好(不然別人刷paper的時候你刷教材么
有很負責且很有經驗的導師/高年級博士帶(純靠自己摸索的話基本洗洗睡了
方向沒偏(有些導師做的方向實在難出paper
數學、coding能力過關(學個numpy、tensorflow要花大半年的話可以轉行了
運氣好(不是說觀點新,實驗效果好,寫的也ok就能中的,你要相信神馬審稿人都會有的
一般來說研二那一年的最后能投的頂會是在4月之前的,再往后的會議出來錄取結果的時候基本校招提前批進行一大半了,簡歷能丟的都丟出去了,所以真正可以好好做科研的時間基本只有研一下學期+研二上學期。(本科出頂會的大佬忽略)
而對于大部分人來說,很難一下子就有一個idea,然后一下子就做出來了好實驗效果,一下子論文寫的也很漂亮,一下子就中了頂會的,基本都要從水會投起,摸索套路,所以一無所有的情況下非頂會不投幾乎等同于作死(當然水某些A類頂會的話另說)。但!是!盡自己的努力去水一篇非頂會還是不難的(比如CCF C類的水會,EI檢索之類的)。水完水會之后,想進一步水頂會的小伙伴們可以根據這個ddl時間表規劃一下自己的時間
-> https://aideadlin.es/?sub=NLP,ML
4. 比賽的準備
除了論文,另一個有吸引力而且性價比更高的活動就是打比賽了。個人英雄主義在大課題、大項目里很難體現,但是在一個比賽中卻是有了充足的show的機會。但是注意那些小企業小機構辦的幾十個隊伍參賽的小比賽就不要水了,提交個baseline模型就能水個top3挺沒意思的,掛簡歷上會“很掉身價”的。
除了NLP各大頂會和kaggle的比賽,還可以多多關注各個互聯網大廠舉辦的NLP比賽,比如微軟的編程之美挑戰賽(去年是問答bot)、百度的機器閱讀理解大賽、阿里的天池系列比賽等,親測在各大廠的面試中很有效(非舉辦方的互聯網公司一般也都會關注友商的比賽的)。
另外,一定一定要打跟目標崗位match的比賽,底線是NLP比賽。比如你想做chatbot,卻光打一些數據挖掘類的比賽,哪怕top 5也意義不大,但是這時文本匹配、生成、問答相關的比賽哪怕排名一般(差不多容忍到隊伍數的10%)也完全可以強行寫上去。已經有名次很好但是match程度不高的比賽了怎么辦?簡歷上一句話帶過吧,突出強調和大寫特寫只會讓人覺得你跟崗位不match。
具體到比賽過程中,如果你要做NLP,千萬不要靠堆開源模型做ensemble上分,這樣雖然能為你爭取到面試機會,但是這樣基本沒有任何創新,只會讓面試官覺得你是個優秀的搬磚工程師和調參小能手,如果簡歷上也沒有亮點,很容易被掛(身邊有活體例子)。對于面試來說,優秀的單模型超級好用!另外最好把頂會SOTA也拿到比賽數據集上跑一下,這樣面試時更有說服力。
5. 實習與項目的準備
一份兒好的實習經歷確實可以加分,比如MSRA、百度自然語言處理部、阿里idst、騰訊AI lab這些部門的research經歷或者大廠match的業務部門的出色工作都會讓面試難度降低不少,然鵝小夕親測這并不是必須的(心疼的抱抱導師不放實習的自己(。 ?︿ ?。))。同時,小夕也親測實驗室的大項目一般木有多少吸引力,遠不如上面那幾個地方的實習經歷值錢,所以抱怨自己實驗室沒項目的童鞋可以stop了,去找實習機會吧。
6. 其他
最后啰嗦一下,頂會paper、top比賽、大廠研究院實習都不是必須的,但是最好它們取或運算后為真。從小夕身邊的小伙伴的情況看,只要取或運算后為真,一般BAT的核心研究部門或者核心業務部門最少也能拿一個offer。
如果很不幸成為了“三無人員”,那么一定要保證扎實的數學、NLP、coding能力和最少一個研究方向的專精,能夠在面試時表現出超出簡歷描述的能力,這樣也會非常打動面試官的,畢竟誰都想招一個潛力股嘛。
干貨篇
1. 面試中的基礎知識
這一篇說起來都是淚,小夕曾經努力擠出時間復習,手擼了一遍邏輯回歸、最大熵、決策樹、樸素貝葉斯、SVM、Adaboost、EM、HMM、CRF的推導,結果發現從來沒被問到過。。。從來沒被問到過。。。從來沒。。。
然后很奇葩的竟然被問到過TCP三次握手,hadoop中的shuffle機制,linux的find命令怎么用。。。(from 今日頭條)
雖然實現NLP的方法基本離不開機器學習與神經網絡,但是如果按照前面簡歷篇講的準備簡歷內容,其實在NLP崗的面試中很少直接考察ML和NN的理論知識。那考察什么呢?當然是考察關鍵詞呀!所以總結一下自己簡歷的關鍵詞,然后展開復習吧!
下面小夕拿自己舉個例子。小夕簡歷上出現的NLP關鍵字如
問答、MRC、對話、匹配、詞向量、遷移、分類、分詞、POS、NER等
下面是面試中考過的基礎知識舉例
trick:方向不match的面試官喜歡考察詞向量和文本分類相關的知識
模型篇
SGNS/cBoW、FastText、ELMo等(從詞向量引出)
DSSM、DecAtt、ESIM等(從問答&匹配引出)
HAN、DPCNN等(從分類引出)
BiDAF、DrQA、QANet等(從MRC引出)
CoVe、InferSent等(從遷移引出)
MM、N-shortest等(從分詞引出)
Bi-LSTM-CRF等(從NER引出)
LDA等主題模型(從文本表示引出)
訓練篇
point-wise、pair-wise和list-wise(匹配、ranking模型)
負采樣、NCE
層級softmax方法,哈夫曼樹的構建
不均衡問題的處理
KL散度與交叉熵loss函數
評價指標篇
F1-score
PPL
MRR、MAP
可以看出,其實面試考察的基礎知識的內容跟簡歷中的關鍵字高度相關有木有。雖然偶爾也會問到一些超出關鍵字限制的范圍,但是非常非常少,而且基本都是些跟研究方向無關的基礎知識。當然,這個前提是按照前面簡歷篇的建議來認真構造“算法研究”的板塊吶。身邊不少小伙伴吐槽面試官問的問題很偏,跟自己的方向差別大,然而都木有反思過自己的簡歷到底有沒有告訴面試官自己擅長什么,遇到不match的面試官的話肯定被問成狗哇。(當然,遇到完全不看簡歷,方向又跟自己不match的面試官的話可以善意的提醒“抱歉我不是做這個方向的”)
2. 面試中的設計/方案題
除了基礎知識,有的公司還會出一些開放性的設計題(尤其在最后一兩輪面試或者是為SP、SSP設置的加面時),解這些設計題主要還是靠項目和比賽的經驗積累,切忌不要只拿論文說事兒,要站在以最小代價來解決問題的角度出方案,而不是非要用上最新的論文。
解這類題的一條基本原則是,能用規則解決就不要用數據,能用簡單特征工程解決就不要上大型神經網絡,上大型網絡時盡量不要使用深度LSTM這類推理復雜度太高的東西。
最后總結一下,精心的準備好簡歷,那么從巨頭到startup的面試其實都大同小異(個別奇葩面試套路的公司除外)。hold住自己的簡歷和研究方向,白板編程別太差,面試基本都能過。另外,小夕參加的都是提前批,不太清楚正式批會不會有變化。不過貌似正式批的NLP崗少得多,盡量不要把重心放正式批哦
TIPS篇
一定不要錯過提前批!一定不要錯過提前批!一定不要錯過提前批!不要相信錯過提前批還有正式批的鬼話,很多核心部門的NLP崗的hc在提前批就用光了!
提前批不要拖到末尾!尤其百度自然語言處理部的坑,面試當天就給口頭offer,先占先得!
阿里基本是遠程面試,6輪面試都沒編程題!簡歷內容準備好就可以直接投阿里了!
內推之前千萬不要把簡歷掛到騰訊校招系統,填上意向部門都沒用,不match的其他部門很可能以迅雷不及掩耳之勢強行撈起你的簡歷,然后你的騰訊之旅就舉步維艱了(我跟另外倆小伙伴血的教訓。。。)
如果只是想找算法崗,但沒有研究方向,沒刷幾篇paper,不過研發能力強,基礎編程題解的快,工具用的熟,那就去投頭條吧。(親測它提前批的三輪技術面都沒學術味兒,所以優勢在對立面的小伙伴謹慎)
網易游戲可能是國內唯一一家不用在性別欄2選1的企業(測評界面),無償點個贊(其他大廠能不能效仿一下啊喂,優秀的跨性別小姐姐小哥哥那么多,照顧一下嘛\(//?//)\)
謹慎投遞跟第三方招聘網站合作的企業,除非你想換手機號了╮(╯▽╰)╭
總結
以上是生活随笔為你收集整理的别再搜集面经啦!小夕教你斩下NLP算法岗offer!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全栈深度学习第3期: 怎样科学管理实验数
- 下一篇: 新年第二弹|卖萌屋私藏书单大公开