乐于分享
好东西不私藏

【48】AI工程师面经整理与解读-20260426-Agent算法

【48】AI工程师面经整理与解读-20260426-Agent算法

我是波哥,专注于大模型/推荐系统,持续分享AI算法岗面试岗知识干货、实战项目、面试经验。

【大模型LLM训练营】、【大模型算法冲刺营】持续进行中,详细内容:大模型1v1第5期已经开始直播了!

详情了解可+vBurger_AI


继续复盘整理训练营同学大模型面试真题

这场面的是某tob公司的大模型应用岗。先交代下公司背景,方便大家判断定位:公司是国内做企业级 Data Agent / ChatBI 起家的公司,主打让业务人员用自然语言问数据、出报表,客户覆盖金融、零售、制造业。这种公司面试的特点非常鲜明:不怎么考理论推导,但会把工程链路上的每一个脏活累活抠到细节。这场面试就是典型——5 道题看起来跳跃,实际上全是围绕”企业文档入库 → 向量化 → 检索”这条 RAG 主链路上的脏活展开的,外加一道 MCP 的新概念考察。

如果你做过企业级 RAG 项目,这些题你会觉得”这不就是我每天在调的参数吗”;如果你只做过 Demo 级别的 RAG(丢几个 PDF 进 LangChain 就算完事),这些题会把你问得一脸懵。这正是面试官想筛选的东西。

题目背景补充

面试原题比较简短,很多同学看到第一反应是”这也能叫面试题?”。其实每道题背后都是一个具体的工程场景,这里把场景补全:

题号
原题
背后的工程场景
Q1
Embedding 微调的损失函数
开源 Embedding 模型(bge、m3e)在垂域效果不好,需要用业务数据继续训练
Q2
PDF 解析输出的格式
企业文档入库环节,PDF 是最头疼的格式,解析输出决定下游怎么切分和检索
Q3
拉普拉斯方差阈值
扫描件 / 拍照文档里判断图片是否模糊的经典指标
Q4
为什么要去噪、锐化、超分、对比度增强
OCR 前的图像预处理,直接决定文字识别准确率
Q5
MCP 和 CLI 的区别
2025 年以来 Anthropic 推的 Model Context Protocol,和传统命令行工具调用的本质差异

Q2-Q4 三道题连起来看,就是一整条扫描件 PDF → 图像预处理 → OCR → 结构化输出的链路。面试官其实是在问”你真的做过扫描件入库吗”。

题目分类与难度标注

类别
题目
难度
重要性
模型训练
Embedding 微调的损失函数
⭐⭐⭐⭐
🔥🔥🔥
文档处理
PDF 解析的输出格式
⭐⭐
🔥🔥🔥
图像处理
拉普拉斯方差阈值
⭐⭐
🔥🔥
图像处理
OCR 前置预处理的目的
⭐⭐⭐
🔥🔥🔥
协议与工具
MCP 和 CLI 的区别
⭐⭐⭐
🔥🔥🔥

这套题的分布很”数巅”:没有华而不实的模型原理题,全是能直接对上业务 SOP 的工程问题。

Q1:Embedding 微调的损失函数【深度讲解】

这题是全场最硬的一道,也是最能体现候选人底子的一道。面试官问的是”公式”,说明他不想听你打太极,要写得出来。

背景先讲清楚

Embedding 微调的目标是:让语义相关的句子在向量空间中靠得更近,不相关的句子离得更远。这是度量学习(Metric Learning)的经典命题。不同损失函数的差异,本质是”怎么定义’近’和’远'”、”用几个样本来定义”。

目前 Embedding 训练主流就三大类损失函数,按历史演进顺序讲:

1、Triplet Loss(三元组损失)

形式:给一个 Anchor(锚点)、一个 Positive(正样本)、一个 Negative(负样本)。

直觉:希望 anchor 到 positive 的距离  anchor 到 negative 的距离至少近 margin 这么多。如果已经足够近了(差值 > margin),loss 就是 0,不再更新。

优缺点:简单直观,但一次只看一对正负样本,信息利用率低,训练慢且对负样本选择极其敏感(需要专门做 hard negative mining)。

2、InfoNCE / Contrastive Loss(对比损失)

形式:一个 Anchor 对应一个 Positive,配上 N 个 Negative,做 softmax 分类。

其中 

通常是余弦相似度, 是温度系数(典型值 0.01-0.1)。

直觉:把”在一堆负样本里挑出那个真正的正样本”转化成一个分类问题。分母里负样本越多,任务越难,监督信号越强

工程技巧

  1. In-batch Negatives:不需要单独准备负样本,同一个 batch 里其他样本的 positive 就天然是你的 negative。Batch size 越大效果越好,这也是为什么 Embedding 训练动不动就要 8 卡、16 卡跑大 batch。
  2. 温度系数 τ:τ 越小,模型越关注 hard negative(那些容易混淆的);τ 越大,模型关注所有负样本更均匀。这个参数直接决定训练能不能收敛。

InfoNCE 是目前 Embedding 微调的主流损失函数,bge、e5、gte 这些模型训练基本都是它的变种。

3、Multiple Negatives Ranking Loss(MNR Loss)

Sentence-Transformers 库里的默认选择,本质是 InfoNCE 的工程友好版。只需要提供 (anchor, positive) 对,负样本自动从 batch 内采样。

为什么火:标注成本低——你只要有”问题-答案”或”查询-相关文档”的正例对,训练数据就齐了,不用费劲标负样本。

4、BGE 的多任务损失(进阶答案)

如果想拿满分,可以再提一嘴 BGE M3 的训练:它同时优化稠密向量、稀疏向量、ColBERT 式多向量三种表示,用 self-knowledge distillation 让三种表示互相学习。这种回答一出来,面试官基本会认定你看过论文。

回答策略

面试时别上来就甩 MNR,先讲 Triplet 再讲 InfoNCE 再讲 MNR,按演进顺序讲,体现你理解”为什么业界最后收敛到了 InfoNCE”。面试官问”公式”,写 InfoNCE 那个就够了,重点把温度系数和 in-batch negatives 讲透。

Q2:PDF 解析输出的格式有哪些

这题简单但重要,属于”你到底有没有做过企业文档入库”的判断题。

主流输出格式

  • 纯文本(plain text):最简单,丢失所有结构信息。只适合纯文字小说类 PDF,企业文档基本不能用。
  • Markdown当前最主流的选择。能保留标题层级、列表、表格、加粗斜体,下游 chunking 和 LLM 处理都友好。MinerU、Marker、Docling 这些开源工具默认输出 Markdown。
  • HTML:和 Markdown 能力接近,但保留更多样式信息(颜色、字体大小)。多数场景 Markdown 够用,HTML 更啰嗦。
  • JSON(结构化):把文档拆成元素树,每个元素带类型(title/paragraph/table/figure)、坐标(bbox)、页码、层级。信息量最大,适合下游需要做精细化处理的场景——比如按章节检索、按表格单独建索引、引用时回溯到原文位置。
  • 带布局的中间格式(如 Unstructured 的 Element 列表):介于 JSON 和 Markdown 之间,每个 element 是一条结构化记录,但保留了阅读顺序。

工程选型的潜台词

面试官真正想听的不是”有哪些”,而是”你在什么场景下选哪个“:

  • 纯 RAG 检索:Markdown 够用,简单省事;
  • 需要精确引用和溯源(比如法律、金融文档,要给用户看”这段答案来自第几页第几段”):必须用 JSON,带 bbox 和 page number;
  • 复杂表格多的文档(财报、说明书):JSON 输出表格为 HTML 或 Markdown 嵌套结构,下游用 LLM 理解表格前要专门处理;
  • 扫描件:OCR 之后通常输出为带坐标的 JSON,因为 OCR 本身就是按框识别的。

回答时把这个选型逻辑讲出来,远比罗列格式清单得分高。

Q3:拉普拉斯方差阈值多少

这题看着像送分题,答一个数字就完事,其实是个陷阱——给固定数字的同学基本都会被追问。

先讲这是什么

拉普拉斯算子是图像二阶导数算子,对图像中的边缘(灰度突变处)响应强。一张清晰的图片有大量锐利边缘,拉普拉斯响应的方差就大;模糊图片边缘被”糊”掉了,方差就小。

计算方法

import cv2
img = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
score = cv2.Laplacian(img, cv2.CV_64F).var()

阈值到底取多少

经典经验值:OpenCV 官方教程和 PyImageSearch 那篇传播极广的博客里给的参考是 100——低于 100 判模糊,高于 100 判清晰。

但这个数字不能直接用,真正的答案是”看场景和分辨率“:

  • 手机拍照的高清图(4000×3000):清晰图常在 500-2000,阈值设 200-300 比较合理;
  • 扫描件 200dpi:清晰图常在 100-500,阈值设 80-100;
  • 身份证 / 票据这类小图:清晰图可能就 80-200,阈值要下调到 50-80;
  • 压缩厉害的低质图:整体数值都偏低,阈值还要再降。

更正确的做法是:不要用硬阈值,而是在自己的数据集上采样一批标注好”清晰/模糊”的图片,统计两类分布,找最佳分割点。或者做相对判断——对同一批扫描件里的图片按方差排序,过滤掉末尾 5% 的。

回答策略

别只给一个数。标准答案是:“经典参考值是 100,但这个阈值强依赖图像分辨率和压缩质量。实际工程里我会先在业务数据上跑一批拿分布,再定阈值。比如我们扫描件场景下最终用的是 XX。”

这种回答把”一个数字”升级成了”一个方法论”,面试官一听就知道你真的调过。

Q4:为什么要去噪、锐化、超分、对比度增强【深度讲解】

这题必须结合 OCR 场景回答,面试官问的不是图像处理课本,是 OCR 前置预处理。

统一的目的:提升 OCR 准确率

OCR 模型(无论是 PaddleOCR、Tesseract 还是 GPT-4V)对输入图像质量极度敏感。同样一份合同,扫描质量好 OCR 准确率 99%,扫描质量差可能掉到 70%。预处理就是在 OCR 之前把图像”洗干净”,每一步针对一种特定的劣化。

四种操作各自解决什么问题

去噪(Denoising)

  • 目标:消除扫描或拍照引入的椒盐噪声、高斯噪声;
  • 为什么 OCR 需要:噪声会被 OCR 误识别为标点、笔画,导致”。”变”.”、”一”变”二”;
  • 常用方法:高斯滤波(轻度噪声)、中值滤波(椒盐噪声效果好)、非局部均值去噪(保细节但慢)、BM3D(效果好但贵);
  • :去噪力度太大会把细小笔画一起去掉(比如”日”和”目”的横线),所以要平衡。

锐化(Sharpening)

  • 目标:增强文字边缘,让笔画轮廓更清晰;
  • 为什么 OCR 需要:扫描件经常因为聚焦不准有轻微模糊,锐化后笔画分离度提高,相近字形(”未/末”、”日/曰”)更易区分;
  • 常用方法:Unsharp Mask(USM 锐化)、拉普拉斯锐化;
  • :锐化会放大噪声,所以先去噪再锐化是标准顺序。

超分辨率(Super Resolution)

  • 目标:把低分辨率图像放大到高分辨率;
  • 为什么 OCR 需要:小字号(8pt 以下)或低 dpi 扫描件,文字像素数太少,OCR 模型根本看不清。典型场景是合同的页脚小字、发票上的金额;
  • 常用方法:传统插值(双三次)→ 深度学习(ESRGAN、Real-ESRGAN、SwinIR);
  • 工程提示:超分耗时长,只在检测到小字区域时用,不要全图超分。

对比度增强(Contrast Enhancement)

  • 目标:拉开文字(前景)和纸张(背景)的灰度差;
  • 为什么 OCR 需要:老旧文档、透光扫描、印刷浅淡的文档,前后景差异小,文字”糊”在背景里;
  • 常用方法:直方图均衡化(全局)、CLAHE(限制对比度的自适应直方图均衡,更推荐,不会过度放大噪声)、Gamma 校正;
  • :简单直方图均衡化容易把轻微污渍也拉成黑色,CLAHE 更安全。

加分项:标准预处理流水线

讲到这里再补一个工程师视角的完整 pipeline,直接封神:

原图 → 灰度化 → 去噪(中值/高斯)→ 对比度增强(CLAHE)
    → 二值化(自适应阈值 / Otsu)→ 倾斜矫正(霍夫变换)
    → 必要时锐化 / 超分 → 送入 OCR

顺序有讲究:去噪必须在锐化之前,否则锐化会把噪声一起放大;二值化之前要先提对比度,否则自适应阈值分不干净。

回答策略

别一个个孤立讲,按”输入问题 → 处理手段”配对讲

  • 图像有噪声 → 去噪
  • 图像模糊 → 锐化 / 超分
  • 图像灰暗 → 对比度增强

最后加一句”这些操作的顺序和强度要根据实际图像质量动态调整”,到位。

Q5:MCP 和 CLI 的区别【深度讲解】

这题是 2025 年以来 LLM 面试的新考点,不少同学看到 MCP 三个字就懵。先讲清楚它是什么。

MCP 是什么

MCP(Model Context Protocol)是 Anthropic 在 2024 年底推出、2025 年快速普及的一个开放协议,核心目的是给大模型提供一个标准化的”外挂”接口

类比理解:

  • USB-C 之于充电器 → MCP 之于 LLM 工具;
  • 以前每个 LLM 应用都要自己写一堆工具调用的胶水代码,MCP 来了之后,工具提供方(比如 GitHub、Slack、本地文件系统)只要实现一个 MCP Server,任何支持 MCP 的 LLM 客户端(Claude Desktop、Cursor、各种 Agent 框架)都能直接用。

CLI 是什么

CLI(Command Line Interface)就是命令行工具。gitlscurlffmpeg 都是 CLI。调用方式是 shell 里敲命令,输入是参数,输出是标准输出/标准错误流。

二者的本质区别

维度
CLI
MCP
面向对象
人类用户
LLM / Agent
接口形式
字符串参数 + stdout 文本
结构化 JSON-RPC
能力发现
靠 –help 文档,LLM 得读说明书
Server 自描述(list_tools),LLM 直接知道有哪些能力
状态管理
每次调用独立(无状态)
支持长连接、会话、订阅
安全模型
操作系统权限(用户权限)
协议级权限控制(用户可按工具授权)
传输层
stdin/stdout
stdio / SSE / HTTP
返回格式
非结构化文本
结构化 content blocks(文本、图片、资源引用)
错误处理
退出码 + stderr
标准化错误对象

为什么 LLM 需要 MCP 而不是直接用 CLI

很多人会反问:“LLM 不是也能写 shell 命令吗?为什么还要 MCP?” 这是个好问题,三个原因:

  1. 结构化 I/O:LLM 调用 CLI 要解析文本输出(ls -l 返回的那一大堆东西),解析不准就出错。MCP 直接返回 JSON,LLM 不用干解析的脏活。
  2. 能力自描述:CLI 工具的参数要靠 LLM “记住”(或读 man page),错了就报错重试。MCP Server 启动时就告诉客户端”我有这些工具,每个工具的参数 schema 是什么”,LLM 生成调用时参数错误率极低。
  3. 跨应用复用:你给 Claude 写的工具调用逻辑,搬到另一个 Agent 框架要重写。MCP 是协议,一次实现到处用。

二者是替代关系吗

不是。MCP 本身经常封装 CLI 作为底层实现——你完全可以写一个 MCP Server,它内部就是调用 git 命令。MCP 是面向 LLM 的适配层,CLI 是面向人的工具,两者在不同抽象层次。

回答策略

面试时讲清楚三点:

  1. 面向谁:CLI 给人用,MCP 给 LLM 用;
  2. 接口形式:CLI 是字符串,MCP 是结构化协议;
  3. 能力发现:CLI 靠文档,MCP 靠自描述。

再补一句”MCP 可以封装 CLI 作为实现”,表明你理解两者不是竞争关系。

复盘与建议

这场面试的启示非常明确:

第一,数巅这类应用公司,面试考的全是 RAG 工程链路的”脏活”。你做过的项目要能拆解到具体参数、具体流程、具体踩过的坑。只会画高层架构图、说不出阈值是怎么调的,基本过不了。

第二,PDF 解析和 OCR 预处理是企业 RAG 的隐藏主战场。大家平时学 RAG 都在看 embedding、reranker、chunking,但真正上生产时会发现一半的时间在对付 PDF 和扫描件。面试前把 MinerU、Marker、PaddleOCR 这几个开源工具都跑一遍,看看它们的输出长什么样,调过参数的同学面试时一听就和没调过的不一样。

第三,Embedding 微调要能写公式。光知道”用 bge-m3 做微调”是不够的,得写得出 InfoNCE、能讲清楚温度系数和 in-batch negatives 的作用。这是 2026 年大模型岗的基本盘。

第四,MCP 成了新考点。2025 年下半年开始,MCP 相关问题在大厂、中厂面试里出现频率越来越高。不光要知道它是什么,还要能对比 Function Calling、OpenAPI、LangChain Tool 几种主流方案的异同。

第五,面对”阈值是多少”这种看似简单的数值题,永远不要给一个孤立的数字。正确姿势是”经验参考值是 X,但实际要看场景,具体做法是在业务数据上采样统计”。这是区分”调过”和”没调过”的分水岭。

祝各位面试顺利。