AI 工程面试题
如果说 Node / Java 解决的是“服务端工程能力”,那么 AI 工程解决的是“如何把大模型真正接入业务并稳定上线”。
很多岗位虽然名字写的是 AI 全栈,但二面和三面真正拉开差距的,往往就是这一部分。
高频优先刷题顺序
P0 必刷
- RAG
- Function Calling
- Agent 和 workflow 的区别
- 流式输出
- 多轮上下文管理
- 模型幻觉
- 模型路由和降级
- 成本优化
P1 高频
- Prompt Engineering
- Embedding / 向量库 / rerank
- 安全问题
- Prompt Injection
- 工具权限控制
P2 扩展
- 热点缓存
- 复杂工具编排
- 历史摘要策略细节
面试前 1 小时只看这些
- RAG 链路
- Function Calling 工具调用链路
- Agent 和 workflow
- 流式输出和上下文管理
- 幻觉、降级、成本优化
快速导航
- Prompt Engineering
- Function Calling
- RAG
- Embedding / 向量库 / rerank
- Agent 和 Workflow
- 流式输出
- 上下文管理
- 模型幻觉
- 模型路由和降级
- 成本优化
- 安全问题
- 项目亮点表达模板
- 面试前一天速记
AI 工程到底考什么?
高频考察范围:
- Prompt 设计
- Function Calling / Tools
- RAG
- Embedding / 向量检索 / rerank
- Agent 与 workflow
- 流式输出
- 对话上下文管理
- 模型路由、限流、降级
- 成本优化
- 安全和监控
什么是 Prompt Engineering?
参考答案
Details
Prompt Engineering 不是“写几句提示词”这么简单,它本质上是在设计模型输入,让模型输出更稳定、更可控、更接近业务目标。
面试官最爱追问
- Prompt 的核心目标是什么?
- 提升输出质量
- 提高稳定性
- 降低歧义
- 控制格式
- 常见 Prompt 结构:
- 角色定义
- 任务目标
- 约束条件
- 输出格式
- 示例
- Prompt 为什么不能无限变长?
- token 成本会上升
- 响应速度下降
- 并不一定更准
- 噪音信息会干扰模型
Function Calling 是什么?
参考答案
Details
Function Calling 的核心作用,是让模型不只是“回答问题”,还能够“决定调用工具”。
例如:
- 查询天气
- 查询订单
- 搜索知识库
- 调用数据库
- 调用内部业务 API
核心链路:
- 应用把可调用工具列表提供给模型
- 模型判断当前问题是否需要调用工具
- 模型返回工具名和参数
- 应用真实执行工具
- 工具结果回传给模型,模型再组织最终回复
面试官最爱追问
- 工具参数如何校验?
- 工具失败怎么处理?
- 是否允许模型自动调用多个工具?
- 如何限制高危工具权限?
什么是 RAG?
参考答案
Details
RAG 是 Retrieval-Augmented Generation,检索增强生成。
它解决的问题是:
- 模型知识过旧
- 企业私有知识不在预训练语料里
- 纯靠 Prompt 很难保证准确性
基本链路:
- 用户提问
- 对问题做检索
- 找到相关知识片段
- 把检索结果拼进上下文
- 让模型基于这些内容生成答案
RAG 的关键不是“接上向量库”就结束,而是整个检索链路质量:
- 切片是否合理
- embedding 是否合适
- 召回是否足够
- rerank 是否有效
- 上下文拼接是否干净
Embedding、向量库、rerank 分别做什么?
参考答案
Details
Embedding
把文本转成向量,方便做语义相似度检索。
向量库
存储向量,并支持近似最近邻搜索。
常见面试点:
- 为什么向量检索适合语义搜索?
- 向量库和传统数据库的分工是什么?
rerank
初步召回后,再做一次更精细的相关性排序。
很多 RAG 不准,不是模型不行,而是:
- 召回错了
- 排序不准
- 上下文拼接太脏
Agent 和 Workflow 的区别
参考答案
Details
Workflow 更偏确定性流程,步骤固定、路径清晰。
Agent 更偏自主决策,模型会根据上下文决定下一步行动。
简单理解:
- Workflow: 适合稳定业务流程
- Agent: 适合开放式任务和多工具决策
面试里常问:
- 什么场景适合 workflow?
- 什么场景适合 agent?
- 为什么有些业务不用 agent 反而更稳定?
实际落地时,不要为了“显得高级”强行上 Agent。
流式输出怎么做?
参考答案
Details
流式输出的核心目标是提升首字响应速度和交互体验。
常见实现:
- SSE
- WebSocket
- HTTP chunked response
完整链路一般包括:
- 前端发起请求
- 服务端调用模型流式接口
- 服务端边接收边转发
- 前端增量渲染内容
面试官最爱追问
- 如何处理连接中断?
- 如何记录完整回答?
- 如果中途报错如何回退?
- 如何统计 token 和耗时?
如何做多轮上下文管理?
参考答案
Details
多轮上下文不是把所有历史消息无脑拼进去。
核心目标:
- 保留必要信息
- 控制 token 成本
- 保证回答连续性
常见做法:
- 只保留最近 N 轮
- 对老消息做摘要压缩
- 按角色和优先级保留关键消息
- 业务信息结构化存储,不全部依赖自然语言
面试官最爱追问
- 上下文过长怎么办?
- 如何避免历史脏信息污染当前回答?
- 摘要何时更新?
如何处理模型幻觉?
参考答案
Details
模型幻觉不能彻底消灭,但可以大幅降低。
常见方法:
- 引入 RAG,让答案基于可信资料
- 在 Prompt 中限制“不确定时明确说明”
- 限制回答范围和输出格式
- 高风险场景增加规则校验
- 对关键结果做二次校验
例如:
- 金额
- 时间
- 订单状态
- 法务 / 医疗类高风险信息
如何做模型路由和降级?
参考答案
Details
真实业务里通常不会只接一个模型。
常见原因:
- 成本不同
- 速度不同
- 能力不同
- 稳定性不同
模型路由可以按这些维度做:
- 问题类型
- 用户等级
- 成本预算
- 是否需要工具调用
- 是否需要长上下文
降级策略常见包括:
- 主模型超时切备用模型
- 强模型失败切轻模型
- 关闭部分高级能力
- 直接返回兜底文案
如何做 AI 应用的成本优化?
参考答案
Details
成本优化本质是平衡:
- 准确率
- 响应速度
- token 成本
常见做法:
- 控制上下文长度
- 历史消息摘要化
- 缓存热点问题结果
- 小模型处理简单任务,大模型处理复杂任务
- 减少无意义的长 Prompt
- 限制高频调用
面试里如果你能主动谈成本,通常会明显加分,因为说明你有线上意识。
AI 应用的安全问题有哪些?
参考答案
Details
常见安全问题:
- Prompt Injection
- 数据泄露
- 越权调用工具
- 敏感内容生成
- 恶意高频请求
常见防护:
- 工具白名单
- 参数校验
- 角色权限隔离
- 输出审核
- 限流和配额控制
- 审计日志
AI 工程高频场景题
设计一个企业知识库问答系统
重点考察:
- 文档上传
- 切片
- embedding
- 向量检索
- rerank
- 引用来源展示
- 权限隔离
设计一个支持工具调用的 AI 助手
重点考察:
- 工具注册
- 参数校验
- 调用链路
- 超时重试
- 失败兜底
- 调用日志
设计一个流式聊天系统
重点考察:
- 流式传输
- 会话管理
- token 统计
- 中断恢复
- 消息持久化
项目亮点表达模板
知识库问答项目怎么讲
建议按这个顺序表达:
- 先讲业务背景
- 再讲系统链路
- 再讲你的职责
- 再讲难点和优化
- 最后讲结果
参考表达:
Details
我负责的是一个企业内部知识库问答系统,目标是让运营和客服能直接基于公司文档进行问答,减少人工检索成本。
整体链路是:
- 用户上传文档
- 服务端解析和切片
- 生成 embedding 后写入向量库
- 在线问答时先检索,再做 rerank
- 最后把相关片段交给模型生成答案,并返回引用来源
我主要负责:
- 检索链路设计
- SSE 流式返回
- 上下文拼接
- 权限隔离
- 日志与成本统计
项目中的难点主要有两个:
早期召回不准 我们通过优化切片策略、增加 rerank、清理无效上下文来提升准确率。
成本较高 通过上下文裁剪、热点问题缓存、简单问题走轻模型的方式降低 token 消耗。
最终效果是回答准确率和首字响应速度都有明显提升,客服查询效率也更高。
Agent 项目怎么讲
参考表达:
Details
我做的是一个支持工具调用的 AI 助手,用户可以通过自然语言查询数据、执行业务操作。
我的核心工作不是单纯接模型,而是把工具调用做成可控系统:
- 工具 schema 设计
- 参数校验
- 权限控制
- 超时重试
- 调用日志和审计
这个项目里最大的难点是不能让模型自由调用高风险工具,所以我们做了工具白名单和权限分级,高风险操作必须经过服务端校验,必要时二次确认。
最终上线后,用户可以直接通过对话完成原来要在多个后台页面切换才能完成的操作。
面试官最爱追问
- 你在项目里到底负责了哪一段链路?
- 你解决的最难问题是什么?
- 如果重做一次,你会优先优化什么?
面试前一天速记 30 问
- 什么是 Prompt Engineering?
- Prompt 为什么不能无限变长?
- 什么是 Function Calling?
- 工具调用链路是什么?
- 什么是 RAG?
- RAG 主要解决什么问题?
- 切片为什么重要?
- Embedding 是什么?
- 向量库是做什么的?
- rerank 是做什么的?
- Agent 和 workflow 的区别是什么?
- 什么场景不适合 Agent?
- 流式输出为什么体验更好?
- SSE 和 WebSocket 有什么区别?
- 如何保存完整回答?
- 多轮上下文如何截断?
- 如何做历史摘要?
- 模型幻觉怎么缓解?
- 如何做敏感内容拦截?
- 如何限制工具权限?
- 什么是 Prompt Injection?
- 如何做模型路由?
- 如何做降级?
- 如何做限流?
- 如何控制 token 成本?
- 为什么热点问答适合缓存?
- 如何做日志和监控?
- 如何做失败重试?
- 如何做多租户隔离?
- 如何设计一个 AI 问答系统?