寫在前面
今天給大家分享一份NLP算法方向的社招面經,當然校招也可以參考,希望對大家有所幫助。在今年這個相對糟糕的大環境下,面試者歷經1個多月的刷題復習+1個多月的面試,最終拿到了多個大廠offer。
1.背景
2022年大環境不太好,整體hc(head count)比2021年少了很多,回想2021年,各個候選人所到之處,各家大廠中廠竭誠歡迎,hc充足,大家挑花了眼,那種生機勃勃,萬物競發的景象猶在眼前,沒想到短短一年之后,居然情況急轉直下。
情況介紹:我主要做nlp,也涉及到多模態和強化學習。2022年的大環境比較差,能投的公司不是很多,比如騰訊,主要還是高級別的,所以騰訊我就沒投(說得好像我投了能面過一樣...)。面了的公司包括小紅書,抖音,寒武紀,螞蟻,還有一些國企和研究院,比如北京智源人工智能研究院,某國內金融公司,其他的用來練手也面了一些,比如蔚來汽車,吉利汽車,華人運通,boss直拒,還有一些元宇宙公司,AI制藥公司之類的,拿到了其中大部分offer,當然我自己也遇到一些拉胯情況,比如小紅書二面掛[笑哭]。
2. 面試總結
這一個多月面下來,總體面試考察主要包括下面幾個模塊:代碼題+項目細節+八股文+場景題。其中:
代碼題
代碼題,寫不出來大概率還是要跪的,我覺得刷200道左右一般就問題不大。200道爭取達到肌肉記憶,就是給出你題目你要10s之內給出思路,哪怕沒有bug free,但是一定要保證有思路。有一點要注意,200道高頻題刷2遍,好過400道題目刷一遍,重點還是刷高頻題。另外推薦的刷題地址,里面可以選擇公司和標簽:
刷題地址:https://codetop.cc/home
項目
項目細節我的感觸最深,有些面試官會問的很細,在不斷的試探我們的邊界,所以項目細節還是要準備到位。通過這段時間的面試我反而對項目的理解更深刻,不知道這算不算面試給我帶來的收益?
這里有一個提高通過率的小trick:可以和1個或者多個靠譜小伙伴一起,讓大家看對方的簡歷,假設自己是面試官,然后針對項目出一些題目,這樣一來可以查漏補缺,有點co-teaching的感覺,這個方法還是挺管用的,大家可以試試~
八股文
八股文的話主要圍繞項目出題,比如你做了強化學習的東西,那么常見的reinforce,actor-critic,on policy和off policy的區別,一定要掌握。比如你項目用到了swin-transformer,那么swin-transformer和傳統的transformer的區別是什么,patch merging怎么做的,要清楚。
場景題
場景題可能是大廠喜歡考察,小廠不一定問。
3.面經
廢話不多說,面經奉上。
3.1 小紅書
3.1.1 小紅書一面
聊項目。
你們的訓練集和驗證集,測試集分別是多少?怎么來的?
宏平均和微平均是用來干什么的?是如何計算的?他倆的主要區別?
知識蒸餾為什么有效,詳細介紹一下知識蒸餾?
強化學習適合在哪些場景使用?
智力題:如何用rand6實現rand10。
代碼題:lc 76,最小覆蓋子串。
3.1.2 小紅書二面
聊項目。
layer normalization的好處是?和batch normalization的區別?你有沒有看過有的transformer也用bn?
BERT的主要改進,包括結構的改進,預訓練方式的改進,都說一下?(這里能說的很多,挑自己熟悉的說就行)
Reformer中,LSH(局部敏感哈希)是如何實現的?
CRF和HMM的區別,哪個假設更強?他們的解碼問題用什么算法?
lstm參數量計算,給出emb_size和hidden_size,求lstm參數量。
cv中有哪些常見的數據增強方式。
簡單實現一個layer normalization類,只需要實現__init__和forward就行。
總結:這一面壓力不小,而且面試官從一開始就多次打斷我的說話,說我目前做的項目沒意義,而且表情好像不耐煩,不知道是不是晚上面試耽誤他下班了。這是我體驗最差的一場面試,當時我有點想和他懟起來,但是想想還是忍住了,最后掛了也是意料之中
3.2 抖音
3.2.1 抖音一面
聊項目。
AUC的兩種公式是?你能證明這兩種等價的嗎?
BERT-CRF中,為什么要加CRF?好處是?
self-attention為什么要用QKV三個矩陣,不用有什么問題?有沒有哪個模型的Q和K矩陣是一樣的?
reinforce屬于on-policy還是off-policy?為什么?
reinforce帶上baseline好處是?reinforce的loss寫一下?
策略梯度會推導嗎?簡單寫一下?
代碼題(代碼題一般別著急寫,先跟面試官說下思路,確定了再寫):
lc 46,全排列(lc表示leetcode,下同)。
lc 73,矩陣置0。
總結:這一面我以為面試官只會問多模態,不會問強化學習,沒想到這個面試官好厲害,強化學習也很懂,真的很強啊,我比較好奇,他們哪里來那么多時間看那么多領域的東西
3.2.2 抖音二面
介紹項目。
知識蒸餾有哪幾種?你覺得哪種效果最好?
nlp的數據增強方法,主要有哪幾種?每一種舉個例子?
分類的損失函數為什么是交叉熵而不是mse?
BERT對輸入文本的長度有什么限制,為什么要限制長度呢?
BigBird里面有哪幾種注意力機制?相比原始transformer的self-attention的優勢?
場景題:如何根據拼多多的商品數量,估計淘寶的商品數量?
給出emb_size, max_len, vocab_size, ff_inner_size,num_heads, 12層,求BERT參數量。
代碼題:n皇后問題。
總結:給我來了一道hard題目,我以為我要掛了,結果沒幾分鐘HR告訴我過了。
3.2.3 抖音三面
簡單聊項目。
CRF和HMM區別?CRF為什么比HMM效果好?
如果BERT詞表很大,比如vocab_size達到幾百萬,怎么辦?
快速手寫一些transformer的mha(多頭注意力),偽代碼意思一下就行。
為什么對比學習中,temperature很小,而知識蒸餾的temperature比較大?
你覺得在抖音買東西,和淘寶、拼多多他們的區別是?(我沒在抖音買過,就只能現場編。)
你最近看到過哪些paper?簡單介紹下?
你覺得自己有那些優缺點?平時喜歡怎么緩解壓力?
總結:這一面的面試官很和藹,一直笑呵呵的,后面就是閑聊了,體驗很不錯。
3.3 螞蟻
3.3.1 螞蟻一面
聊項目。
多模態的預訓練方式你知道哪些,知道的都說一下?
coca和CLIP的區別?為什么coca效果比CLIP好?
CLIP預訓練的時候,batch size達到了32768,他用到了哪些trick去提高batch size?
CRF的loss寫一下,CRF打破了HMM的哪個假設?
對比學習為什么有效?cv和nlp的經典的對比學習的模型說一下?
多頭注意力的頭的數量,對參數量有影響嗎?為什么?
transformer里面為什么要加add&norm模塊?好處是什么?
代碼:
簡單實現一個transformer-encoder-layer,要求pre-norm和post-norm可選。
編輯距離。
這和我想的螞蟻的面試不太一樣,我以為螞蟻的代碼題會容易一些呢,之前看到的面經,螞蟻的代碼題一般以medium為主
3.3.2 螞蟻二面
聊項目。
衡量對比學習的兩個指標是哪些?公式?
transformer相比lstm的優勢有哪些?
distillBERT, tinyBERT, mobileBERT和miniLM,他們是如何對BERT蒸餾的?
ViT是如何對圖片進行處理的?為什么要加position embedding?
說到position embedding,transformer一定要加position embedding么?有些模型沒有加pe,你知道嗎?
beam search的思想,偽代碼實現。
代碼題:lc 33,排序數組的搜索。
3.3.3 螞蟻三面:
聊項目。
多頭注意力,給出序列長度n和hidden_size,那么多頭注意力的時間復雜度是多少?
ALBert相比BERT的改進,說一下?
BERT預訓練有哪些問題?后面的模型怎么改進的?重點說說ELECTRA和MacBERT。
有沒有了解過,有的模型用生成的方式做信息抽取?
講一下UIE模型是怎么做信息抽取的?其中的SSI和SEL說一下?
你老家哪里的?有哪些興趣愛好?
你覺得自己優缺點有哪些?
我們走個流程,來一道代碼題吧:lc 207,課程表。
3.4 寒武紀
3.4.1 寒武紀一面:
聊項目。
你知道哪些對比學習的方法?cv和nlp都說一下。
simCLR和moco區別?moco里面加k_encoder的作用?
moco v2, moco v3相對moco的改進有哪些?
resnet為什么效果好?殘差連接的好處?
pytorch中,dataloader dataset和sampler的關系?
動態圖和靜態圖區別?
蒸餾,量化和剪枝的原理大致說一下?
3.4.2 寒武紀二面:
聊項目。
簡單介紹一些CRF的好處,CRF條件概率的公式寫一下。
transformer相比lstm的優勢有哪些?
transformer優點那么多,是不是可以淘汰lstm了,以后全用transformer?
swin-transformer和ViT的區別?數據量少的時候,他們和ResNet比,哪個效果好?為什么?
寒武紀做什么你知道嗎?分布式訓練用過嗎?
pytorch的ddp和dp區別是什么?
你對混合精度的了解多嗎?說一下混合精度的原理?
4. 面試感受總結
高密度的面試挺累的,所以我建議分階段面試:前期面試一些練手的小公司,同時這些小公司也不能太水,不然達不到練手的效果,然后比如隔一周時間稍微總結下,接下來正式面試自己的dream company。
結對跳槽是個不錯的選擇,這次跳槽我和朋友一起跳,相互給對方出題,相互吐槽自己遇到的奇葩面試官,比自己一個人跳槽有趣的多。這次面試的復習過程也得到了很多大佬的幫助,比如 給了我很多指點和建議,沒有他們的幫助我估計面試通過率下降一半,所以內心真的特別感謝~
持續更新中,因為最近面試完了以后有點累,加上本身工作也有點忙,面經沒寫完,后面會繼續更新~
審核編輯 :李倩
-
算法
+關注
關注
23文章
4625瀏覽量
93143 -
nlp
+關注
關注
1文章
489瀏覽量
22065
原文標題:NLP算法面經分享
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論