的核心考點(diǎn))
先聊聊現(xiàn)狀吧。這兩年NLP算法崗的面試跟五年前完全不是一個(gè)畫風(fēng)。以前能背熟word2vec、講清楚LSTM的門控機(jī)制再會(huì)調(diào)個(gè)BERT做文本分類基本就能拿到不錯(cuò)的offer。現(xiàn)在不行了面試官上來直接問LoRA的秩怎么選、RoPE和ALiBi的區(qū)別、大模型幻覺怎么緩解甚至讓你現(xiàn)場(chǎng)推一遍Flash Attention的計(jì)算流程。我見過不少基礎(chǔ)很扎實(shí)的候選人在深度學(xué)習(xí)八股上答得滴水不漏結(jié)果一個(gè)“為什么BERT用LayerNorm而不是BatchNorm”就被問懵了。說到底NLP算法崗面試考的不是你會(huì)不會(huì)調(diào)包而是你有沒有把底層的原理吃透能不能在簡(jiǎn)歷之外展現(xiàn)出真正的技術(shù)深度。這篇文章我就把這兩年積累的面試知識(shí)點(diǎn)從頭到尾梳理一遍覆蓋機(jī)器學(xué)習(xí)基礎(chǔ)、詞向量與語言模型、Transformer與注意力機(jī)制、預(yù)訓(xùn)練模型、LLM微調(diào)與對(duì)齊、經(jīng)典NLP任務(wù)、手撕代碼以及面試問答技巧。不管是準(zhǔn)備校招還是社招跳槽照著這套體系去復(fù)習(xí)能少踩很多坑。1. 面試準(zhǔn)備與知識(shí)體系搭建1.1 崗位畫像NLP算法崗到底在考什么很多人一聽說“NLP算法崗”第一反應(yīng)就是“要會(huì)深度學(xué)習(xí)、要會(huì)Transformer、要會(huì)用BERT”。這話對(duì)但不完整。實(shí)際面試考察的是三個(gè)維度的疊加基礎(chǔ)理論的扎實(shí)程度、工程實(shí)踐的熟練程度、以及問題拆解的思維深度?;A(chǔ)理論包括機(jī)器學(xué)習(xí)經(jīng)典算法、概率論與數(shù)理統(tǒng)計(jì)、深度學(xué)習(xí)的核心組件激活函數(shù)、損失函數(shù)、優(yōu)化器、歸一化。工程實(shí)踐包括PyTorch的熟練度、數(shù)據(jù)處理能力、模型訓(xùn)練與調(diào)參經(jīng)驗(yàn)、線上部署的基本認(rèn)知。問題拆解則體現(xiàn)在面試官拋出一個(gè)開放性問題時(shí)你能不能結(jié)構(gòu)化地分析、給出方案、權(quán)衡取舍。從實(shí)際面試反饋來看校招更側(cè)重理論基礎(chǔ)和代碼能力社招則更側(cè)重項(xiàng)目深度和系統(tǒng)設(shè)計(jì)能力。但無論哪種Transformer的原理和預(yù)訓(xùn)練模型的相關(guān)知識(shí)都是必考項(xiàng)這點(diǎn)五年內(nèi)不會(huì)變。1.2 知識(shí)地圖從基礎(chǔ)到前沿的分層復(fù)習(xí)策略我總結(jié)了一套分層的復(fù)習(xí)路徑按優(yōu)先級(jí)排列第一層是NLP基礎(chǔ)文本預(yù)處理、詞向量word2vec、GloVe、FastText、語言模型N-gram、RNN、LSTM、經(jīng)典任務(wù)文本分類、序列標(biāo)注、語義匹配。第二層是深度學(xué)習(xí)核心注意力機(jī)制、Transformer結(jié)構(gòu)、位置編碼、LayerNorm、優(yōu)化器與學(xué)習(xí)率策略、過擬合與正則化。第三層是預(yù)訓(xùn)練模型時(shí)代BERT的預(yù)訓(xùn)練任務(wù)與結(jié)構(gòu)細(xì)節(jié)、GPT系列的自回歸范式、RoBERTa/ALBERT/DeBERTa等改進(jìn)方案、Tokenizer的BPE原理。第四層是大模型相關(guān)LoRA/QLoRA等參數(shù)高效微調(diào)、RLHF與DPO對(duì)齊、RAG檢索增強(qiáng)、Prompt工程、解碼策略貪心/束搜索/采樣、幻覺問題、長(zhǎng)文本處理與上下文窗口。第五層是手撕代碼模型結(jié)構(gòu)復(fù)現(xiàn)、注意力計(jì)算、CRF解碼、常用機(jī)器學(xué)習(xí)算法手推、LeetCode中等等難度的算法題。這套路徑唯一的坑是貪多嚼不爛。我見過有人把大模型論文背得滾瓜爛熟結(jié)果問“softmax的溫度系數(shù)怎么影響輸出分布”答不上來——這種基礎(chǔ)細(xì)節(jié)才是區(qū)分度的關(guān)鍵。2. 機(jī)器學(xué)學(xué)習(xí)與NLP基礎(chǔ)核心考點(diǎn)2.1 文本表示從詞袋到詞向量的演進(jìn)邏輯面試從文本表示切入的頻率極高因?yàn)檫@是NLP最底層的“終極一問”文本怎么變成計(jì)算機(jī)能理解的東西最早是詞袋模型Bag of Words和TF-IDF核心思路是“文檔中出現(xiàn)了哪些詞以及有多重要”。TF-IDF 詞頻 × 逆文檔頻率詞頻看局部逆文檔頻率看全局——一個(gè)詞在越少的文檔里出現(xiàn)它的區(qū)分度就越高。這個(gè)思想到現(xiàn)在仍然值得理解因?yàn)楹芏喽涛谋酒ヅ鋱?chǎng)景里TF-IDF依然是強(qiáng) baseline。之后是分布式表示也就是詞向量。word2vec包括CBOW和Skip-gram兩種結(jié)構(gòu)CBOW用上下文預(yù)測(cè)中心詞Skip-gram用中心詞預(yù)測(cè)上下文。面試官幾乎必問“word2vec的訓(xùn)練目標(biāo)是什么負(fù)采樣是干什么的”答案的核心是word2vec本質(zhì)上是在學(xué)一個(gè)“共現(xiàn)概率”的隱表示負(fù)采樣通過隨機(jī)采樣負(fù)樣本解決softmax歸一化計(jì)算量過大的問題。很多人忽略的一點(diǎn)是word2vec忽略了詞序信息——它是詞袋模型加淺層網(wǎng)絡(luò)的混合體所以對(duì)語義的捕捉有上限。GloVe則引入了全局共現(xiàn)矩陣用矩陣分解的思想來學(xué)習(xí)詞向量。FastText把word2vec和n-gram特征結(jié)合對(duì)OOV詞表外詞也能生成向量。面試問到這類問題時(shí)如果能主動(dòng)說“這些方法的本質(zhì)差異在于word2vec是局部的、GloVe是全局統(tǒng)計(jì)的、FastText是子詞粒度的”面試官的好感度會(huì)立刻提升。2.2 語言模型NLP的“操作系統(tǒng)”語言模型的目標(biāo)是計(jì)算一個(gè)句子的概率也就是預(yù)測(cè)下一個(gè)詞出現(xiàn)的概率分布。N-gram模型是最樸素的方式假設(shè)第n個(gè)詞只跟前面n-1個(gè)詞有關(guān)。缺點(diǎn)是數(shù)據(jù)稀疏和長(zhǎng)依賴缺失n稍微大一點(diǎn)組合數(shù)量就爆炸了。RNN和LSTM解決了N-gram的長(zhǎng)依賴問題但RNN有梯度消失和梯度爆炸的天然缺陷。LSTM通過輸入門、遺忘門、輸出門和細(xì)胞狀態(tài)來緩解梯度消失但本質(zhì)上它依然是串行處理無法并行化這也是Transformer后來取代它的根本原因。對(duì)語言模型的考查深度不限于此。現(xiàn)在大模型時(shí)代面試官會(huì)問“N-gram概率怎么平滑處理”——Good-Turing估計(jì)、Kneser-Ney平滑這些經(jīng)典方法在LLM的低頻詞處理、文本生成去重中依然有應(yīng)用價(jià)值。復(fù)習(xí)的時(shí)候不要只背結(jié)構(gòu)圖要能推公式、能比較各自的優(yōu)缺點(diǎn)。2.3 經(jīng)典機(jī)器學(xué)習(xí)算法在NLP里的切入點(diǎn)NLP算法崗不是只考深度學(xué)習(xí)經(jīng)典機(jī)器學(xué)習(xí)算法同樣會(huì)涉及只是考法更偏“結(jié)合場(chǎng)景”。邏輯回歸基本必考因?yàn)樗俏谋痉诸愖畛S玫腷aseline。要能寫出sigmoid的形式、推導(dǎo)交叉熵?fù)p失的梯度、理解正則化的作用L1做特征選擇、L2控制權(quán)重幅度。SVM在NLP面試?yán)锟嫉孟鄬?duì)少但偶爾會(huì)有面試官問“為什么SVM不適合大規(guī)模文本分類”——因?yàn)槲谋咎卣骶S度極高、樣本量巨大核函數(shù)的計(jì)算代價(jià)不劃算。最大熵模型、樸素貝葉斯、HMM隱馬爾可夫模型和CRF條件隨機(jī)場(chǎng)也值得認(rèn)真復(fù)習(xí)。尤其是CRF序列標(biāo)注任務(wù)繞不開它。面試常問“CRF和Softmax LSTM相比優(yōu)勢(shì)在哪里”答案是CRF建模了標(biāo)簽之間的轉(zhuǎn)移約束比如BIO標(biāo)注里I不能出現(xiàn)在O后面這種約束是逐標(biāo)簽獨(dú)立分類做不到的。3. 深度學(xué)習(xí)核心與Transformer細(xì)節(jié)3.1 Transformer結(jié)構(gòu)為什么是它而不是RNNTransformer幾乎是NLP面試的第一高頻考點(diǎn)。面試官可以順著一條線從淺到深地問自注意力是什么為什么要縮放點(diǎn)積多頭注意力的意義為什么用LayerNorm位置編碼怎么做訓(xùn)練時(shí)為什么用teacher forcing先說自注意力。對(duì)輸入X做線性變換得到Q、K、V三個(gè)矩陣注意力權(quán)重是Q和K的點(diǎn)積經(jīng)過softmax歸一化后的概率分布然后用這個(gè)分布對(duì)V加權(quán)求和。這里有個(gè)關(guān)鍵細(xì)節(jié)為什么dot product之后要除以根號(hào)dk如果dk很大點(diǎn)積的結(jié)果方差會(huì)變大導(dǎo)致softmax輸出的分布過于尖銳、梯度極小。除以根號(hào)dk本質(zhì)上是將方差歸一化到1附近讓梯度保持穩(wěn)定。多頭注意力的邏輯是單頭注意力只能自學(xué)一套QKV變換不同位置之間的“注意力關(guān)系”可能不止一種模式。多頭并行學(xué)習(xí)多套關(guān)系——有的頭關(guān)注句法依賴有的頭關(guān)注指代關(guān)系有的頭關(guān)注局部共現(xiàn)——最后拼接起來形成更豐富的表示。在面試中解釋“多頭”時(shí)可以加一個(gè)非常實(shí)用的類比單頭注意力像是你只用一個(gè)視角看問題多頭注意力像是讓多個(gè)專家從不同角度分析同一件事最后匯總意見。這樣講既清楚又有記憶點(diǎn)。3.2 LayerNorm與BatchNormNLP為什么偏向前者這個(gè)題已經(jīng)是面試“老油條”級(jí)別的問題了但還是有大批人答不透。BatchNorm在一個(gè)batch內(nèi)、對(duì)每個(gè)特征維度做歸一化它依賴batch size而且對(duì)序列長(zhǎng)度敏感。NLP里一個(gè)batch的序列經(jīng)過padding后長(zhǎng)度不一有效token數(shù)量不同如果還按BatchNorm算均值方差短句和長(zhǎng)句的統(tǒng)計(jì)量會(huì)相互干擾。更關(guān)鍵的是BatchNorm統(tǒng)計(jì)的是整個(gè)batch的全局信息在訓(xùn)練和推理之間存在差異訓(xùn)練用batch統(tǒng)計(jì)量推理用running mean/var這在文本場(chǎng)景中會(huì)帶來不穩(wěn)定。LayerNorm則是對(duì)每個(gè)樣本內(nèi)部的所有特征做歸一化不依賴batch size也不受序列長(zhǎng)度影響。Transformer里每個(gè)token的embedding向量會(huì)做一次歸一化計(jì)算穩(wěn)定、與batch無關(guān)所以成為事實(shí)標(biāo)準(zhǔn)。如果面試官繼續(xù)追問“Pre-LN和Post-LN的區(qū)別”需要答出原始Transformer用的是Post-LN殘差之后接LayerNorm但在深層網(wǎng)絡(luò)中容易出現(xiàn)訓(xùn)練不穩(wěn)定。Pre-LN先歸一化再進(jìn)子層訓(xùn)練更穩(wěn)定、收斂更快但也可能損失一些效果。現(xiàn)在的LLM基本都用Pre-LN加RMSNorm的變體——RMSNorm只對(duì)激活值做縮放、不減去均值計(jì)算量更小。3.3 位置編碼從三角函數(shù)到RoPE與ALiBiTransformer本身是位置無關(guān)的因?yàn)樗鼘?duì)所有token平等對(duì)待沒有顯式的順序信息。位置編碼就是給token注入“我在句子中的位置”。經(jīng)典Transformer用的是三角函數(shù)位置編碼對(duì)不同維度用不同頻率的正弦和余弦波編碼。這樣設(shè)計(jì)的好處是能通過線性變換表達(dá)相對(duì)位置關(guān)系泛化到比訓(xùn)練時(shí)更長(zhǎng)的序列。BERT用的是可學(xué)習(xí)位置編碼直接初始化一個(gè)位置embedding矩陣和token embedding相加后一起訓(xùn)練。簡(jiǎn)單有效但外推性差——訓(xùn)練時(shí)最長(zhǎng)512推理超過512就得改寫或用插值。到了大模型時(shí)代RoPE旋轉(zhuǎn)位置編碼成了主流。RoPE將位置信息通過旋轉(zhuǎn)矩陣注入到QK的點(diǎn)積中使得內(nèi)積只依賴于相對(duì)位置而不是絕對(duì)位置。它的數(shù)學(xué)形式簡(jiǎn)潔二維子空間的旋轉(zhuǎn)而且能插值外推。面試?yán)锶绻岬絉oPE面試官通常有兩種追問一是“RoPE為什么能外推”二是“你能不能推一下RoPE的旋轉(zhuǎn)公式”能做到后者的人鳳毛麟角做到就是加分項(xiàng)。ALiBi是另一種思路不修改embedding而是在注意力打分時(shí)加上一個(gè)與距離成正比的偏置——距離越遠(yuǎn)懲罰越大。它訓(xùn)練快、外推效果好很多開源模型采用這個(gè)方案。4. 預(yù)訓(xùn)練模型與LLM時(shí)代的高頻考點(diǎn)4.1 BERT雙塔自編碼范式的每一個(gè)細(xì)節(jié)BERT的面試問題可以單獨(dú)開一個(gè)清單預(yù)訓(xùn)練任務(wù)有兩個(gè)Masked Language Model隨機(jī)mask掉15%的token讓模型預(yù)測(cè)被mask的詞和Next Sentence Prediction判斷兩句話是否連續(xù)。前者捕捉雙向上下文后者捕捉句間關(guān)系?,F(xiàn)在看NSP任務(wù)在后續(xù)研究里被證明價(jià)值有限RoBERTa去掉NSP后效果反而更好。Transformer Encoder和Decoder的區(qū)別也常常在BERT相關(guān)題目中出現(xiàn)Encoder是雙向的每個(gè)token能看到前后所有tokenDecoder是單向的或帶mask的生成每個(gè)位置時(shí)只能看到當(dāng)前位置之前的token。BERT只用Encoder所以天生是做理解的GPT用Decoder所以天生是做生成的??赡鼙缓雎缘闹R(shí)點(diǎn)包括BERT的輸入是token embedding、segment embedding、position embedding三者相加[CLS]位置的輸出作為整個(gè)句子的表示W(wǎng)ordPiece分詞下的詞表結(jié)構(gòu)768維的hidden size和12層Encoder的基礎(chǔ)配置。面試時(shí)如果被問到“BERT的缺點(diǎn)”可以從這幾個(gè)角度回答一是訓(xùn)練和推理不一致訓(xùn)練時(shí)mask了15%推理時(shí)沒有mask二是[MASK]標(biāo)記在微調(diào)階段不存在三是NSP任務(wù)較弱四是最大長(zhǎng)度512受限。4.2 GPT與自回歸范式生成模型的天下GPT采用的是標(biāo)準(zhǔn)的自回歸語言模型目標(biāo)給定前文預(yù)測(cè)下一個(gè)詞。這個(gè)目標(biāo)的好處是訓(xùn)練目標(biāo)和推理目標(biāo)完全一致不需要額外的mask策略——Decoder自帶的mask已經(jīng)保證了單向性。面試?yán)镒穯朑PT的常見角度是“為什么GPT系列能成為大模型的主流基礎(chǔ)架構(gòu)而BERT不能”關(guān)鍵點(diǎn)在于 第一自回歸目標(biāo)天然適合生成任務(wù)而BERT的MLM目標(biāo)更適合理解任務(wù) 第二Decode-only結(jié)構(gòu)在scaling law測(cè)試中表現(xiàn)更平滑增加參數(shù)量和訓(xùn)練數(shù)據(jù)loss穩(wěn)定下降 第三生成任務(wù)可以統(tǒng)一框架prompt和completion都是純文本不需要額外的task-specific head。但單看GPT也有問題自回歸的生成速度慢逐token解碼、無法利用后文信息、幻覺傾向強(qiáng)。如果在面試?yán)锬苤鲃?dòng)把這些trade-off講清楚比單純背架構(gòu)強(qiáng)很多。4.3 LoRA、QLoRA與參數(shù)高效微調(diào)“你在大模型上面做過什么”這句話基本等于“你會(huì)不會(huì)微調(diào)”。完整地講清楚LoRA提升很大的含金量。LoRALow-Rank Adaptation的核心思想是凍結(jié)原模型的全部參數(shù)在注意力層通常是Q和V矩陣旁路注入低秩矩陣ΔW BA其中B的維度是d×rA的維度是r×k秩r遠(yuǎn)小于原始維度。訓(xùn)練時(shí)只更新A和B推理時(shí)把BA合并回原權(quán)重。面試官愛問“為什么低秩近似有效”答案有幾個(gè)層次預(yù)訓(xùn)練模型的權(quán)重大量冗余大模型微調(diào)時(shí)的參數(shù)變化量本身就集中在一個(gè)低秩子空間中也就是說真正需要學(xué)習(xí)的“方向”不多低秩結(jié)構(gòu)控制了模型更新的自由度反而起到隱式正則化的作用降低過擬合。實(shí)際操作中r的取值很講究。r8在大多場(chǎng)景夠用r16更穩(wěn)但顯存壓力大。經(jīng)驗(yàn)法則如果任務(wù)和目標(biāo)領(lǐng)域差異大可以適當(dāng)增大r如果任務(wù)簡(jiǎn)單r4都經(jīng)常夠用。QLoRA的核心改進(jìn)是量化分頁優(yōu)化器。把預(yù)訓(xùn)練模型量化到4-bit反量化后計(jì)算梯度并只對(duì)LoRA參數(shù)更新。這樣在單張消費(fèi)級(jí)顯卡上就能微調(diào)7B甚至13B規(guī)模的模型是低成本搞大模型最實(shí)用的路線。4.4 RLHF與DPO對(duì)齊技術(shù)對(duì)比RLHF基于人類反饋的強(qiáng)化學(xué)習(xí)是OpenAI帶火的對(duì)齊范式分三步走訓(xùn)練一個(gè)監(jiān)督微調(diào)模型SFT收集人類對(duì)多個(gè)模型回復(fù)的偏好數(shù)據(jù)訓(xùn)練獎(jiǎng)勵(lì)模型RM用PPO算法基于獎(jiǎng)勵(lì)模型優(yōu)化策略模型。PPO的細(xì)節(jié)不用背得太深但核心思路要清楚新舊策略之間做比值裁剪clip防止更新步長(zhǎng)過大導(dǎo)致策略崩壞。采樣的prompt要多樣化reward要經(jīng)過歸一化加上KL散度懲罰防止模型為了高分偏離初始模型太遠(yuǎn)。DPODirect Preference Optimization是對(duì)RLHF的簡(jiǎn)化核心洞察是RLHF中獎(jiǎng)勵(lì)模型的最優(yōu)解是可以閉合求解的因此不需要顯式訓(xùn)練一個(gè)獎(jiǎng)勵(lì)模型直接從偏好對(duì)里優(yōu)化策略。它的損失函數(shù)很簡(jiǎn)單也很優(yōu)美讓被偏好的回復(fù)概率升高被拒絕的回復(fù)概率降低同時(shí)用參考模型做正則化。面試??碱}是“DPO和RLHF各自什么優(yōu)缺點(diǎn)”參考回答RLHF需要訓(xùn)練RM、做PPO采樣工程復(fù)雜度高但可控性強(qiáng)DPO不做在線采樣、不穩(wěn)定時(shí)難排查DPO對(duì)偏好數(shù)據(jù)質(zhì)量更敏感數(shù)據(jù)噪聲會(huì)影響效果。4.5 RAG、幻覺與長(zhǎng)文本處理RAG檢索增強(qiáng)生成是大模型落地應(yīng)用最高頻的技術(shù)?;窘Y(jié)構(gòu)是先用檢索器從外部知識(shí)庫召回相關(guān)文檔片段再把這些片段拼進(jìn)prompt讓模型基于檢索結(jié)果生成答案。RAG的優(yōu)點(diǎn)在于知識(shí)更新成本低、可追溯來源、減少幻覺。面試官會(huì)問“RAG的瓶頸在哪里” 第一檢索質(zhì)量直接決定生成質(zhì)量檢索結(jié)果不相關(guān)再?gòu)?qiáng)的LLM也答不對(duì) 第二多個(gè)chunk拼在一起可能超過上下文限制需要做重排和裁剪 第三引入檢索環(huán)節(jié)后系統(tǒng)延遲變高、端到端優(yōu)化困難。幻覺是生成模型的固有問題面試中可以從三個(gè)層面回答訓(xùn)練層面模型學(xué)習(xí)的是概率分布而非事實(shí)數(shù)據(jù)庫解碼層面beam search和采樣都可能放大錯(cuò)誤token的概率評(píng)估層面沒有統(tǒng)一的幻覺檢測(cè)標(biāo)準(zhǔn)。緩解手段包括提高數(shù)據(jù)質(zhì)量、引入事實(shí)增強(qiáng)微調(diào)、解碼時(shí)限制低置信token、生成后做驗(yàn)證。長(zhǎng)文本處理也是一個(gè)熱門方向。常見方案有滑動(dòng)窗口注意力、稀疏注意力Longformer中局部全局attention、上下文壓縮摘要或選擇隱狀態(tài)、RoPE位置插值、還有把長(zhǎng)文本拆分成多個(gè)session交替處理的方案。5. NLP經(jīng)典任務(wù)與項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn)5.1 文本分類與情感分析最優(yōu)入門項(xiàng)目文本分類是很多候選人簡(jiǎn)歷里第一個(gè)NLP項(xiàng)目。面試時(shí)如果聊到這類項(xiàng)目重點(diǎn)會(huì)落在你怎么處理數(shù)據(jù)不平衡你怎么選擇預(yù)訓(xùn)練模型你用了什么數(shù)據(jù)增強(qiáng)一個(gè)可參考的實(shí)戰(zhàn)路徑是先做EDA探索性數(shù)據(jù)分析——類別分布、文本長(zhǎng)度分布、高頻詞、樣本錯(cuò)誤標(biāo)注然后做baseline——TF-IDF邏輯回歸確認(rèn)數(shù)據(jù)難度的下限再上BERT微調(diào)這時(shí)候要重點(diǎn)關(guān)注兩個(gè)問題一是學(xué)習(xí)率BERT微調(diào)常用2e-5到5e-5二是max_length過長(zhǎng)文本截?cái)噙€是分段。情感分析項(xiàng)目有個(gè)常見加分項(xiàng)把模型預(yù)測(cè)失敗的錯(cuò)誤案例做歸因。高頻錯(cuò)誤往往集中在諷刺、否定、方面級(jí)情感這三個(gè)場(chǎng)景能說清楚為什么模型在這些場(chǎng)景失敗說明你有真正的建模思維。5.2 序列標(biāo)注與NERBIO標(biāo)簽與CRFNER命名實(shí)體識(shí)別是NLP面試的高頻考查項(xiàng)目因?yàn)樗募夹g(shù)棧完整分詞、詞向量、序列標(biāo)注、CRF、常見評(píng)測(cè)指標(biāo)。面試必考的點(diǎn)是BIO標(biāo)注規(guī)則B表示實(shí)體開始I表示實(shí)體內(nèi)部O表示非實(shí)體。要能說清楚為什么不用簡(jiǎn)單的“實(shí)體/非實(shí)體”二分類標(biāo)注——因?yàn)檫B續(xù)出現(xiàn)多個(gè)同類型實(shí)體時(shí)模型無法判斷邊界。NER模型一般用BERTBiLSTMCRF或者BERTCRF。面試官會(huì)問“BiLSTM在這里干什么用的能不能去掉”答案是BiLSTM可以在有限數(shù)據(jù)下捕捉局部上下文依賴但如果預(yù)訓(xùn)練模型很強(qiáng)BiLSTM的增益很小有時(shí)甚至直接去掉更省事。CRF的作用是給標(biāo)簽序列加約束比如I-PER不能直接跟在O后面保證序列整體的合法性。評(píng)測(cè)指標(biāo)是另一個(gè)重點(diǎn)精確率、召回率、F1、嚴(yán)格匹配和寬松匹配的差別。嚴(yán)格匹配要求邊界和類型都對(duì)寬松匹配只看一部分。實(shí)體級(jí)別的F1比token級(jí)別的F1更能反映真實(shí)效果。5.3 文本生成與對(duì)話系統(tǒng)評(píng)估是最大的坑做生成類項(xiàng)目最容易翻車的是評(píng)估。BLEU計(jì)算n-gram精確匹配ROUGE側(cè)重于召回但兩者都和人類判斷的相關(guān)性很差。面試官如果問“你怎么評(píng)估生成的文本質(zhì)量”可以從三層來答 第一層是自動(dòng)指標(biāo)BLEU、ROUGE、BERTScore適合快速篩選 第二層是指標(biāo)回歸測(cè)試——你把生成結(jié)果交給標(biāo)注員打分再計(jì)算與人類打分的相關(guān)性 第三層是任務(wù)級(jí)評(píng)估比如問答系統(tǒng)就直接看答案正確率摘要系統(tǒng)看關(guān)鍵信息覆蓋率。生成任務(wù)的手撕代碼高頻題是beam search解碼。核心是每一步不只保留概率最高的一個(gè)候選而是保留top-k個(gè)候選最終選擇整體得分最高的序列。長(zhǎng)度懲罰要注意不加長(zhǎng)度懲罰時(shí)生成結(jié)果會(huì)偏向短句因?yàn)楦怕蔬B乘讓長(zhǎng)句總分越來越小。5.4 語義匹配與檢索從雙塔到向量化召回語義匹配項(xiàng)目經(jīng)常出現(xiàn)在搜索、問答、推薦業(yè)務(wù)相關(guān)崗位的面試中。我遇到的第一個(gè)高頻問題是“雙塔模型和單塔模型各自適合什么場(chǎng)景”。雙塔分別編碼query和doc再算向量相似度的優(yōu)勢(shì)是doc可以預(yù)計(jì)算embedding在線推理快適合召回階段缺點(diǎn)是兩個(gè)塔之間沒有交叉交互語義理解上限有限。單塔把query和doc拼接后過同一個(gè)模型效果上限更高但推理開銷大適合精排階段。更進(jìn)一步的問題是檢索里的“召回-粗排-精排”流程。召回階段用向量檢索faiss粗排階段用雙塔或者更輕量的模型精排階段用交互式模型。每一層都是為了在有限算力下拿到最好效果。6. 手撕代碼與算法題實(shí)錄6.1 面試官最愛讓手寫的代碼清單NLP崗手撕代碼的范圍比純后端要窄但更偏模型結(jié)構(gòu)。我整理了一份高頻清單第一梯隊(duì)幾乎必考多頭自注意力forward實(shí)現(xiàn)、Transformer單層實(shí)現(xiàn)、beam search解碼、Softmax實(shí)現(xiàn)帶溫度系數(shù)版本。第二梯隊(duì)常見CRF的維特比解碼、自定義Dataset和DataLoader、mask padding在注意力中的實(shí)現(xiàn)、loss的掩碼計(jì)算忽略padding位置的loss。第三梯隊(duì)偶爾訓(xùn)練循環(huán)的完整實(shí)現(xiàn)含梯度累計(jì)、混合精度、BPE分詞過程、top-p采樣、word2vec的負(fù)采樣實(shí)現(xiàn)。6.2 手撕代碼的現(xiàn)場(chǎng)應(yīng)對(duì)技巧動(dòng)手寫代碼之前先花30秒跟面試官對(duì)需求。比如“mask用布爾還是浮點(diǎn)”“batch維度在前面對(duì)吧”“寫PyTorch還是numpy”這些確認(rèn)不會(huì)減分反而表現(xiàn)出你的工程習(xí)慣。寫完代碼后主動(dòng)做兩點(diǎn)一是邊界檢查比如序列長(zhǎng)度為1、batch size為1、mask全為True的極端情況二是復(fù)雜度分析手撕的多頭注意力顯然要把復(fù)雜度O(n2d)說清楚。不要等面試官問主動(dòng)說更快加分。一個(gè)很多人沒意識(shí)到的細(xì)節(jié)在實(shí)現(xiàn)注意力時(shí)mask是加在softmax之前對(duì)應(yīng)位置賦一個(gè)很大的負(fù)數(shù)而不是乘。應(yīng)用了mask的位置softmax歸一化時(shí)分母要正確。如果直接把mask位置設(shè)為0再送softmax等于沒做mask因?yàn)檫@個(gè)位置的logit還會(huì)參與指數(shù)運(yùn)算。7. 面試問答技巧與避坑實(shí)錄7.1 高頻開放問題千萬別背標(biāo)準(zhǔn)答案開放性問題通常沒有標(biāo)準(zhǔn)答案面試官考察的是思考框架。比如說“怎么解決少樣本問題”如果只背“Few-shot learning、prompt tuning、數(shù)據(jù)增強(qiáng)”這些詞就太淺了更好的回答方式是按層次展開從數(shù)據(jù)層面怎么做增強(qiáng)和偽標(biāo)注從模型層面怎么做預(yù)訓(xùn)練和繼續(xù)預(yù)訓(xùn)練從訓(xùn)練層面怎么做多任務(wù)學(xué)習(xí)和正則化從推理層面怎么做prompt模板和in-context learning。每一層再舉一個(gè)自己經(jīng)歷過的實(shí)例。再比如“如何選擇模型”一定要先反問資源限制是什么數(shù)據(jù)量多大延遲要求多少在回答里先define constraints再給建議的候選人比一上來就推薦模型的更讓面試官認(rèn)可。7.2 項(xiàng)目深挖簡(jiǎn)歷上每一個(gè)字都要能展開項(xiàng)目深挖是NLP算法崗面試的重頭戲。常見連環(huán)追問有為什么選這個(gè)模型有沒有試過別的方案效果差多少訓(xùn)練時(shí)遇到什么問題怎么處理的上線了嗎線上指標(biāo)比離線差多少這些問題的關(guān)鍵在于“做沒做過”只能編是編不圓的。一個(gè)實(shí)用經(jīng)驗(yàn)是面試前把簡(jiǎn)歷里每個(gè)項(xiàng)目濃縮成一張卡片寫清楚五個(gè)要點(diǎn)——項(xiàng)目解決什么問題、思路是什么、為什么選這個(gè)方案、最終效果是多少、踩過最大的坑是什么。這張卡片能幫你在緊張狀態(tài)下找回節(jié)奏。7.3 心態(tài)與表達(dá)不清楚的地方直接說踩過幾次坑之后我發(fā)現(xiàn)面試中最減分的不是“不會(huì)”而是“硬答”。當(dāng)涉及細(xì)節(jié)的追問如果不會(huì)就坦誠(chéng)地說“這塊我沒深入了解但我理解的是……”把問題引到你熟悉的方向上。面試官在意的是你的思維過程不是你的百度百科詞條完整度。還有一個(gè)高階技巧面試中遇到不確定的內(nèi)容時(shí)可以先說“我從兩個(gè)角度來理解這個(gè)問題”然后分別給出兩種可能。這說明你有分析的空間感即使不是精確答案也給到了一些有價(jià)值的內(nèi)容。8. 最后再分享兩個(gè)實(shí)用的經(jīng)驗(yàn)一是面試準(zhǔn)備不要只背別人的面經(jīng)。面經(jīng)能幫你快速定位知識(shí)點(diǎn)但核心能力始終是對(duì)知識(shí)的深度理解。把Transformer的源碼抄一遍、把a(bǔ)ttention的mask邏輯自己推導(dǎo)一遍、把每篇重要論文的insight說出來效果遠(yuǎn)好于背100道高頻題。二是復(fù)習(xí)的時(shí)候一定要把“why”放在“what”前面。比如RoPE為什么能外推、LoRA為什么秩小也能用、CRF為什么比逐標(biāo)簽分類強(qiáng)這些“為什么”才是面試官真正想聽到的部分。我自己的經(jīng)驗(yàn)是每次復(fù)習(xí)一個(gè)知識(shí)點(diǎn)都問自己三遍“為什么”答不上來就記錄下來直到能不看資料講給一個(gè)外行人聽為止。NLP算法崗的面試是一個(gè)長(zhǎng)期打磨的過程基礎(chǔ)扎實(shí)的人在任何時(shí)間節(jié)點(diǎn)都有機(jī)會(huì)。希望這篇總結(jié)能幫你省下一些梳理時(shí)間把精力真正花在理解原理和積累實(shí)戰(zhàn)經(jīng)驗(yàn)上。