大模型岗位的面试难度,这两年肉眼可见地在上升。很多同学从“会调用 API”开始准备,结果面试时被追问到模型参数量怎么计算、显存怎么估算、LoRA 为什么能降低显存、RAG 检索阶段为什么还要做重排序,直接卡住。
这篇文章面向 2026 年招聘季,把大模型面试中出现频率很高的真题、追问逻辑、简历投递和面试流程完整整理了一遍,希望能帮你建立一份可执行的复习地图。
先说明一点:任何岗位面试都没有“包过”的题库。真正有效的方法是把高频考点理解透彻,再结合自己的项目讲出细节。下面进入正文。
1. 大模型面试到底在考什么
1.1 面试官的底层考察逻辑
大模型相关岗位的面试官通常不会只问“GPT-4 为什么不开源”这类新闻题,他们更关注三件事。
第一,候选人是否理解大模型的基本原理。比如 Transformer 的结构、注意力机制的计算过程、位置编码的作用。这不是为了为难人,而是因为后续做微调、部署和 Prompt 优化时,很多决策都依赖这些基础概念。
第二,候选人是否具备工程落地的能力。现在很多大模型岗位不是纯研究岗,而是要把模型接到真实业务里。面试官会关心你有没有处理过显存不足、推理延迟高、上下文太长、结果不稳定等问题。
第三,候选人是否有自己的判断和思考。比如被问到“LoRA 和全量微调怎么选”时,不能只说“LoRA 省显存”,还要能说出什么时候全量微调更合适、什么时候 LoRA 效果会打折扣。
1.2 大模型岗位分类与技能矩阵
大模型方向的岗位通常可以分为四类,不同岗位的面试侧重点差异很大。建议先按目标岗位梳理知识体系,避免用一套题应对所有岗位。
| 岗位方向 | 核心技能 | 高频面试考点 | JD 中常见关键词 |
|---|---|---|---|
| 大模型算法工程师 | 预训练、微调、对齐、评估 | Transformer 原理、训练策略、损失函数、RLHF | SFT、LoRA、DPO、RLHF、评测 |
| 大模型应用开发工程师 | RAG、Prompt、Agent、API 接入 | 应用链路设计、幻觉优化、上下文管理、函数调用 | RAG、Agent、API、多轮对话 |
| 推理部署工程师 | 推理加速、量化、分布式部署 | vLLM、TensorRT、显存计算、吞吐优化 | 高并发、量化、PagedAttention、Tensor Parallel |
| 数据与 AI 平台工程师 | 数据处理、指令数据构建、评测集 | 数据清洗、指令格式、评估指标、数据流水线 | 数据管道、质量评估、自动化评测 |
1.3 面试轮次怎么分布
大模型岗位的面试通常分三到四轮。
一面一般是基础面,重点考察 Transformer、微调、RAG 等基础知识,也会追问项目细节。二面是深度面,会出系统设计题,让你设计一个 RAG 系统、一个模型评测方案,或者现场手撕代码。三面多数是综合面,由 Leader 或跨团队的人来面,重点看问题分析能力和沟通表达能力。最后是 HR 面,主要确认稳定性、薪资预期和团队匹配度。
由此可以看出,只背答案很难走完整个流程。每一轮面试都在验证你是否真的能把技术讲清楚。
2. Transformer 与注意力机制高频真题
Transformer 几乎是所有大模型面试的第一关。即使你投的是应用开发岗,面试官也可能先问一句“讲讲 Self-Attention”,然后根据你的回答决定后续难度。
2.1 Self-Attention 的核心公式
Self-Attention 的本质是让序列中的每个 Token 和其他 Token 做信息交互。常见的缩放点积注意力公式如下:
Attention(Q, K, V) = softmax(Q * K^T / sqrt(d_k)) * V其中 Q 是查询向量,K 是键向量,V 是值向量,d_k 是每个头的维度。除以 sqrt(d_k) 是为了防止点积结果过大,导致 softmax 进入饱和区,梯度变得非常小。
面试时只写公式还不够,通常还会被追问:
- 为什么要缩放?如果不缩放会怎样?
- 为什么使用点积而不是加性注意力?
- Q、K、V 分别来自哪里?它们的维度怎么确定?
一个比较稳妥的回答思路是:先说明注意力机制解决的是“序列中不同位置之间的依赖关系”,再解释公式中每一项的含义,最后补充缩放原因和复杂度。如果能把复杂度 O(n^2) 也说出来,面试观感会更好。
2.2 多头注意力的作用
多头注意力是把 Q、K、V 投影到多个子空间,各自做注意力计算,最后拼接起来再投影。它让模型可以在不同子空间关注不同模式,比如一个头关注语法关系,另一个头关注语义相似度。
面试中常见的追问是:“多头头数越多越好吗?”答案不是。头数增加意味着参数量和计算量增加,而部分任务可能并不需要那么多头。现在很多模型实际使用 GQA(分组查询注意力)或 MQA(多查询注意力)来降低 KV Cache 的显存占用,这也是一个加分回答方向。
2.3 位置编码为什么重要
Self-Attention 本身不具备顺序感知能力,因为 Attention 计算的是两两之间的相关性,打乱 Token 顺序后结果不变(在无位置信息时)。所以需要加入位置编码。
经典 Transformer 使用正弦位置编码,后来很多模型改用可学习位置编码,像 RoPE(旋转位置编码)则被 LLaMA、Qwen 等模型广泛使用。RoPE 的优势在于可以将相对位置信息编码进向量,并且在推理时更容易扩展到更长的上下文。
如果面试官继续追问“为什么现在很多模型都强调长上下文”,可以联系 RoPE 的外推能力、位置编码插值、上下文窗口扩展等话题展开。
2.4 手动实现一个简化版 Self-Attention
为了应对手撕代码,建议至少能写一个简化版 Self-Attention。下面是一个用 NumPy 实现的示例,重点是展示计算流程,不考虑 batch 和多头。
# 文件路径:attention_demo.py import numpy as np def softmax(x): # 防止指数上溢,减去每行最大值 e_x = np.exp(x - np.max(x, axis=-1, keepdims=True)) return e_x / np.sum(e_x, axis=-1, keepdims=True) def self_attention(query, key, value): """ query/key/value 形状为 [seq_len, head_dim] """ d_k = query.shape[-1] scores = np.matmul(query, key.T) / np.sqrt(d_k) weights = softmax(scores) output = np.matmul(weights, value) return output, weights # 简单测试 seq_len, d_k = 4, 8 q = np.random.randn(seq_len, d_k) k = np.random.randn(seq_len, d_k) v = np.random.randn(seq_len, d_k) out, attn_weights = self_attention(q, k, v) print("输出形状:", out.shape) print("注意力权重形状:", attn_weights.shape)这段代码的核心点有三个:一是除以 sqrt(d_k);二是 softmax 要沿最后一维做;三是矩阵乘法维度的对应关系。实际面试中不需要写出完整可训练版本,但能把上述三步写清楚已经能说明你对 Attention 的掌握程度。
2.5 Transformer 方向常见追问
- 为什么 Transformer 比 RNN 更适合并行?
- 嵌入层参数量怎么计算?
- LayerNorm 和 BatchNorm 的区别是什么?
- 训练时 decoder 为什么要用 mask?
- 推理时 KV Cache 是怎么优化 Attention 的?
这些问题看起来基础,但每一个都能继续深挖。建议复习时不要只看结论,要能画图或公式推导。
3. 预训练、微调与对齐面试题
3.1 预训练和微调的区别
预训练是在大规模无标注文本上学习语言规律,目标通常是下一个词预测。微调是在预训练模型基础上,用特定任务数据继续训练,让模型适配场景。
面试官常问:“预训练后直接接业务行不行?”答案是可以,但效果通常不稳定。因为预训练模型擅长文本生成,但不会遵循格式、不会回答特定领域的专业问题、也不一定理解你的 API 调用约定。微调的核心目的是改变模型的行为方式。
如果继续追问“什么时候用微调,什么时候用 Prompt”,可以回答:当业务规则复杂、输出格式要求严格、需要持续复用模型能力时,微调更合适;当数据少、场景简单、希望快速验证时,Prompt 更合适。
3.2 LoRA 的核心原理
LoRA(Low-Rank Adaptation)是目前面试出现频率最高的微调方法。它的核心思想是:冻结预训练模型参数,在原始权重旁边添加低秩矩阵作为可训练参数。
以线性层为例,原始权重为 W,LoRA 引入两个低秩矩阵 A 和 B,前向计算变成:
h = Wx + BAx其中 A 的维度通常是 r * input_dim,B 的维度通常是 output_dim * r,r 远小于 input_dim 和 output_dim。训练时只更新 A 和 B,显存开销大幅下降。
面试追问方向:
- 为什么低秩矩阵能工作?因为微调时权重更新通常具有低秩性质。
- r 设置多大合适?一般 8、16、32 都有实践,过大反而可能过拟合。
- LoRA 能直接合并回原模型吗?可以,合并公式是 W_new = W + BA。
- 和全量微调相比,LoRA 有哪些劣势?在数据量足够大、任务足够复杂时,LoRA 效果可能略低于全量微调。
下面是一个 LoRA 微调参数配置的简化示例,实际字段会随微调框架版本变化:
model_name_or_path: /models/Qwen2.5-7B-Instruct lora_r: 8 lora_alpha: 16 lora_dropout: 0.05 target_modules: - q_proj - k_proj - v_proj - o_proj - gate_proj - up_proj - down_proj train_type: sft dataset_path: ./data/train.jsonl max_seq_len: 2048 learning_rate: 2e-4 num_train_epochs: 3 per_device_train_batch_size: 1 gradient_accumulation_steps: 8 save_strategy: steps save_steps: 500这里需要解释两个关键参数。lora_r 决定低秩矩阵的秩,r 越大可学习参数越多,但不一定效果更好。lora_alpha 是缩放系数,前向计算时会乘以 alpha / r,alpha 和 r 的比值会影响 LoRA 权重的初始更新尺度,实际使用中经常保持 alpha = 2r 左右。
3.3 SFT 指令数据怎么构建
监督微调(SFT)离不开指令数据。构造数据时,常见问题包括:指令重复、答案过长但信息量低、格式不统一、存在偏见或敏感内容。
一个可用的数据样本通常包含三部分:
{ "instruction": "请解释LoRA的原理", "input": "", "output": "LoRA是一种参数高效微调方法,通过引入低秩矩阵来减少可训练参数量。" }这里需要注意,不是数据越多越好。很多团队会先整理几百条高质量种子数据,跑通流程后再逐步扩充。数据量从几千到几十万都有,取决于业务复杂度。
如果面试官问“怎么评估 SFT 数据质量”,可以从指令多样性、答案正确性、格式一致性、难度分布、去重率这些维度回答。
3.4 RLHF 与 DPO 的关系
RLHF(基于人类反馈的强化学习)不再是唯一的对齐方式,现在 DPO(直接偏好优化)也频繁出现在面试中。
RLHF 通常包含三个阶段:训练奖励模型、基于奖励模型做强化学习、使用 PPO 等算法更新策略。它的好处是可以对齐人类偏好,但训练流程复杂,超参数敏感,显存消耗也大。
DPO 的出发点是绕开显式的奖励模型,直接用偏好数据通过损失函数优化策略模型。实现更简单,训练更稳定,因此在很多开源微调项目中成为首选。
面试时可以强调:DPO 仍然需要偏好数据(chosen 和 rejected),但不再依赖单独训练的 reward model,这正是它比 RLHF 流程更短的原因。
3.5 精度问题:fp16、bf16、fp32
大模型训练和部署时经常遇到精度问题。这里需要记住三者的差异:
| 精度 | 位宽 | 特点 | 典型场景 |
|---|---|---|---|
| fp32 | 32 位 | 数值稳定,显存占用大 | 训练基线、数值敏感计算 |
| fp16 | 16 位 | 显存减半,但小数值易溢出 | 混合精度训练 |
| bf16 | 16 位 | 与 fp32 动态范围接近,保留更多指数位 | 大模型训练、推理 |
面试中常见的问题是:“为什么训练大模型优先用 bf16?”因为 bf16 的指数位与 fp32 相同,不太容易出现梯度溢出,虽然尾数精度低,但在训练深度网络时通常能接受。
如果做推理部署,还会继续追问 INT8、INT4 量化,这部分放到部署章节详细讲。
4. 推理与部署面试题
4.1 常见部署方案怎么选
大模型部署不是只有一种方案,面试官通常希望听到选型思路,而不是直接背答案。常见方案包括:
- vLLM:吞吐高,支持 PagedAttention、Continuous Batching,适合在线推理。
- TensorRT-LLM:针对 NVIDIA GPU 优化,延迟低,适合追求极致性能的线上服务。
- llama.cpp:适合 CPU 环境、边缘设备,容易做 GGUF 量化。
- Ollama:本地快速体验工具,适合原型验证,不适合大规模生产。
选择依据可以从模型规模、GPU 显存、并发请求量、延迟要求、开发维护成本几个维度展开。如果只能说“我们用 vLLM”,会显得项目深度不足。
4.2 模型量化
量化是把浮点权重转换为低精度表示,降低显存和计算开销。常见的量化位宽包括 INT8、INT4,以及 GPTQ、AWQ 等方法。
量化的代价是精度损失。层数越深、量化粒度越粗,损失越明显。面试时如果被问到“量化后效果变差怎么办”,可以回答:先做小规模评估对比,再尝试混合精度量化、敏感层跳过量化、或者用 AWQ 这类基于激活值的量化方法。
4.3 吞吐与显存估算
部署面试题常让你算一块 24GB 显存的卡能跑多大的模型。一个粗糙的估算方式:FP16 权重大约每 10 亿参数占用 2GB 显存,7B 模型 FP16 权重约 14GB,加上 KV Cache 和激活值,至少要 18GB 以上才能勉强运行。所以 7B 模型在单张 24GB 显卡上可以跑,但并发很受限制。
如果不确定,面试时可以明说这是估算值,实际还要看上下文长度和并发数。这种坦诚比给出不准确的精确数字更好。
4.4 vLLM 部署示例
下面是一个 vLLM 启动服务的简化命令示例。实际参数需要根据你的模型路径和显卡显存调整。
vllm serve /models/Qwen2.5-7B-Instruct \ --port 8000 \ --tensor-parallel-size 1 \ --max-model-len 8192 \ --gpu-memory-utilization 0.85启动后可以通过 OpenAI 兼容接口调用:
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model": "/models/Qwen2.5-7B-Instruct", "messages": [{"role": "user", "content": "你好"}]}'需要注意的是,模型名称默认可能与路径相关,具体以服务启动日志为准。这个示例的核心目的是展示“部署不只是在 Hugging Face 上加载模型,还要关注服务接口、并发参数和显存控制”。
5. RAG、Prompt 与 Agent 高频面试题
5.1 RAG 为什么这么火
RAG(Retrieval-Augmented Generation)是目前大模型应用落地最常用的方案。它的核心逻辑是:先从外部知识库检索相关文档,再把检索结果作为上下文输入给大模型,让模型基于这些内容生成答案。
面试官常问:“RAG 和微调有什么区别?”回答可以从维护成本、实时性、可解释性三方面切入。RAG 不需要重新训练模型,知识更新快,输出可以引用来源;微调更适合改变模型行为、风格或者解决稳定的领域问题。
5.2 RAG 的完整链路
一个标准的 RAG 系统包括以下环节:
- 文档加载与解析。
- 文本切分(chunking)。
- 向量化(embedding)。
- 向量索引存储。
- 用户问题向量化。
- 相似度检索。
- 重排序(rerank)。
- 拼接上下文并让大模型生成答案。
很多候选人能说到第 6 步,但容易漏掉重排序。这里可以补充:top-k 检索结果可能不够准确,加入 rerank 模型后能提升答案相关性,这是生产级 RAG 和 demo 级 RAG 的重要区别。
下面以 llama_index 为例,展示一个最小可运行的 RAG 构建流程。具体 API 会随版本变化,重点是理解整体流程。
# 文件路径:rag_demo.py # 需要安装:pip install llama-index from llama_index.core import VectorStoreIndex, SimpleDirectoryReader documents = SimpleDirectoryReader("./docs").load_data() index = VectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine(similarity_top_k=3) response = query_engine.query("大模型微调时学习率一般设置多少合适?") print(response)这段代码做了什么:读取 docs 目录下的文档,切分后向量化,构建索引;查询时检索最相关的 3 个片段,并交给默认的大模型生成答案。实际项目中还要处理文档清理、chunk 大小调优、embedding 模型选型、重排序、召回率评估等问题。
5.3 Prompt 优化套路
Prompt 是面试必问题,常见套路包括:
- 角色设定:让模型扮演特定角色。
- 明确指令:把任务拆成清晰的步骤。
- 给出格式要求:例如“输出 Markdown 表格”。
- 示例引导:用 few-shot 示例说明期望输出。
- 约束范围:告诉模型不知道就回答不知道。
如果被问到“CoT 是什么”,可以解释为思维链提示,通过让模型逐步推理来降低复杂任务出错率。但要注意,CoT 不是所有任务都有效,简单任务反而可能浪费 token。
5.4 幻觉问题
大模型幻觉是指模型生成看似合理但不符合事实的内容。面试常问“如何缓解幻觉”,可以从三个层面回答:
- 输入层面:加入检索结果、引用来源、增加上下文约束。
- 推理层面:降低 temperature,使用确定性采样,减少开放生成。
- 模型层面:用 SFT 或 DPO 对齐,让模型学会拒答。
如果面试官继续问“如何检测幻觉”,可以回答:构建带标准答案的评测集,通过人工评估或大模型裁判评估,统计答案与标准答案的一致性。
5.5 Agent 方向高频题
- 什么是 Function Call / Tool Calling?
- Agent 和普通对话系统有什么区别?
- 多 Agent 协作会出现哪些问题?
- 如何管理 Agent 的长期记忆?
- 工具调用失败后如何重试?
回答 Agent 问题时,关键是讲清楚“决策-执行-观察-再决策”的循环,以及工具描述、参数解析、异常恢复这些工程细节。只提 AutoGPT 不够,面试官更想听你踩过哪些坑。
6. 大模型面试高频自测清单
前几章已经给出了不少真题解析。下面按模块整理一份高频自测清单,你可以用来检查自己的复习覆盖度。每道题都建议先自测能否讲满两分钟。
6.1 Transformer 与模型架构
| 序号 | 问题 |
|---|---|
| 1 | 手写 Self-Attention 计算过程 |
| 2 | 多头注意力的维度变化 |
| 3 | RoPE 位置编码的原理 |
| 4 | 为什么用 GQA 替代 MHA |
| 5 | 上下文窗口和位置编码的关系 |
| 6 | 嵌入 |