第四范式NLP笔试题解析:从贝叶斯到BERT的考点与思路
2020年第四范式的秋招NLP笔试题我当时是在线做的整套卷子做下来最大的感受是这家公司不考八股文式的背诵题而是在反复试探你对模型原理的底层理解以及把技术放到业务场景里能不能落地。四范式本身的业务是机器学习平台和智能化转型解决方案所以它的NLP岗位笔试题天然带有很强的工程和业务味道。这篇文章我按回忆把整张卷子的核心题目、答题思路、以及我当时踩过的坑整理出来给后面准备这类AI公司笔试的同学一个参考。1. 试卷总体印象那不是AI四小龙是AI平台公司考法先说一个整体判断第四范式的NLP笔试题和我之前做的几家互联网大厂以及AI四小龙的笔试风格差别挺明显的。大厂的NLP题通常分成两大块一块是海量单选题覆盖机器学习和NLP基础另一块是两道左右的编程题整体考的是熟练度和广度。而四范式的卷子里基础知识题依然占了不小比例但同时出现了很多给你一个业务场景你来设计方案的开放式问题而且这类题的分值占比不低这就非常考验平时有没有真的做过项目而不只是刷过LeetCode和背过八股。1.1 题型分布与分值结构从题型上看2020年秋招这批卷子大致是这样的结构题型大致题量分值占比考察重点单选题15-20道30%左右机器学习基础、概率统计、NLP概念多选题5道左右10%左右原理辨析、易混概念简答题3-4道25%左右模型原理、公式推导、方案设计编程题2道20%左右数据结构与算法、代码实现能力开放题1-2道15%左右业务场景下的NLP解决方案这个分值分布透露了一个关键信息纯记忆类题目占比并没有想象中那么高反而简答和开放题加在一起达到了40%这类题才是真正拉开差距的地方。我认识的一个朋友当年也投了四范式他选择题几乎全对但开放题写得很空最后连面试都没进。后来复盘的时候我们都觉得四范式的笔试筛人逻辑很明确——基础题只是及格线方案设计题才是分水岭。1.2 试卷偏向为什么选择题都像在做推导四范式的选择题有一个特点它不太喜欢那种直接背定义的题目。举个例子它很少直接问你什么是TF-IDF而是会给你一段具体的文本、一组词频统计让你实际计算某个词的TF-IDF值或者给你一个贝叶斯公式的变形让你判断哪一步推导错了。这就意味着如果你只是临考前翻了一遍《统计学习方法》的目录大概知道几个名词做这种题会很吃力。它对知识的要求不是听说过而是能推导、能计算、能判断对错。我当时在这类题上花了大量时间有些题目甚至在草稿纸上推了半天因为题目会故意设计一些边界条件比如分母为零的情况、概率取对数之后的大小比较、样本量很小的条件下估计是否仍然有效等。考试范围上机器学习部分的重点集中在朴素贝叶斯、逻辑回归、SVM的优化目标、决策树的分裂准则、集成学习里Bagging和Boosting的区别、聚类算法、常见的评估指标。NLP部分的重点则集中在语言模型、词向量、序列标注、文本分类、机器翻译的基本框架、Transformer和BERT相关的原理。这套知识覆盖面不算特别广但对每个知识点的深度要求明显比一般公司的笔试题要高。2. 机器学习与数学基础题看似送分实则筛人这类题放在卷子最前面看起来是送分题但我实际做下来发现里面埋了不少坑。四范式出题人很喜欢在概率题和信息论题上做文章因为NLP问题归根结底是概率模型的问题机器学习里的很多坑在NLP场景下会被放大。2.1 拉普拉斯平滑一个公式背后牵出三种知识我记得有一道多选题是这样出的在朴素贝叶斯分类器中为什么要对条件概率做拉普拉斯平滑平滑操作对模型会产生什么样的影响选项里有几个表述比如防止某个特征在训练集中未出现而导致概率为零会让所有概率估计值都略微向均匀分布靠拢当训练样本足够多时平滑的影响会逐渐减弱平滑系数越大模型对训练集的拟合能力越强。这道题表面上考的是拉普拉斯平滑的公式但实际上它考的是三件事你能不能用公式说清楚平滑做了什么你能不能理解零概率问题在朴素贝叶斯里的致命性以及你能不能判断平滑强度对模型偏差方差的影响。拉普拉斯平滑的公式是P(w|C) (count(w, C) α) / (count(C) α * V)其中α是平滑系数V是特征词表大小。这个公式的关键在于分子加了一个α分母加了一个α*V这样保证所有的条件概率之和仍然等于1同时避免了某个词在训练集中没有出现过导致概率直接为0的情况。为什么概率为零会致命因为朴素贝叶斯在推理时是用连乘的方式计算后验概率的只要其中一项是0整个乘积就变成0了哪怕其他特征的证据再强也救不回来。这在NLP场景下尤其明显因为语言的分布是典型的稀疏分布——训练集里没见过的词太常见了如果不做平滑模型在测试集上会频繁出现零概率。但平滑也不是越多越好。α越大所有的概率估计就越往均匀分布方向偏移也就是说低概率的词被抬高、高概率的词被压低模型的判别能力会下降。这本质上是给模型引入了偏差。我当时选了前三个选项最后那个平滑系数越大模型对训练集拟合能力越强我没敢选因为平滑本质上是一种正则化手段正则化变强时模型对训练集的拟合能力应该是下降的而不是增强。这种选项就是用来筛掉那些只背结论、不思考背后逻辑的人。2.2 概率基础题联合概率与条件概率的陷阱还有一道让我印象很深的概率题它给了一个场景一个二分类问题正样本占比1%分类器在正样本上的召回率是99%在负样本上的误报率是1%。问如果一个样本被分类器判为正类它真的是正类的概率是多少这道题考的也是贝叶斯公式而且是很经典的先验概率陷阱。我们设P(Y1) 0.01P(Y0) 0.99P(预测1 | Y1) 0.99P(预测1 | Y0) 0.01。然后套贝叶斯公式P(Y1 | 预测1) P(预测1 | Y1) * P(Y1) / [P(预测1 | Y1) * P(Y1) P(预测1 | Y0) * P(Y0)]代入数值就是0.99 * 0.01 / (0.99 * 0.01 0.01 * 0.99) 0.5答案是50%而不是题面看起来的99%。这个题的坑在于很多人看到召回率99%、误报率1%就觉得准确率肯定很高但忽略了正样本本身只占1%也就是类别极度不均衡。在正样本这么稀疏的情况下即使误报率只有1%也会产生大量假正例。这类题在NLP里映射到的场景就是意图识别、垃圾文本识别、异常检测这些场景中正样本往往占比非常低。如果模型上线时只看准确率你会被骗得很惨。我当时做这类题的时候复盘出一个习惯看到任何关于分类效果的描述第一反应不是看准确率和召回率而是先问一句正负样本比例是多少。这个习惯后来在我做文本多分类项目时帮了大忙。2.3 评估指标与样本不均衡的处理方式还有一组多选题是围绕评估指标的考查的是F1分数、AUC、PR曲线这些概念在不同场景下的使用。其中有一道题问的是在正负样本极度不均衡的文本分类任务里以下哪些评估方式是合理的选项包括直接看准确率、看PR曲线下的面积、看AUC、看F1分数、把所有负样本都预测为正样本时观察准确率的变化。这类题其实没有一个绝对的标准答案但出题人想考的是你对指标性质的理解。AUC对正负样本比例不敏感因为它的计算是基于正负样本排序的PR曲线在正样本很少的时候比ROC曲线更能反映模型对正类的识别能力F1分数则是精确率和召回率的调和平均能体现模型在少数类上的综合表现。只看准确率在样本不均衡时没有任何意义因为全预测为多数类也能获得很高的准确率。我当时在这道题上多留了个心眼在草稿纸上把AUC和PR曲线的区别写了一遍ROC曲线的横轴是假正例率纵轴是真正例率它对样本不均衡不敏感PR曲线的横轴是召回率纵轴是精确率在正样本极少的情况下能更真实地反映模型性能。这也解释了为什么在信息检索、欺诈检测这类正样本稀少的场景里大家更愿意看PR曲线而不是ROC曲线。3. NLP基础理论词向量、语言模型与文本表示选择题过完之后简答题开始真正进入NLP领域。四范式这套卷子对NLP基础理论的考察不算偏但问问题的角度很刁钻它不会让你默写某个模型的架构而是给你一个具体问题让你用NLP的方法去解决并且要求你说明每一步背后的理由。3.1 Word2VecCBoW与Skip-gram的取舍有一道简答题是这样问的在训练词向量时CBoW和Skip-gram分别是如何定义学习任务的在什么场景下应该优先选择CBoW什么场景下应该优先选择Skip-gram这道题如果你只是背过一个是预测中心词一个是预测上下文那你的回答会非常单薄。真正能拿高分的答案应该包含对这两个模型本质差异的理解。CBoW的任务是给定上下文词预测中心词。它的训练方式是把上下文词的向量求和或者求平均然后预测中心词。这个过程相当于在压缩上下文信息所以它对高频词的表示效果更好训练速度也更快。缺点是它对低频词和罕见词的表示不够精细。Skip-gram的任务正好反过来给定中心词预测它的上下文词。每个训练样本是中心词和它周围的一个上下文词组成的词对相当于在不断放大中心词和每个上下文词之间的共现关系。它能更好地处理低频词因为即使一个词出现次数很少只要它每次出现都会产生多个训练样本模型也能学到它的向量表示。缺点是训练速度慢尤其是在大语料上。我当时答这道题时补了一个实际经验如果你是在一个小规模领域语料上训练词向量比如只有几万条法律文书或者医疗病历Skip-gram通常效果更好因为低频的专业术语很多Skip-gram能更好地保留它们的语义信息。反过来如果你要处理的是通用领域的海量语料CBoW因为速度快、对高频词友好往往更实用。这道题光背定义可能只能拿一半分把训练效率、低频词表现这些实操维度说出来才能算答得相对完整。3.2 困惑度语言模型好不好的直观指标还有一道简答题是关于困惑度的题面给了一个训练好的语言模型然后问如果这个模型在测试集上的困惑度是100你能得到什么结论如果要提升模型的困惑度表现可以从哪些方向入手这里要先理解困惑度的定义Perplexity exp(-1/N * Σ log P(w_i | w_1, ..., w_{i-1}))困惑度实际上是对数概率平均值的指数形式。困惑度越低说明模型对测试集中每个词的预测概率越高即模型对语言的建模能力越强。如果困惑度是100可以理解为模型在每一个位置上平均需要从100个词里选择一个相当于模型的有效选择空间是100个词。这个值如果是基于词级别的语言模型那100其实是一个偏高的数值说明模型的预测能力很弱比如随机猜测的困惑度等于词表大小如果是词表一万个词的语言模型随机猜的困惑度是10000那么100确实比随机好但离一个好的语言模型差距还很大。提升困惑度表现的方向则需要看模型本身的结构和数据。数据层面可以做更大规模、更高质量的训练语料做分词和文本清洗模型层面可以从n-gram模型换到RNN再换到Transformer也就是让模型有更强的上下文建模能力训练层面可以增加序列长度、调整学习率、加正则化。我在答这类题时总结了一个思路就是先定义清楚指标、再说影响因素、最后给优化方向而不是空对空地说用更好的模型。3.3 分词策略中文NLP逃不开的第一关这道题我记得是问中文分词对NLP任务的影响以及常见的分词方法有哪些。中文分词作为中文NLP的第一道工序它在四范式的卷子里出现一点都不意外因为他们的业务场景很多涉及中文文本处理比如金融文档、客服对话这些文本的分词质量直接影响下游任务的效果。中文分词的常见方法可以粗分为三类基于词典的最大匹配法、基于统计的分词方法HMM、CRF、基于深度学习的序列标注方法BiLSTMCRF、BERT。基于词典的分词方法本质上是字符串匹配实现简单、速度快但遇到未登录词基本无能为力。比如自然语言处理如果不在词典里就可能被切得乱七八糟。基于统计的方法把分词看作序列标注问题每个字标注为B词首、M词中、E词尾、S单字成词然后用HMM或者CRF来预测标注序列。这种方法对未登录词的处理能力比纯词典方法强很多。基于深度学习的方法则进一步把上下文语义融入标注过程BiLSTMCRF在分词任务上的效果明显优于传统方法但需要大规模标注数据。2020年那时候BERT已经出来了很多工业界的分词方案已经进化成基于预训练模型的序列标注方案纯粹用词典分词的做法在带业务语义的场景里越来越少了。我在这道题上给的答案是先明确你的任务对分词错误率的容忍度。如果你的任务是关键词匹配或者规则抽取用词典分词就够了速度快、可控性强如果你的任务是做语义理解、情感分析、意图识别那必须用统计或深度学习类的方法因为这类任务的下一步通常会映射到词向量或者预训练模型的输入层分词的粒度会影响模型的语义表示质量。另外中文里还有一个粒度的问题比如北京大学是切成一个词还是切成北京大学这在很多业务场景里是有讲究的四范式的笔试题里也出现了类似的场景考的是你能否根据业务需求选择合适的分词粒度。4. 深度学习与预训练模型Transformer和BERT是重头2020年秋招的时候BERT已经成为NLP岗位笔试的必考内容四范式的卷子也没有免俗。但它的考题不是让你简单描述BERT的结构而是深入到Transformer的细节和BERT的预训练机制题目难度明显比一般公司的考察高一个层级。4.1 位置编码为什么Transformer必须加位置信息有一道简答题是Transformer与RNN在处理序列数据时有什么区别为什么Transformer需要位置编码位置编码有哪些实现方式各有什么优缺点这道题要答好首先要理解一个关键点RNN是天然按时间步处理序列的它的结构决定了它能感知词的顺序而Transformer的Self-Attention在计算时是把序列中所有词同时喂进去的。在注意力计算中两个词之间的相关性只取决于它们的向量表示和注意力权重和它们在句子中的相对位置完全没有关系。也就是说如果你把一句话里所有词的顺序随机打乱Transformer的注意力计算结果是完全一样的。这一点在数学上很好理解Attention(Q, K, V) softmax(QK^T / d_k) * VQ、K、V都是词向量的线性变换计算过程中没有任何与位置相关的参数。所以如果不加位置编码Transformer就变成了一个词袋模型只是比普通词袋模型多了注意力权重而已。位置编码的常见实现方式有两种。一种是正弦位置编码它使用不同频率的正弦和余弦函数来生成位置向量公式是PE(pos, 2i) sin(pos / 10000^(2i/d_model)) PE(pos, 2i1) cos(pos / 10000^(2i/d_model))这种方式的优点是它不需要训练参数而且理论上有很好的外推性也就是说即使在训练时没有见过特别长的序列在推理时也能处理更长的序列。另一种是可学习的位置编码BERT使用的就是这种方式它在训练时把位置向量当作参数一并学习。优点是灵活模型可以自己调整位置信息的表达方式缺点是最大序列长度在训练时就固定了超过这个长度就处理不了。2020年那时候BERT的max_length还是512超过512的文本需要截断或者分段处理这个限制在长文本任务中非常明显。4.2 Multi-Head Attention的计算与维度推演另一道更细的题考到了Multi-Head Attention的具体计算过程题目大概是这样的假设输入序列长度为L每个词的embedding维度是d_model多头注意力的头数是h问每个头里Q、K、V的维度是多少注意力权重在softmax之前为什么要除以d_k的平方根这道题如果你没亲自动手算过维度很容易答错。正确的推理是每个头的维度是d_k d_model / h。在输入x经过线性变换得到Q、K、V之后它们的原始维度都是d_model但在多头注意力中d_model被切分成h个头部每个头部对应一个维度为d_k的子空间所以每个头里的Q、K、V维度就是d_k。加和拼接之后把所有头的输出拼接成维度d_model再经过一个输出投影矩阵。至于为什么要除以d_k的平方根这是一个数值稳定性问题。当d_k比较大的时候Q和K的点积结果方差也会变大。简单推导一下假设Q和K的每个元素都是均值为0、方差为1的独立随机变量那么它们的点积Q·K Σ(q_i * k_i)共d_k项乘积的期望是0方差是d_k标准差是√d_k。也就是说当d_k越大点积结果的数值波动范围就越大经过softmax之后会使概率分布变得非常尖锐某些位置的注意力权重接近1、其他位置接近0这会带来梯度消失的风险导致模型难以训练。除以√d_k之后点积结果的方差被拉回到1附近softmax的输入分布更均匀梯度能更好地流动。我当时答这道题时还专门把整个计算流程在草稿纸上走了一遍。这种题光靠背公式是不够的你得能推出为什么是这样。4.3 BERT的预训练任务与下游微调细节关于BERT那道简答题问的是BERT的两个预训练任务分别是什么它们各自解决了什么问题如果让你用BERT做文本匹配任务你会怎么设计输入和输出BERT的两个核心预训练任务一个是Masked Language Model简称MLM一个是Next Sentence Prediction简称NSP。MLM的思路类似完形填空随机把输入中15%的token用[MASK]替换然后让模型预测这些被遮住的词。之所以不完全用[MASK]替换而是采用一个巧妙的策略——80%的概率真的替换成[MASK]10%的概率替换成随机词10%的概率保持不变——是为了缓解预训练和微调之间不一致的问题因为微调阶段输入中是没有[MASK]的。NSP任务则是判断两句话是否为相邻的上下文。模型把第一句话和第二句话用[SEP]分隔符拼接起来然后用[CLS]位置的输出做二分类预测。NSP任务的设计初衷是让模型学习句子级别的关系这对问答、自然语言推理这类任务很重要。不过后来有研究发现NSP的作用并没有那么明显甚至可能有些负作用这也是为什么后来的RoBERTa模型直接把NSP去掉了。但2020年那会儿BERT原版的设计思路依然是考察重点。如果让我用BERT做文本匹配任务我会把两句话拼接成[CLS] 句子A [SEP] 句子B [SEP]然后把[CLS]位置的向量拿出来接一个全连接层做二分类。这个[CLS]向量在BERT的设计中承担了聚合整个序列信息的职责因为它在每一层都能通过注意力机制看到序列中所有的词。这里有一个实操细节在线推理的时候文本匹配的输入往往是一对一对来的我们可以把同一个句子和多个待匹配句子组成batch这样能充分利用GPU并行能力而不需要为每个句子对单独计算一次。5. 编程题与综合设计真正拉开差距的地方编程题和开放题是四范式秋招笔试里我最喜欢的部分因为它最能体现一个人是真的做过NLP项目还是只停留在刷题和背题层面。这部分题目往往没有标准答案但只要你的思路和方案有理有据就能拿到分数。5.1 编程题的常见考法与答题思路2020年秋招的编程题我记得有两道一道是传统的算法题一道是机器学习相关的代码实现题。传统算法题我记得和字符串处理有关具体题目记不太清了但思路和最长公共子序列或者编辑距离是同一类。这种题在NLP岗位的笔试中出现频率很高因为它考察的是最基本的序列处理能力和动态规划思想这些能力在做文本对齐、纠错、序列标注时都会用到。机器学习相关的代码实现题我记得有一个是关于softmax的。题目让你实现一个数值稳定的softmax函数。如果你只是按照定义写def softmax(x): exp_x np.exp(x) return exp_x / exp_x.sum(axis-1, keepdimsTrue)这种写法在输入数值比较大时会溢出因为np.exp(1000)直接就是无穷大。数值稳定的写法是先减去最大值def softmax(x): x_max np.max(x, axis-1, keepdimsTrue) exp_x np.exp(x - x_max) return exp_x / exp_x.sum(axis-1, keepdimsTrue)这个减最大值的操作不会改变softmax的结果因为分子分母同时除以exp(x_max)在数学上是等价的但在数值上能避免溢出。我当时看到这道题时内心有点小庆幸因为我之前在实际项目里亲手动写过softmax知道这个坑如果只是纸上谈兵背公式很容易写成一个数值不稳定的版本。这类编程题暴露一个规律NLP岗位的编程题不是纯粹的LeetCode题它更偏向于让你实现一个和模型训练、文本处理相关的功能模块而且会考察你对数值稳定性和边界条件的理解。所以备考的时候不要只刷算法题也要多手写一些和模型相关的工具函数比如分词、one-hot编码、attention计算、mask处理等。5.2 场景设计题给呼叫中心做意图识别系统的完整思路四范式卷子里分值最高的一道题是场景设计题。题目大概是这样假设你接手一个呼叫中心业务需要自动识别用户来电的意图并进行分类整体流程从数据准备到模型上线你会怎么设计这道题我认为是整套卷子里含金量最高的一道题因为它考察的是你是否有过真实的NLP项目经验而不是单纯的知识储备。我当时从以下几个维度来拆解这个问题第一步是问题定义和标签体系设计。意图识别本质上是一个文本分类问题但难点在于意图标签体系的设计。你需要和业务方一起把意图这个抽象概念落地成具体的标签比如咨询账单办理业务投诉销户等。标签体系的粒度直接影响模型的复杂度粒度太粗用户诉求区分不清粒度太细标注成本和模型训练难度都会上升。第二步是数据采集与标注。真实业务中最原始的语料通常是客服通话转写的文本或者在线客服的聊天记录。这些文本有大量的口语表达、语气词、错字、停顿直接用来训练模型效果很差所以需要做清洗和标注。标注环节需要注意标注一致性也就是不同标注人员对同一条文本的标注结果要尽量一致。我当时提到可以用主动学习来降低标注成本先用少量标注数据训练一个初始模型然后用模型挑选出最不确定的样本交给人工标注这样能把标注资源集中在最有价值的样本上。第三步是模型选型。我给的方案是分两个阶段先用TF-IDF加逻辑回归或者FastText做一个快速的baseline目的是快速验证标签体系和数据质量然后在这个基础上再换BERT类的预训练模型来提升准确率。之所以不一步到位直接上BERT是因为BERT的训练和推理成本都更高如果baseline已经能达到90%的准确率你就要评估剩下的10%值不值得花更大的成本去提升。第四步是上线后的持续优化。模型上线不代表事情就结束了你需要建立数据回流机制定期收集模型预测错误的新样本加入训练集进行迭代更新。同时要监控模型在不同意图类别上的准确率和召回率一旦某个类别的效果明显下滑就要排查是不是用户表达的变化或者新话术的出现导致的。这道题我当时答得比较细四大段全部铺开写到最后时间不够用了。复盘下来最核心的经验是方案设计题要讲清楚为什么选择这个方案以及方案如何落地比单纯堆砌技术名词要有用得多。还有一个心得是设计意图识别系统时最容易被忽略的是拒绝识别这一类也就是那些不属于任何预设意图的垃圾输入。没有这个类别模型就会把一切文本强行归到某个意图里上线之后会很痛苦。5.3 开放题工业界和学术界关注点的差异开放题我记得有一道和文本分类有关但它问的角度很特别在资源有限的情况下你如何为一个特定的业务场景快速搭建一个文本分类系统并说明你在准确率、速度、可解释性之间如何权衡。这道题本质上是考你工程化的思维。我记得当时的回答核心思路是从基线开始逐步升级每一步都做A/B测试来验证收益。我的方案大致是这样的冷启动阶段直接用规则加词典。如果业务场景相对垂直比如只判断文本里是否提到了某个关键词那用一个精心设计的规则系统可能就能解决80%的问题而且它的最大优势是快、可解释、可精准调整。当规则覆盖不了的时候再加一个机器学习模型。特征可以从TF-IDF、词性、句法依赖等维度来设计模型可以用逻辑回归或者FastText。逻辑回归的可解释性很好你可以直接看每个特征的权重在网上排查badcase时会很有帮助。如果业务精度要求实在很高最后才上BERT级别的预训练模型。但需要注意预训练模型在提升精度的同时也带来了三个问题推理时间变长、硬件成本增加、可解释性下降。所以在实际落地时很多团队会采用级联策略先用规则或轻量模型做初筛只有初筛不确定的样本才进入重模型。这样既保证了整体精度又控制了计算成本。这道题我印象很深因为它和我之前在实习中做过的知识问答项目非常像。当时我们的方案就是在规则、TF-IDF加XGBoost、BERT三级方案之间做了大量的线下对比最后发现对于我们的数据和场景XGBoost阶段已经能覆盖绝大多数需求只有长尾问题需要靠BERT兜底。所以我在笔试里写这个例子时非常有底气因为真的跑过数据、对比过效果而不是凭想象在给方案。6. 备考复盘心得从这套题看四范式到底在招什么人整套卷子做完我对四范式NLP岗位的用人画像有了一个比较清晰的判断。它要的不是只会调包调参的人而是能理解算法原理、能动手实现、并且能把技术放到业务场景里检验的人。这类公司在招人的时候明确在找那种能搞定问题的工程师而不是会背知识点的学生。如果准备参加类似的AI公司笔试我的建议有这么几点。复习机器学习基础时不要只停留在知道公式是什么而是要把公式推一遍理解每个符号的含义和为什么要引入某个操作。复习NLP基础时要把重点放在语言模型、词向量、序列标注、注意力机制、Transformer架构这些核心模块上对这些基础概念要能做到讲清楚它们在上下游任务中的作用。刷题之外如果时间允许建议去跑通一两个完整的NLP小项目比如做一个文本分类器从数据清洗到模型训练到效果评估都亲手做一遍这样在应对场景设计题时会自然得多因为所有的坑你都踩过了。最后再分享一个当时我自己踩过的坑笔试时间分配。这套卷子的开放题非常费时间因为它需要你组织语言的逻辑性而我一开始在选择题上花的时间太多了导致后面开放题写得很赶。如果重来一次我会先把所有题都扫一遍花两分钟判断每道题的大致耗时先做自己最有把握的题目把该拿的分拿到手再回头去啃那些需要大量推导的题。这种考场策略看起来很简单但真到时间紧张的时候它可能决定你是70分还是85分。