跳转至

🎯 NLP 面试准备

面向研究生就业的 NLP 面试高频题 50 道 + 详细解答


📋 题目分类


一、 NLP 基础概念

Q1: NLP 的主要任务有哪些

: NLP 任务主要分为: - 文本分类:情感分析、垃圾邮件检测、新闻分类 - 序列标注: NER 、词性标注、分词 - 文本生成:摘要、对话、翻译 - 信息抽取:实体识别、关系抽取、事件抽取 - 文本匹配:语义相似度、问答对匹配 - 阅读理解:抽取式 QA 、生成式 QA

Q2: 评估 NLP 模型的常用指标

: - 分类任务: Accuracy 、 Precision 、 Recall 、 F1-score 、 AUC-ROC - 序列标注: 实体级 Precision/Recall/F1 (严格匹配和松弛匹配) - 生成任务: BLEU (翻译)、 ROUGE (摘要)、 Perplexity (语言模型) - 相似度任务: Pearson 相关系数、 Spearman 相关系数

Q3: 中文分词的主要方法

: 1. 基于词典:最大匹配法(正向/逆向/双向) 2. 基于统计: HMM 、 CRF 3. 基于深度学习: BiLSTM-CRF 、 BERT-CRF 4. 常用工具: jieba (最流行)、 LTP 、 THULAC 、 pkuseg

Q4: 什么是 OOV 问题?如何解决

: OOV(Out-of-Vocabulary)指未登录词问题。解决方法: 1. 子词分词: BPE 、 WordPiece 、 SentencePiece 将未知词分解为子词 2. 字符级模型:直接在字符级别建模 3. 扩展词表:不断更新词表 4. 预训练模型: BERT 等使用子词分词天然缓解 OOV

Q5: Precision 和 Recall 的权衡

: - Precision(精确率):预测为正的样本中真正为正的比例,关注"查准" - Recall(召回率):所有正样本中被正确预测的比例,关注"查全" - 权衡:提高阈值→P↑R↓,降低阈值→P↓R↑ - 垃圾邮件检测更重视 Precision (避免正常邮件被误判) - 疾病筛查更重视 Recall (不能漏诊)

Q6: Macro-F1 和 Micro-F1 的区别

: - Macro-F1:先算每个类的 F1 ,再取平均。对每个类平等对待,适合类别不均衡时评估小类。 - Micro-F1:全局统计 TP/FP/FN 再算 F1 。受大类影响大,等价于 Accuracy (多分类时)。

Q7: 什么是注意力机制

:注意力机制让模型在处理每个元素时能够关注输入序列中最相关的部分。 - 核心公式: Attention(Q,K,V) = softmax(QK^T/√d)V - 作用:动态加权,聚焦重要信息 - 类型:自注意力、交叉注意力、多头注意力

Q8: Transformer 的核心组件

: 1. 多头自注意力:并行计算多组注意力 2. 位置编码:注入序列位置信息 3. 前馈网络(FFN):两层线性变换+激活 4. 残差连接+LayerNorm:训练稳定性 5. 因果掩码:解码器防止看到未来信息

Q9: Self-Attention 的计算复杂度

: - 时间复杂度: O(n²·d), n 是序列长度, d 是维度 - 空间复杂度: O(n²),注意力矩阵大小 - 瓶颈:序列长度增大时二次方增长 - 解决方案: Sparse Attention 、 Linear Attention 、 Flash Attention

Q10: Transformer 为什么用 Layer Normalization 而不是 Batch Normalization

: 1. NLP 中序列长度不固定, BN 在不同长度的序列上统计不稳定 2. LN 在每个样本内部归一化,不依赖 batch 中其他样本 3. LN 对序列长度变化更鲁棒 4. 推理时 LN 不需要维护全局统计量


二、文本表示与预处理

Q11: Word2Vec 的两种架构

: - CBOW:根据上下文预测中心词。窗口内的上下文词向量求和作为输入。训练更快。 - Skip-gram:根据中心词预测上下文。对生僻词效果更好。

Q12: Word2Vec 如何加速训练

: 1. 负采样(Negative Sampling):将 softmax 多分类变为二分类,只采样 k 个负样本。高频词被采样概率更高。 2. 层次 Softmax:用 Huffman 树将 O(V)降为 O(logV)。 3. 子采样(Subsampling):高频词按概率跳过,加速且提升低频词质量。

Q13: Word2Vec 和 GloVe 的区别

: | 维度 | Word2Vec | GloVe | |------|----------|-------| | 方法 | 预测型(局部上下文窗口) | 计数型(全局共现矩阵) | | 训练 | 在线, SGD | 全局,矩阵分解 | | 核心思想 | 上下文预测 | 词对共现概率比 | | 优势 | 训练快,增量学习 | 利用全局统计信息 |

Q14: 什么是 BPE 分词

: BPE(Byte Pair Encoding)是子词分词算法: 1. 初始化:每个字符为一个 token 2. 统计所有相邻 token 对的频率 3. 合并频率最高的 token 对为新 token 4. 重复 2-3 直到达到目标词表大小 - 优点:平衡词汇粒度,缓解 OOV - 被 GPT 、 RoBERTa 等广泛使用

Q15: TF-IDF 的原理和局限性

: - TF:词频,衡量词在文档中的重要性 - IDF:逆文档频率,衡量词的区分能力 - TF-IDF = TF × IDF - 局限性:不考虑词序、不考虑语义、高维稀疏、无法处理一词多义

Q16: 静态词向量 vs 动态词向量

: - 静态词向量(Word2Vec/GloVe):每个词一个固定向量,无法区分多义词 - 动态词向量(ELMo/BERT):根据上下文生成不同向量 - 例如:"苹果手机"和"吃苹果"中的"苹果",静态向量相同,动态向量不同

Q17: 数据增强在 NLP 中的常用方法

: 1. 同义词替换:随机替换为同义词 2. 随机插入/删除/交换: EDA 方法 3. 回译(Back Translation):翻译成外语再翻译回来 4. 对抗样本:在 embedding 上加扰动 5. 大模型改写:用 GPT 生成语义相似的句子

Q18: 如何处理类别不平衡问题

: 1. 数据层面:过采样(SMOTE)、欠采样、数据增强 2. 损失函数:类别加权、 Focal Loss 3. 训练策略:分层采样、课程学习 4. 后处理:调整决策阈值 5. 评估指标:用 Macro-F1 代替 Accuracy


三、经典模型

Q19: TextCNN 的原理

: 1. 卷积层使用不同大小的卷积核(如 3,4,5)捕获不同 n-gram 特征 2. 每个卷积核在序列维度滑动,提取局部特征 3. 最大池化层提取最显著特征 4. 拼接后经全连接层分类 - 优点:并行计算快、擅长捕获局部特征 - 缺点:不擅长长距离依赖

Q20: LSTM 如何解决梯度消失问题

: LSTM 通过门控机制和细胞状态解决: 1. 遗忘门:决定丢弃多少旧信息 2. 输入门:决定写入多少新信息 3. 输出门:决定输出多少信息 4. 细胞状态:信息高速公路,梯度可以沿细胞状态长距离流动 - 关键:细胞状态的更新是加法操作而非乘法,避免梯度消失

Q21: BiLSTM-CRF 为什么比 BiLSTM 好

: - BiLSTM 独立预测每个 token 的标签,不考虑标签间的转移约束 - CRF 层对整个标签序列建模,学习标签间的转移概率 - 例如: CRF 能学到"B-PER 后面不能接 B-PER"这类约束 - 训练时 CRF 用前向算法,解码时用 Viterbi 算法寻找当前模型分数下的最优标签序列

Q22: Seq2Seq + Attention 的工作原理

: 1. 编码器:将输入序列编码为隐藏状态序列 2. 注意力:解码器每步动态关注编码器不同位置 3. 解码器:结合注意力上下文和前一步输出生成下一个 token - 解决了固定长度向量的信息瓶颈问题

Q23: Beam Search 的优缺点

: - 优点:比贪心搜索考虑更多候选序列;在翻译、摘要等目标较明确的任务里常更稳定 - 缺点: beam width 大→生成文本可能更安全但缺乏多样性;计算量正比于 beam width - 常见配套:长度惩罚( length penalty )用于减轻“偏爱短句” - 替代方案: Top-k 采样、 Top-p(Nucleus)采样在开放生成任务通常更自然

Q24: CRF 和 HMM 的区别

: | 维度 | HMM | CRF | |------|-----|-----| | 模型类型 | 生成模型 | 判别模型 | | 建模 | P(X,Y) | P(Y|X) | | 独立假设 | 观测独立、马尔可夫 | 无观测独立假设 | | 特征 | 离散特征 | 任意特征 | | 性能 | 较弱 | 更强 |

Q25: TextRank 算法原理

: 1. 将句子/词作为图的节点 2. 根据相似度建立边(有权重) 3. 类似 PageRank 迭代计算节点重要性 4. 选择得分最高的节点 - 用于关键词提取时:词为节点,共现关系为边 - 用于摘要生成时:句子为节点,相似度为边权重

Q26: 序列到序列模型中 Teacher Forcing 的作用

: - 训练时用真实标签(而非模型预测)作为下一步输入 - 优点:加速收敛,稳定训练 - 缺点:训练用真实标签、推理用自身预测,存在分布不匹配(Exposure Bias) - 缓解方法: Scheduled Sampling ,逐渐从 Teacher Forcing 过渡到自由运行

Q27: BLEU 计算方法

: BLEU = BP × exp(∑wₙlog(pₙ)) - pₙ: clipped n-gram precision(候选中每个 n-gram 的命中次数不能超过参考中的最大出现次数) - BP :长度惩罚(防止翻译太短作弊) - 通常用 BLEU-4 ( 1~4 gram 取均值) - 若有多条参考译文,参考长度通常取与候选长度最接近的那条 - 局限:不考虑召回率、不考虑语义相似度

Q28: 注意力机制中 Q 、 K 、 V 的含义

: - Query(Q):当前位置的表示,代表"我在找什么" - Key(K):各位置的索引,代表"我有什么" - Value(V):各位置的实际内容 - 计算: Q 和 K 点积得到相关性分数(attention weights),用于加权 V


四、预训练语言模型

Q29: BERT 的预训练任务

: 1. MLM(掩码语言模型):随机遮盖 15%的 token ( 80%→[MASK], 10%→随机词, 10%不变),预测被遮盖的 token 2. NSP(下一句预测):判断两个句子是否连续。后来 RoBERTa 证明 NSP 可能是有害的

Q30: BERT 为什么用 80/10/10 的 Masking 策略

: - 如果 100%用[MASK],微调时没有[MASK] token ,预训练和微调分布不匹配 - 10%随机替换让模型对每个位置都保持预测能力 - 10%保持不变让模型将真实 token 的表示也纳入学习 - 实际被 mask 的 token 只有 15%,所以收敛较慢但效果好

Q31: BERT 和 GPT 哪个更擅长 NLU 任务?为什么

: BERT 更擅长。因为: 1. BERT 是双向的,可以同时看到左右上下文 2. GPT 只能看到左侧上下文(因果掩码限制) 3. NLU 任务(分类、 NER 、 QA 等)需要综合上下文理解 4. 但 GPT 更擅长生成任务

Q32: RoBERTa 相比 BERT 有哪些改进

: 1. 去掉 NSP ,只用 MLM 2. 动态 Masking (每次随机 mask ,增加数据多样性) 3. 更大的 batch size ( 256→8192 ) 4. 更多训练数据( 16GB→160GB ) 5. 更长的训练时间 6. 更大的词表( BPE 50K )

Q33: 如何微调 BERT 做文本分类

: 1. 取[CLS] token 的最后一层表示 2. 接一个线性分类头 nn.Linear(768, num_classes) 3. 用任务数据微调整个模型 4. 典型超参: lr=2e-5~5e-5, epochs=2-5, batch_size=16-32 5. 可选优化:对抗训练(FGM)、 R-Drop 正则化

Q34: ALBERT 的参数减少策略

: 1. 嵌入矩阵分解: V×H → V×E + E×H ( E<<H ),减少嵌入层参数 2. 跨层参数共享:所有 Transformer 层共享参数 3. 效果:参数量减少 80%+,但推理速度不一定快(层数没减少)

Q35: XLNet 的创新点

: - 排列语言模型(PLM):对输入 token 所有排列取期望 - 融合了 AR (自回归,可以生成)和 AE (自编码,双向上下文)的优点 - 避免了 BERT 的[MASK]导致的预训练-微调差距 - 双流自注意力:内容流+查询流

Q36: ELECTRA 的创新点

: - 替换词检测(RTD)代替 MLM - 生成器:小模型替换部分 token - 判别器:大模型判断每个 token 是否被替换 - 所有 token 都参与训练( MLM 只有 15%),训练效率更高 - 小模型 ELECTRA-Small 效果显著优于同等规模的 BERT

Q37: LoRA 的原理

: - 冻结原始权重 W ,添加低秩分解ΔW = A·B - W: (d×d)不动, A: (d×r), B: (r×d)可训练 - r 远小于 d (如 r=8 ),大幅减少可训练参数 - 推理时可合并回原始权重,无额外延迟 - 通常应用于注意力层的 Q 、 V 投影矩阵

Q38: 对抗训练(FGM)的原理

: 1. 正常前向+反向得到梯度 2. 在嵌入层参数上加扰动: r = ε × g/||g|| 3. 扰动后再次前向+反向 4. 恢复原参数,用两次梯度之和更新 - 目的:提升模型对输入扰动的鲁棒性,通常提升 0.5-1.0 F1

Q39: 预训练模型的位置编码有哪些类型

: 1. 可学习位置编码: BERT , nn.Embedding(max_len, d_model) 2. 正弦位置编码:原始 Transformer ,固定公式 3. 旋转位置编码(RoPE): LLaMA/Qwen ,良好的外推性 4. ALiBi:直接在注意力分数上加线性偏置

Q40: Sentence-BERT 如何获取句子表示

: - 在 BERT 基础上使用孪生网络结构 - 两个句子分别经过 BERT 得到[CLS]向量 - 训练目标:相似句向量接近,不同句向量远离 - 推理时可以离线计算句子向量,检索效率高 - 比直接用 BERT 交叉编码快很多


五、大模型与应用

Q41: RLHF 的三个阶段

: 1. SFT:在人工标注的高质量数据上监督微调 2. RM:训练奖励模型学习人类偏好排序 3. PPO:用奖励模型信号通过强化学习优化策略 - 替代方案: DPO 直接从偏好数据优化,不需要独立的 RM 和 PPO

Q42: 什么是思维链(CoT)推理

: - 在 prompt 中要求模型展示推理步骤 - Zero-shot CoT :加"让我们一步步思考" - Few-shot CoT :给出带推理步骤的示例 - 在数学推理、逻辑推理任务上显著提升性能 - 约 100B 参数以上的模型才有效(涌现能力)

Q43: RAG 系统的工作流程

: 1. 索引:将文档分块→向量化→存入向量数据库 2. 检索:用户问题向量化→检索 Top-K 相关文档块 3. 增强:将检索到的文档块拼入 Prompt 作为上下文 4. 生成:大模型基于上下文生成答案 - 优点:减少幻觉、知识可更新、无需微调

Q44: 大模型幻觉(Hallucination)问题

: - 定义:模型生成看似合理但事实不正确的内容 - 原因:训练数据有噪音、模型过于"自信"、对稀有知识记忆不准确 - 解决: RAG (检索增强)、 RLHF (人类反馈)、自一致性检验、引用来源

Q45: In-Context Learning 为什么有效

: - 大模型在预训练时见过大量"输入→输出"的模式 - ICL 本质上是模式识别而非真正的"学习" - 示例提供了任务定义和输出格式的线索 - 模型利用注意力机制关注示例中的映射关系 - 仍是开放的研究问题

Q46: 如何评估大模型的能力

: - 基准测试: MMLU(知识)、 GSM8K(数学)、 HumanEval(代码) - 人类评估:流畅性、有用性、安全性 - 竞技场(Arena): ELO 评分对战 - 自动化评估:用更强的评测模型评分 - 红队测试:安全攻防

Q47: 传统 NLP 方法在大模型时代还有用吗

: 有用!以下场景仍需要传统方法: 1. 低延迟:在很多固定标签任务里,小模型更容易做出稳定低延迟服务;具体毫秒数取决于硬件、批量和部署方式 2. 高精度:专用模型在特定任务上可能优于通用大模型 3. 低成本:大模型 API 调用成本高 4. 数据隐私:本地部署小模型更安全 5. 资源受限:边缘设备无法运行大模型

Q48: Prompt Engineering 的常见经验

: 1. 角色设定:给模型一个明确身份 2. 任务描述:清晰、具体、无歧义 3. 输出格式:指定 JSON/列表等格式 4. 少样本示例:可先提供 2-5 个高质量示例,再按效果增减 5. 推理引导:复杂问题可要求分步分析,但是否显式展示推理需遵循所用模型和产品规范 6. 约束条件:长度限制、风格要求 7. 迭代优化:测试→分析失败案例→改进 Prompt

Q49: 如何选择微调 vs Prompt

: | 条件 | 微调 | Prompt | |------|------|--------| | 标注数据 | 充足(>1000 条) | 少/无 | | 任务复杂度 | 复杂、特定领域 | 通用、开放域 | | 延迟要求 | 低(小模型微调) | 可接受较高延迟 | | 预算 | 一次训练长期使用 | 按调用量付费 | | 迭代速度 | 慢(需训练) | 快(改 Prompt 即可) |

Q50: NLP 工程师的核心竞争力

: 1. 基础扎实:深度学习原理、 Transformer 、预训练模型 2. 工程能力:模型训练、部署、优化、系统设计 3. 问题分析:将业务需求转化为 NLP 问题 4. Prompt 工程:高效设计和优化 Prompt 5. 持续学习:跟进最新论文和技术 6. 全栈能力:前后端、数据处理、部署运维


💡 面试技巧

  1. 回答框架:先给结论 → 再展开细节 → 最后补充经验
  2. 画图说明:遇到复杂模型时主动画架构图
  3. 代码能力:面试官可能要求手写核心代码
  4. 项目经验:准备 2-3 个深入的 NLP 项目,能讲清楚技术选型和实验结果
  5. 知识广度:了解常见闭源与开源模型家族的能力边界、适用场景和更新节奏

祝面试顺利!更多细节请参考各章节内容。

⚠️ 核验说明(2026-04-03):本页已再次人工复核。作为面试准备页,保留面试定位,同时把 Prompt 相关内容改为“常见经验”口径,避免把阶段性做法写成固定标准答案。


最后更新日期: 2026-04-03