“大模型面经”“100题”“99%通过率”——这类标题你最近一定刷到过不少。坦白说把题目背完并不能保证拿到 offer真正拉开差距的是你能不能把“原理、训练、部署、应用”串成一条线并且用项目经历说服面试官。这篇文章不承诺“刷完就通过”但会给你一套比题单更值钱的准备框架先讲大模型面试的考察逻辑再按高频考点拆解 Transformer、微调、推理部署、RAG/Agent 四大块最后落到简历撰写和投递全流程。读完你可以直接照着梳理自己的知识树和项目文档。1. 大模型面试到底在考什么很多人准备大模型岗位面试第一反应是去搜“面试100题”。但如果你只背题不建立知识结构面试官多追问一句“为什么这样设计”就会露馅。大模型岗位面试和传统后端面试有明显区别。后端面试考的是“你用过什么框架、踩过什么坑”大模型面试考的是“你是否理解模型内部发生了什么以及能不能把模型真正跑起来服务业务”。1.1 三类面试官的考察重心面试官大致分三类考察侧重点完全不同面试官类型考察重点典型问题方向算法/研究型模型原理、训练机制、论文复现Attention 公式、RLHF、位置编码、loss 设计工程落地型部署、推理优化、稳定性、成本精度选型、显存估算、vLLM 加速、量化原理业务应用型场景理解、RAG、Agent、Prompt 工程怎么设计知识库问答、工具调用怎么保证可靠很多求职者只准备了算法方向结果面试官是工程团队问的全是“FP16 和 BF16 有什么区别”“7B 模型要多少显存”这就很容易冷场。1.2 高频考点地图综合各厂大模型相关岗位的公开面经高频考点大致分布在六个模块基础原理Transformer、自注意力、位置编码、KV Cache、GPT 系列演进、RLHF。训练微调预训练与 SFT 的区别、LoRA/QLoRA、P-Tuning、数据构造、灾难性遗忘。推理部署精度问题FP32/FP16/BF16、量化、vLLM、ollama、流式输出、显存估算。应用工程RAG 流程、向量数据库、Agent、Function Calling、Prompt 优化。评估与安全模型评估指标、幻觉问题、越狱防护、数据隐私。项目经历简历上的项目是不是自己做的、技术选型理由、效果指标。把这张地图打印出来对照自己薄弱的地方逐项补比收集一百道题更有效。1.3 面试准备的正确姿势面试准备要形成“面经收集 → 知识归类 → 动手验证 → 口头复述”的循环。看到一个题目不要直接看答案先自己试答再去跑一段最小代码验证原理。比如“KV Cache 到底省了什么”你可以写一个 100 行的小脚本对比有无 KV Cache 的计算量理解立刻不一样。接下来的章节我会把高频题目按这个思路拆开讲并且给出可以直接运行的代码或配置示例。2. 高频原理题从 Transformer 到注意力机制2.1 Attention 是怎么算出来的在 Transformer 中每个输入 token 会生成三个向量Query、Key、Value。Attention 的本质是“根据 Query 和所有 Key 的匹配程度对 Value 做加权求和”。公式是Attention(Q, K, V) softmax(Q * K^T / sqrt(dk)) * V这里有一个高频追问点为什么要除以sqrt(dk)如果dk很大Q * K^T的点积值会很大softmax 会进入梯度极小区域导致训练不稳定。除以sqrt(dk)可以把点积的方差拉回接近 1 的量级让梯度更稳定。2.2 为什么需要位置编码自注意力本身是“无序”的。它计算 token 两两之间的相关性时完全不考虑谁先谁后。为了建模语言顺序必须在输入中加入位置信息。常见方案有三种绝对位置编码把 token 位置编号编码进 embedding如正弦位置编码。相对位置编码建模两个 token 之间的相对距离如 T5 的 Relative Bias。旋转位置编码 RoPE把位置信息通过旋转矩阵注入 Q/K 向量是目前主流大模型最常用的方案。面试如果只答“Transformer 没有位置信息所以要加位置编码”只是及格分。能说出 RoPE 的核心思想会更加分。2.3 KV Cache 的作用KV Cache 是推理优化里最基础的概念。生成第 N 个 token 时前面的 token 对应的 Key 和 Value 已经算过了不需要重新计算把它们缓存起来就叫 KV Cache。面试官常问KV Cache 是省显存还是省计算答案是主要省重复计算但代价是增加显存占用。随着序列变长KV Cache 占用会线性增长这也是长文本推理显存吃紧的关键原因之一。很多推理框架做 PagedAttention、缓存复用、量化 KV Cache都是为了缓解这个问题。2.4 实现一个最小注意力计算下面是一个最简单的 scaled dot-product attention 实现可以在本地跑通import torch import torch.nn.functional as F def scaled_dot_product_attention(query, key, value, maskNone): query: [batch, heads, seq_len, dk] key: [batch, heads, seq_len, dk] value: [batch, heads, seq_len, dv] d_k query.size(-1) scores torch.matmul(query, key.transpose(-2, -1)) / (d_k ** 0.5) if mask is not None: scores scores.masked_fill(mask 0, float(-inf)) weights F.softmax(scores, dim-1) return torch.matmul(weights, value) if __name__ __main__: batch, heads, seq_len, d_k 1, 4, 8, 64 q torch.randn(batch, heads, seq_len, d_k) k torch.randn(batch, heads, seq_len, d_k) v torch.randn(batch, heads, seq_len, d_k) out scaled_dot_product_attention(q, k, v) print(output shape:, out.shape)你可以把 mask 参数换成因果 mask观察生成模型训练时为什么每个 token 只能看到前面的 token。3. 大模型训练与微调从 SFT 到 LoRA3.1 面试官最常问的训练问题训练相关题目是算法岗和工程岗都会问的模块。常见问题包括预训练和 SFT 有什么区别SFT 训练数据怎么构造全参数微调和 LoRA 的区别LoRA 为什么能减少显存rank 怎么设置微调之后模型“变傻”了怎么办预训练的目标是让模型学会语言规律SFT 的目标是让模型学会按人类期望的方式回答。两者数据规模、学习率、训练轮数都不同。SFT 数据量通常几万到几十万条即可但质量要求很高需要覆盖目标场景的真实问题。3.2 LoRA 的显存优势LoRA 的核心思想是冻结原始模型权重在旁路插入低秩矩阵来模拟权重更新。训练时只更新这部分参数大幅减少需要保存梯度的参数量。用一个粗糙但直观的计算来解释7B 模型全参数微调每个参数都需要保存梯度再加上优化器状态显存需求往往要几十 GB。而 LoRA 只更新几百万到几千万参数显存需求大幅下降普通消费级显卡也能跑起来。关于 rank 的设置没有一个万能值。r8和r16是常见的起点任务简单或数据量少时用小 rank任务复杂且数据充足时可以适当加大。更大的 rank 不一定带来更好的效果反而可能过拟合。3.3 LoRA 微调最小配置与代码使用 Hugging Face 的peft库可以快速跑通 LoRAfrom transformers import AutoModelForCausalLM, AutoTokenizer from peft import LoraConfig, get_peft_model, TaskType model_name Qwen/Qwen2.5-7B-Instruct base_model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypeauto, device_mapauto ) lora_config LoraConfig( task_typeTaskType.CAUSAL_LM, r8, lora_alpha32, lora_dropout0.1, target_modules[q_proj, v_proj], ) model get_peft_model(base_model, lora_config) model.print_trainable_parameters()这里的关键配置项r低秩矩阵的秩决定新增参数量。lora_alphaLoRA 缩放系数实际缩放比例是lora_alpha / r。target_modules需要插入 LoRA 的模块常见选择是q_proj和v_proj也可以覆盖所有线性层。运行后会看到可训练参数量远小于全量参数这就是 LoRA 显存占用的优势来源。3.4 微调失败的排查思路很多人在微调时遇到两个典型问题loss 不下降、微调后模型通用能力变差。loss 不下降首先要检查数据集是否太脏包括空文本、重复文本、标签错位。其次检查学习率SFT 的初始学习率通常比预训练小 1 到 2 个数量级比如 1e-5 到 2e-5。微调后模型“变傻”通常是因为 SFT 数据太单一覆盖不到通用场景。补救方式是在数据集里混合一定比例的通用对话数据也叫“通用能力保持数据”。这个比例没有固定标准一般根据任务难度调整建议从 5% 到 20% 之间做实验。4. 大模型部署与推理优化精度、量化与 vLLM部署和推理优化是 2026 年大模型岗位面试中权重最高的模块之一。原因很简单大部分公司不会从零训练大模型而是基于开源模型做微调和私有化部署。能不能把模型跑起来、跑得快、跑得省是工程团队最关心的事。4.1 FP32 / FP16 / BF16 精度问题先说结论训练和推理对精度的要求不同主流选择也不同。精度位宽数值范围适用场景显存占用FP3232 位大训练基准、调试高FP1616 位中等小数值易溢出部分训练和推理中BF1616 位与 FP32 接近尾数少大模型训练主力中INT88 位小推理量化低INT44 位很小推理量化、本地部署极低面试经常会问为什么训练大模型偏好 BF16 而不是 FP16因为 BF16 的指数位与 FP32 相同动态范围大不容易出现梯度溢出。FP16 尾数精度高但数值范围小大模型训练时很容易在反向传播中出现下溢或上溢。你可以在本地跑一个简单的数值验证import torch fp16_value torch.tensor(100000.0, dtypetorch.float16) bf16_value torch.tensor(100000.0, dtypetorch.bfloat16) print(fp16:, fp16_value) print(bf16:, bf16_value) print(fp16 * 1000:, fp16_value * 1000) print(bf16 * 1000:, bf16_value * 1000)运行后你会发现 FP16 在乘大数时容易出现inf而 BF16 表现更稳定。4.2 量化INT8 / INT4 原理与分类量化是把高精度权重用低精度表示从而减少显存占用和计算量。面试常问两种量化方式PTQ训练后量化在模型训练完成后用少量校准数据推算量化参数不需要重新训练速度快但可能有一定精度损失。QAT量化感知训练在训练过程中模拟量化误差让模型权重适应低精度表示精度损失更小但成本更高。实际工程中PTQ 是常态。比如用bitsandbytes加载 4-bit 模型或者用 AWQ、GPTQ 做离线量化。4.3 vLLM 与 PagedAttentionvLLM 是目前最常用的开源推理服务框架面试官可能会追问它为什么比原生 Hugging Face 推理快。关键原因是 PagedAttention。类似于操作系统管理内存的分页机制PagedAttention 把 KV Cache 分成固定大小的块来管理减少显存碎片并支持共享前缀从而提升并发吞吐和长序列处理能力。实际部署一个模型时可以通过一行命令启动 OpenAI 兼容的服务vllm serve Qwen/Qwen2.5-7B-Instruct \ --tensor-parallel-size 1 \ --max-model-len 8192 \ --gpu-memory-utilization 0.9参数说明--tensor-parallel-size使用多张显卡时的张量并行度。--max-model-len最大上下文长度会影响 KV Cache 预留空间。--gpu-memory-utilization控制显存利用率上限避免 OOM。4.4 Ollama 本地部署私有大模型本地部署大模型是很多中小团队和个人的首选Ollama 以“安装简单、开箱即用”著称很适合在面试中作为项目底座来聊。部署一个开源模型的整个过程只需要两条命令ollama pull qwen2.5:7b ollama run qwen2.5:7b拉取完成后Ollama 会启动一个本地服务默认监听11434端口。你可以通过 REST API 调用curl http://localhost:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2.5:7b, messages: [{role: user, content: 用一句话解释什么是大模型}] }注意Ollama 的 API 不是所有版本都原生兼容 OpenAI 格式使用前建议查看当前版本的接口文档。不过整体趋势是越来越多的本地推理服务开始兼容 OpenAI 接口这也降低了应用层接入成本。4.5 显存估算方法面试官经常给出一个模型参数规模让你估算推理需要多少显存。估算公式可以这样拆模型权重显存加上 KV Cache 显存再乘以工程冗余系数。def estimate_memory(model_size_b, precision_bytes2, context_len4096, layers32, kv_heads8, head_dim128, overhead1.2): # 权重显存 weight_mem model_size_b * 1e9 * precision_bytes / 1024**3 # GB # KV Cache 显存简化估算 block_size 2 * layers * kv_heads * head_dim * precision_bytes kv_mem context_len * block_size / 1024**3 # GB total (weight_mem kv_mem) * overhead return total print(estimate_memory(7))这个估算很粗糙但足够用来判断“7B 模型在 16GB 显存上能不能跑”。实际部署时还要考虑激活值、框架自身开销等因素。5. RAG 与 Agent大模型应用层的高频考点应用层题目经常出现在二面和三面尤其是做业务应用的公司。面试官会给你一个业务场景比如“企业内部知识库问答”“客服自动化”然后让你设计方案。5.1 RAG 为什么是必备知识点RAG检索增强生成是当前大模型落地最成熟的技术路线。它的核心价值是让模型在生成时能参考外部知识减少幻觉并且知识可以随时更新不需要重新训练。面试常问RAG 和微调怎么选一个可复用的回答框架知识变化频率高、需要实时更新优先 RAG。需要改变模型行为风格、输出格式、专业术语优先微调。两者可以结合先微调让模型适应任务再用 RAG 补充领域知识。5.2 RAG 最小流程实现RAG 的完整链路是文档加载 → 文本切分 → 向量化 → 存储 → 检索 → 重排 → 生成。下面是一个精简伪代码用来串起整个流程# 伪代码展示 RAG 最小流程 from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_huggingface import HuggingFaceEmbeddings from langchain_community.vectorstores import FAISS # 1. 加载文档 loader TextLoader(docs/qa.txt) documents loader.load() # 2. 切分文本 splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap50) chunks splitter.split_documents(documents) # 3. 向量化并存储 embedding HuggingFaceEmbeddings(model_nameBAAI/bge-small-zh-v1.5) vectorstore FAISS.from_documents(chunks, embedding) # 4. 检索 query 公司年假政策是什么 retrieved_docs vectorstore.similarity_search(query, k3) # 5. 构造 Prompt 并交给大模型 context \n\n.join([doc.page_content for doc in retrieved_docs]) prompt f请根据以下资料回答问题\n\n{context}\n\n问题{query}这里每一步都可以深挖。比如为什么chunk_size500、为什么要有chunk_overlap面试官追问时你要能答出“切分过大导致检索噪声切分过小导致上下文不完整overlap 是为了保持段落语义连贯”。5.3 Agent 与 Function CallingAgent 是另一个高频话题。面试官会问Agent 和普通对话有什么区别Agent 怎么调用外部工具怎么避免 Agent 死循环Agent 的核心是“让模型能够规划行动、调用工具、观察结果并决定下一步”。Function Calling 是实现工具调用的常见方式模型输出一个结构化参数系统解析后调用真实函数。一个简单的 Function Calling 示例{ name: get_weather, description: 获取指定城市的天气信息, parameters: { type: object, properties: { city: {type: string, description: 城市名称} }, required: [city] } }实际面试中建议把表达重心放在“工具定义是否清晰、结果如何反馈给模型、出现错误如何处理”这三个点上。比如模型调用了不存在的工具系统应该返回一个可读的错误信息让模型有机会重新规划而不是直接崩溃。5.4 面试回答“RAG 还是微调”的得分话术低分回答RAG 便宜微调贵。高分回答思路先给判断标准再给实际案例。“我一般按三个维度判断。第一知识是否需要高频更新如果是选 RAG。第二是否需要改变模型的表达风格或领域术语如果是选微调。第三两者并不互斥我最近做的一个项目是先微调让模型适应客服语气再用 RAG 接入最新产品手册效果比单独用任何一种都好。”这种回答既展示了知识面又体现了工程经验。6. 简历怎么写才能通过初筛前面所有技术准备最终都要通过简历和面试表达出来。简历环节最容易出现两个问题一是堆砌名词二是有项目无成果。6.1 技术简历的底层逻辑筛选简历的人想看到三件事你做过和岗位相关的事情。你在这个事情里有清晰的技术选型和落地成果。你的成果可量化、可验证。不要写“精通大模型”而是写“基于 Qwen2.5 搭建了私有大模型问答系统使用 LoRA 微调解决了领域术语识别问题最终专业问答准确率提升了若干百分点”。这里有两个原则数字要真实没有数据就写清楚“指标提升待完整评测”。技术栈要匹配岗位要求不要为了凑关键词把没做过的东西写上去。6.2 一份有竞争力的项目描述模板项目经历可以按这个模板写项目名称基于大模型的中文法律知识问答系统 项目周期2025.09 - 2025.12 个人职责负责模型微调、RAG 链路搭建和部署优化 核心工作 1. 以 Qwen2.5-7B-Instruct 为基座构造 2 万条法律领域 SFT 数据使用 LoRA 完成参数高效微调 2. 基于向量数据库构建 RAG 检索链路实现回答内容可溯源 3. 使用 vLLM 部署推理服务对比原生 Transformers 推理验证了吞吐提升效果 4. 项目代码和评估报告已整理到 GitHub。 技术栈Python、PyTorch、transformers、peft、vLLM、FAISS、Ollama这段描述的价值在于每个工作点都能对应一个面试追问。面试官问“数据怎么构造”“为什么选 LoRA”“FAISS 和 pgvector 怎么选”你都有东西可以展开。6.3 投递渠道与流程节奏投递渠道优先级建议是内推 公司官方招聘官网 主流招聘平台。全流程通常是简历筛选 - 笔试/测评 - 一轮技术面 - 二轮技术面 - 交叉/主管面 - HR面 - offer沟通笔试阶段很可能包含算法题和机器学习基础题所以 LeetCode 刷题和必要的 ML 基础都不能完全放下。技术面二轮往往更偏向项目深挖你要能把简历里每个细节讲清。7. 面试全流程模拟与答题方法7.1 四轮面试常见结构面试阶段时长考察重点应对策略技术一面40-60 分钟基础原理、编码能力先把概念框架讲清楚再写代码技术二面40-60 分钟项目深度、系统设计用 STAR 逻辑讲项目突出冲突和取舍主管面30-45 分钟软素质、业务思维多谈业务价值少谈技术炫技HR 面15-30 分钟稳定性、薪资预期保持真诚展示学习能力和稳定性7.2 答题方法论先结论后展开面试答题最忌讳上来就背一段书。推荐用“结论 理由 例子”的结构。例如被问“为什么选择 RAG”先给结论因为业务知识更新快RAG 能在不改动模型参数的情况下接入最新内容。再给技术理由RAG 通过检索外部知识为模型提供上下文减少幻觉并且支持知识增量更新。最后给例子我在法律问答项目中接入最新法规库检索链路返回原文模型回答可溯源。这种结构让面试官很容易抓住你的重点也方便他继续追问。7.3 遇到不会的题怎么办不要硬编也不要直接说“不会”。比较得体的处理方式是承认这部分没有深入实践过。基于已有知识做合理推断。表达学习意愿。比如说“这个问题我之前没有在工程里用过不过基于我对 Transformer 的理解我推测它和 KV Cache 的显存管理有关我后续会去补一下这一块的源码。”这种回答方式比沉默或乱猜要好得多。7.4 反问环节这样问更加分面试官一般会问“你有什么想问我的”这是加分机会。可以问团队现在对大模型技术栈的选型是什么新同学入职之后主要接手哪类项目团队目前在推理成本优化上做到了什么程度这些问题能让面试官觉得你关注实际工作而不是只想要一份 offer。8. 常见问题与避坑指南问题现象可能原因排查方式解决方案背了很多题面试时依然讲不清没有建立知识树问题之间是孤立的自己模拟面试录音回听按本文的六模块整理知识树每个知识点准备3分钟口头讲解简历写“精通大模型”被追问就崩项目不够真实细节撑不住找朋友模拟深挖简历把项目里的技术选型、失败经历、效果数据全部补充完整微调损失下降但效果差数据集质量低或指标错误检查数据样本增加评测集清洗数据构造更贴近真实应用的评测集vLLM 启动后 OOMmax-model-len 设置过大查看启动日志和显存监控降低max-model-len或gpu-memory-utilization本地部署大模型后响应速度慢未使用推理加速框架对比原版推理和 vLLM 推理的时间引入 vLLM打开 continuous batching 特性只知道 RAG 流程不能处理失败情况缺乏错误处理经验构造坏数据观察检索和生成的问题加入检索结果数量监控、空结果兜底逻辑、重排序环节避开这些坑比多刷 50 道题更有效。9. 总结与后续学习方向回到开头那句话刷完一百题并不能保证通过面试。真正有价值的准备方式是以“原理 → 训练 → 部署 → 应用 → 表达”为骨架把高频考点做成自己的知识树再通过实际项目或开源 Demo 把每一个知识节点验证一遍。如果你时间有限优先补三块LoRA 微调的最小代码示例、本地部署大模型并用 vLLM 加速、RAG 全流程的工程实现。这三个能力最容易在面试中被量化考察也最容易迁移到实际业务里。后续学习方向建议按需深入想做算法研究就多看 RLHF 和模型架构源码想做工程落地就多研究推理优化、量化、高并发服务和成本控制想做应用开发就多研究 RAG、Agent、评估体系和少样本学习。面试本质上是“把一件事讲清楚”的能力。大模型领域变化很快2026 年的面试题和 2024 年已经有很多不同但面试官想要的人一直是同一种既能理解原理也能动手落地还能把方案讲明白。你不需要真的刷完一百题只需要顺着这条线把每一个核心知识点都变成自己的东西。