大模型项目通用基础与个人问题面试题。点击折叠区查看答案。
四、通用基础与个人问题
1:Transformer 的整体架构是什么?
查看答案
2:Function Calling 的原理是什么?
查看答案
3:MCP 和 Function Calling(函数调用)有什么区别和联系?
查看答案
- Function Calling:大模型输出结构化的调用指令
- MCP:通信协议,提供标准的工具供模型调用
4:LangChain 和 LangGraph 的区别?
查看答案
- LangChain:LangChain 是一个用于构建大语言模型应用的开源编排框架,通过模块化组件和链式调用将 LLM 与外部数据、工具及业务逻辑无缝集成。
本质是组件库——六大组件,适合线性链。两种版本:经典版(v0.1,面试八股)→ 现代版(v0.2+/LCEL 时代,见下表)
| 组件 | 中文名 | 经典版(v0.1) | 职责 |
|---|---|---|---|
| Model I/O | 模型输入输出 | Models + Prompts | 模型抽象、Prompt 模板、输出解析 |
| Retrieval | 检索 | Indexes | 文档加载器、文本分割、向量库、检索器 |
| Chains | 链 | Chains | 链式编排(旧 LLMChain 类 → 现 LCEL) |
| Agents | 智能体 | Agents | 动态决策调用工具 |
| Memory | 记忆 | Memory | 跨轮次保存对话状态 |
| Callbacks | 回调 | 无(新晋一等公民) | 日志、追踪、流式输出 |
演进要点:Indexes → Retrieval(强调检索编排而非存储结构);Models + Prompts → Model I/O(贴合 LCEL 管道);Callbacks 升一等公民(生产可观测性)。生态已拆分:LangChain Core(基础抽象)/ LangGraph(Agent 已迁移,弃用 AgentExecutor)/ LangSmith(追踪评估)。面试背经典版,开发看现代版,别执着“6”这个数字。
- LangGraph:编排框架——有"循环 + 分支 + 状态",适合复杂流程,StateGraph 状态图、节点函数、条件边、Checkpointer 持久化。状态在节点间流转,支持中断恢复和人机协同。
5:LangChain、LangGraph、Dify 怎么选?
查看答案
6:介绍一下 LoRA、QLoRA 微调的原理和参数?
查看答案
核心是冻结预训练模型权重,在 Transformer 的线性层注入可训练的低秩分解矩阵,只训练这个小矩阵。训练后再合并回原权重 或者 通过适配器外挂。
LoRA (低秩自适应微调),预训练模型在适应特定任务时,权重更新量( ΔWΔW )具有“低秩”特性
QLoRA 在 LoRA 基础上引入高精度量化(4bit 量化)、双重量化、分页优化器 优化降低显存。
关键参数有 rank(r)、alpha、dropout,通常微调注意力层的 q_proj、v_proj 等线性层。
- Rank (r):低秩矩阵的维度,决定可训练参数量和信息容量。r 越大,模型表达能力越强但显存占用越高;通常取 8~64。
- Alpha (α):缩放系数,控制 LoRA 权重对基座模型的影响强度。实际生效的缩放因子为
α / r,增大 α 等效于提高 LoRA 的学习率或贡献度。经验法则:一般设
α = r或α = 2r,保持训练稳定性。
7:怎么判断模型过拟合或者灾难性遗忘?
查看答案
- 过拟合看验证集 Loss:训练 Loss 降但验证 Loss 升即过拟合;也可拿无关问题测,若模型只会用训练数据的格式回答一切,也是过拟合
- 灾难性遗忘看通用任务:微调后问原本擅长的通用问题,质量断崖下跌就是遗忘了
LoRA本身很大程度缓解灾难性遗忘,rank不要设置太大,防止灾难遗忘和过拟合
8:为什么不用 DeepSpeed?为什么不全量微调?
查看答案
- 4090 单卡完全够用了
- 全量微调 7B 要几十 GB 显存、成本高且易灾难性遗忘
- LoRA 只训不到 1% 参数,一张 4090 三小时训完,效果够用,还能按任务热插拔
9:能说一下 DeepSpeed 之中 Zero 1、2、3 的区别和用途吗?
查看答案
先说结论:我的项目(单卡 4090 + LoRA 微调 Qwen3-8B)不需要 DeepSpeed。 LoRA + Gradient Checkpointing 单卡即可跑通 8B 模型,引入 DeepSpeed 属于过度设计。
三者的本质区别是切分什么,切得越多越省显存、但通信开销越大:1→2→3 越来越慢,显存越来越小。
| Stage | 切分对象 | 显存节省 | 通信开销 | 适用场景 |
|---|---|---|---|---|
| ZeRO-1 | 优化器状态 | ~4x | 几乎不变 | 模型放得下、想省优化器显存 |
| ZeRO-2 | 优化器 + 梯度 | ~8x | 少量增加 | LoRA 多卡首选 |
| ZeRO-3 | 优化器 + 梯度 + 参数 | ~N卡倍 | 显著增加 | 全量微调、模型单卡放不下 |
- ZeRO-1(优化器状态分片):仅切分 Optimizer States,通信开销最低
- ZeRO-2(+梯度分片):平衡显存与性能,中等规模模型训练的默认推荐
- ZeRO-3(+参数分片):显存节省最大,可训练远超单卡显存的超大模型,但通信开销最高、训练速度最慢
决策口诀:
- 单卡 → 不用 DeepSpeed(GC + LoRA 够了)
- 多卡 + LoRA → ZeRO-2(LoRA 冻结了基座权重,可训练参数极少,ZeRO-3 切参数收益小还引入通信开销)
- 多卡 + 全量微调 → 先试 ZeRO-2,OOM 了再上 ZeRO-3(吞吐会降 20~40%)
- 模型大到单卡连推理都放不下(如 70B)→ ZeRO-3 + offload(CPU/NVMe 卸载)
一句话:ZeRO 不是越高级越好,是显存不够时的逐级妥协。GC + LoRA 在单卡下就是最优解。
10:vLLM 为什么快?
查看答案
分页注意力,GPU连续处理
核心就两点:PagedAttention(分页注意力)分页管理KV缓存,让GPU连续批处理,实现高并发下低延迟推理。
11:vLLM 的前缀缓存是怎么实现的?
查看答案
12:TensorRT、SGLang 和 vLLM 怎么选?
查看答案
- TensorRT-LLM:追求极致性能和硬件利用率,且硬件是 NVIDIA GPU
- vLLM:追求生产级稳定性、通用性,希望快速上线
- SGLang:业务涉及复杂的多轮对话、AI Agent、需要频繁输出结构化数据
13:FP32、FP16、BF16、INT8、INT4 分别是什么?
查看答案
它们是数据精度格式:
- 浮点:FP32/FP16、BF16
- 整型量化:INT8/INT4
精度依次降低,显存占用减少,推理加速,但可能损失模型效果。
14:模型记忆层的 Q、K、V 分别是什么?
查看答案
15:幻觉有哪些不同类型?
查看答案
- 事实性幻觉:和事实对不上
- 逻辑幻觉:逻辑不对
- 上下文幻觉:和之前聊的不一样
- 总结:根本就是在瞎猜
16:为什么 LLM 会产生幻觉?
查看答案
17:CoT、ToT 区别?
查看答案
- CoT:思维链,让模型一步步推导到答案
- ToT:思维树,探索多条推理路径,能评估、回溯,找出最优解
18:提示词(Prompt)优化一般有哪些策略?
查看答案
19:什么场景调低温度?什么场景调高温度?
查看答案
温度(temperature)是模型生成的多样性指数
- 低温:适合分类、代码、JSON 等要稳定的任务
- 高温:适合创作发散
本项目意图分类用 0.1 低温,保证策略选择可复现;生成答案用较高温度(走 API 默认值、一般约 0.7 左右),回复更自然。
20:Embedding 怎么选?
查看答案
- BGE-M3:双向量(稠密固定 1024 维)
- BGE-Large:单向量
- Qwen-Embedding:高精度,显存高
21:用的什么 embedding 模型?
查看答案
- RAG 混合检索:BGE-M3
- Neo4j 稠密:bge-large-zh-v1.5
22:向量带箭头的和不带箭头的区别?
查看答案
23:了解哪些机器学习算法?详细讲一下项目中的随机森林
查看答案
24:讲讲 F1、精确率、准确率、召回率?
查看答案
- 准确率(Accuracy):预测对了多少,最直观
- 精确率(Precision):预测成正类的样本里,有多少是真的正类
- 召回率(Recall):真实正类里,有多少被模型找出来了
- F1-score:精确率和召回率的折中指标 (调和平均值)
25:这三个项目里,你觉得挑战最大的是哪个?
查看答案
26:你平时怎么用 AI 编程工具?
查看答案
- AI 写代码,我 review
- 开发后让 AI 写测试
- 设计决策问题:先出方案,合理继续;不确定的让它测试出结果再实施
- bug、报错就一键复制,啥也不管
- 复杂代码让他读,给我注释、解释、流程图
其他的我都不咋用,唯一用的就是 concise-company,简单回答,默认回答太长了。
27:说说你的优点和缺点?
查看答案
- 优点:快速学习
- 缺点:不会拒绝人,已经在改了,有效沟通