AI-Agent 面试题汇总 - 大模型篇

一、大语言模型基础

1. 目前主流的开源模型体系有哪些?

主流开源模型体系包括:LLaMA 系、Qwen 系、GLM/ChatGLM 系、Mistral/Mixtral 系、Baichuan 系、DeepSeek 系、InternLM、Yi 等。面试里建议从以下维度比较:

  • 参数规模(7B/13B/70B…)
  • 上下文长度(8K/32K/128K…)
  • 多语言能力
  • 工具调用能力(function calling / agent)
  • 推理成本与部署难度
  • 开源协议(是否可商用)

2. Prefix LM 和 Causal LM 区别是什么?

  • Causal LM:严格自回归,token 只能看左侧历史(下三角 mask)。
  • Prefix LM:把输入分“前缀区”和“生成区”,前缀区通常可双向可见,生成区仍按自回归方式生成。

区别本质:Prefix LM在条件建模上更灵活,Causal LM在统一生成训练上更直接。

3. 为何现在的大模型大部分是 Decoder-only 结构?

核心原因:

  1. 训练目标统一:next-token prediction 可直接吃海量文本。
  2. 生成任务天然匹配:对话、写作、代码补全都属于自回归生成。
  3. 扩展性强:参数和数据放大时性能提升规律清晰。
  4. 工程生态成熟:KV Cache、并行推理框架都围绕 Decoder-only 深度优化。

4. LLM 复读机问题

“复读机”是模型重复输出相同短语/句子的现象。常见原因:

  • 温度太低、top-p过窄
  • repetition_penalty 未设置
  • prompt指令不明确
  • 长上下文导致局部高概率循环

常见解决:

  • 调高 temperature / top-p
  • 设置重复惩罚与 n-gram 限制
  • 缩短上下文或分段生成
  • 在提示词里明确“禁止重复”
outputs = model.generate(
    **inputs,
    max_new_tokens=256,
    temperature=0.8,
    top_p=0.9,
    repetition_penalty=1.1,
    no_repeat_ngram_size=3
)

5. 如何让大模型处理更长的文本?

常见方案:

  1. 分块+检索(RAG):检索相关片段喂给模型。
  2. 长上下文模型:选支持 32K/128K+ 的模型。
  3. 滑动窗口:分段重叠处理后聚合答案。
  4. 层次摘要:段落总结→全局总结。
  5. 位置编码外推技术(如 RoPE 相关扩展)。
def chunk_text(text, chunk_size=1000, overlap=150):
    res, i = [], 0
    while i < len(text):
        res.append(text[i:i+chunk_size])
        i += chunk_size - overlap
    return res

二、大语言模型架构

1. 讲讲对 Attention 的理解?

Attention本质是“按相关性做加权聚合”:给定 Query(当前需求)、Key(索引线索)、Value(内容),先算 Q-K 相似度,再对 V 做加权求和。它让模型在每一步都能动态关注最相关上下文,而不是把信息压缩成固定向量。

2. Attention 的计算步骤是什么?

步骤:

  1. 输入经线性层得到 Q/K/V
  2. 计算分数:(QK^T)
  3. 缩放:除以 (\sqrt{d_k})
  4. 加 mask(因果/padding)
  5. softmax 得注意力权重
  6. 权重乘 V 得输出
import torch, math
Q = torch.randn(2, 16, 64)
K = torch.randn(2, 16, 64)
V = torch.randn(2, 16, 64)

scores = Q @ K.transpose(-1, -2) / math.sqrt(64)
attn = torch.softmax(scores, dim=-1)
out = attn @ V

3. Attention 机制和传统 Seq2Seq 模型有什么区别?

传统 Seq2Seq(无 attention)把整句压成单一向量,长句易丢信息。Attention 允许解码时直接访问编码端各位置,提高长距离依赖建模能力。Transformer进一步完全用自注意力替代RNN,实现更强并行性。

4. Transformer 中 multi-head attention 中每个 head 为什么要进行降维?

原因:

  • 控制计算量与显存
  • 每个head在不同子空间学习不同关系
  • 保持总维度不变(多头拼接后再投影回去)

5. Encoder 编码器与 Decoder 掩码有什么区别?

  • Encoder自注意力通常是双向可见(除padding位)。
  • Decoder自注意力使用因果mask,当前位置不能看未来token。

这决定了:Encoder偏理解,Decoder偏生成。

6. 为什么 BERT 选择 mask 掉 15% 这个比例的词,可以是其他比例吗?

15%是经验上“信息破坏”和“训练信号”之间的平衡点:

  • 太低:监督信号不足
  • 太高:输入被破坏过多,语义上下文不完整可以改成其他比例,但效果要靠实验验证,不同语料/模型可能最优点不同。

7. BERT 非线性的来源在哪里?

主要来自:

  • FFN中的激活函数(GELU)
  • 注意力中的softmax
  • 多层堆叠后残差+归一化形成的复杂非线性表示能力

8. 为什么要进行 LN(LayerNorm)?

LayerNorm在特征维度做归一化,使每层输入分布更稳定,缓解训练震荡、加快收敛。相比BatchNorm,LN不依赖batch统计,更适合NLP可变长度与小batch场景。

import torch.nn as nn
ln = nn.LayerNorm(768)

三、训练数据集

1. SFT(有监督微调)的数据集格式?

典型格式是指令数据:

  • instruction / input / output或 chat 格式:
  • system / user / assistant 多轮消息。
{"instruction":"解释过拟合","input":"","output":"过拟合是训练集好、泛化差。"}

2. RM(奖励模型)的数据格式?

核心是“偏好对”:

  • 同一 prompt 下,chosen(更好回答)与 rejected(较差回答)
{"prompt":"如何学NLP?","chosen":"先基础后项目","rejected":"随便看看"}

3. PPO(强化学习)的数据格式?

通常包含:

  • prompt
  • response
  • reward
  • old_logprobs / values / advantages(算法训练字段)

四、有监督微调

1. 微调方法是啥?如何微调?

微调是在预训练模型上用任务数据继续训练。流程:数据清洗→构建样本→选择全参或PEFT→训练→验证→导出。

from peft import LoraConfig, get_peft_model
cfg = LoraConfig(r=8, lora_alpha=16, target_modules=["q_proj","v_proj"])
model = get_peft_model(base_model, cfg)

2. 微调和参数高效微调之间的区别是什么?

  • 全量微调:更新全部参数,效果上限高但成本高。
  • 参数高效微调(PEFT):只训练少量新增参数,显存和存储成本低。

3. PEFT 有什么优点?

  • 显存占用小
  • 训练快
  • 多任务可维护多个小适配器
  • 易与量化结合(如QLoRA)

4. 多种不同的高效微调方法对比

  • LoRA:低秩矩阵注入,通用最好。
  • Prefix Tuning:学习前缀向量,参数更少。
  • Adapter:插入小模块,结构清晰。
  • P-Tuning v2:深层prompt参数化,效果稳定。

5. 当前高效微调技术存在的一些问题

  • 跨任务泛化不稳定
  • 多adapter融合冲突
  • 超参敏感(r、alpha、target modules)
  • 线上多版本管理复杂(路由、回滚、兼容)

五、推理

1. 为什么大模型推理时显存涨得那么多还一直占着?

两部分:

  1. 模型参数常驻显存
  2. KV Cache随序列长度增长此外,推理框架常使用显存池,不会立即还给系统,看起来“占着不掉”。

2. 大模型在 GPU 和 CPU 上推理速度如何?

通常GPU显著快于CPU,尤其长序列与高并发场景。CPU适合低并发、成本敏感或边缘部署,GPU适合在线服务高吞吐。

3. 推理速度上,INT8 和 FP16 比起来怎么样?

一般INT8更省显存、吞吐更高;FP16精度通常更稳、生态更成熟。真实收益取决于硬件对INT8算子的支持程度。

4. 大模型有推理能力吗?

有,但不是严格符号推理。它能完成多步推断、代码和数学推导,但仍可能逻辑出错或幻觉,因此需结合工具与校验机制。

5. 大模型生成时的参数怎么设置?

常用参数:temperature、top_p、top_k、max_new_tokens、repetition_penalty、stop。经验:

  • 事实问答:低温(0.2~0.7)
  • 创意生成:高温(0.8~1.1)
gen_cfg = {
    "temperature": 0.7,
    "top_p": 0.9,
    "max_new_tokens": 256,
    "repetition_penalty": 1.1
}

6. 有哪些省内存的大语言模型训练/微调/推理方法?

  • 量化(8bit/4bit)
  • LoRA/QLoRA
  • 梯度检查点
  • ZeRO/FSDP分片训练
  • 推理时KV Cache优化、PagedAttention(如vLLM)

六、强化学习

1. 简单介绍强化学习?

强化学习通过“状态-动作-奖励”交互学习策略,目标是最大化长期累计回报。与监督学习不同,它不是每步都有标准标签。

2. 简单介绍一下 RLHF?

RLHF常见三步:

  1. SFT让模型会按指令回答
  2. 训练奖励模型(RM)学习人类偏好
  3. 用PPO等方法优化策略模型

3. 奖励模型需要和基础模型一致吗?

不一定必须一致,但通常建议同家族或相近tokenizer/语料域,以减少奖励信号偏差和训练不稳定。

4. RLHF 在实践过程中存在哪些不足?

  • 人工标注成本高
  • 奖励黑客(讨好RM)
  • 训练不稳定、超参敏感
  • 可能牺牲事实性或多样性

5. 什么是 LLM Agent?

LLM Agent是以大模型为决策核心,结合工具调用、记忆、规划、执行与反馈闭环的系统。它不仅“回答”,还能“行动”。

6. LLM Agent 有什么关键能力?

  • 任务分解与规划
  • 工具选择与调用
  • 记忆管理
  • 自我反思与纠错
  • 安全约束执行

7. 怎样构建基于 LLM 的 Agents?

流程:

  1. 明确任务边界
  2. 定义工具接口
  3. 设计提示与状态机
  4. 构建 Plan-Act-Observe 循环
  5. 监控与评估迭代
while not done:
    plan = llm(plan_prompt(state))
    action = llm(tool_prompt(plan))
    obs = tool_call(action)
    state = update(state, obs)

七、大语言模型评估

1. 大模型怎么评测?

三层:

  • 离线基准(MMLU、GSM8K、HumanEval)
  • 任务指标(F1、ROUGE、Pass@k)
  • 线上指标(时延、成功率、满意度、幻觉率)

2. 大模型的 honest 原则是如何实现的?模型如何判断回答的知识是训练过的已知知识,怎么训练这种能力?

实现方式:

  • 不确定时拒答(阈值/规则)
  • 检索增强并要求给证据
  • 事实校验器二次核查
  • SFT中加入“不知道/信息不足”样本
  • 用偏好数据强化“诚实优于胡编”的行为

模型无法真正“知道自己是否见过所有知识”,通常靠不确定性估计、检索证据和训练偏好共同近似实现。

3. 如何衡量大模型水平?

从“能力-稳定性-成本”三维衡量:

  • 能力:知识、推理、代码、工具调用
  • 稳定性:鲁棒性、安全性、一致性
  • 成本:吞吐、时延、显存、单次调用价格

4. 大模型评估方法有哪些?

  • 自动评测(benchmark)
  • LLM-as-judge
  • 人工盲评
  • 红队对抗测试
  • 线上A/B实验

5. 什么是大模型幻觉?

幻觉是模型生成了看似合理但事实错误或无依据的内容。

6. 为什么需要解决 LLM 的幻觉问题?

因为幻觉会导致错误决策、合规风险和用户信任下降,尤其在医疗、法律、金融等高风险领域。

7. 幻觉一定是有害的吗?

不一定。创意写作场景中“发散”可能有价值;但在事实型任务中幻觉通常是有害的。

8. 幻觉有哪些不同类型?

  • 事实性幻觉
  • 引用幻觉(伪造出处)
  • 推理幻觉(逻辑链错误)
  • 指令偏离型幻觉
  • 上下文冲突型幻觉

9. 为什么 LLM 会产生幻觉?

  • 训练目标是“概率最优”而非“事实真值最优”
  • 语料噪声与知识过时
  • 检索缺失
  • 采样带来的随机性

10. 如何度量/复查幻觉?

  • 人工抽检与事实核对
  • 引入可验证参考答案集
  • 统计“无依据回答率/引用错误率”
  • 使用RAG并校验证据一致性
  • 高风险场景加入人工复核

八、大语言模型应用

1. 什么是 LangChain?

LangChain是LLM应用开发框架,提供提示模板、模型调用、检索、Agent编排、记忆管理等模块,用于快速搭建问答和Agent系统。

2. LangChain 包含哪些核心模块?

  • Prompt 模板
  • Model I/O
  • Retriever / VectorStore
  • Chains
  • Agents
  • Memory
  • Callback/Tracing

3. LangChain 如何调用 LLMs 生成回复?

基本过程:构造Prompt → 调用模型 → 解析输出。

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate

llm = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template("请解释:{topic}")
chain = prompt | llm
resp = chain.invoke({"topic": "LoRA"})
print(resp.content)

4. LangChain 如何修改提示模板?

通过 PromptTemplate/ChatPromptTemplate 参数化变量,按场景维护模板版本,结合评测或A/B持续优化。

from langchain_core.prompts import PromptTemplate
tpl = PromptTemplate.from_template("你是面试官,请回答:{q}")
print(tpl.format(q="什么是RAG?"))
AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以&ldquo;原理+场景+实战&rdquo;为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论
兄弟哪找的
点赞 回复 分享
发布于 今天 15:22 浙江

相关推荐

牛客42327521...:在你没来公司之前你们公司连登录功能都没做?让一个实习生做登录页面?
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务