AI 系统设计题
AI 全栈岗位到了三面,通常不会再停留在“会不会调用模型 API”,而是会重点考察你能否把 AI 能力设计成一个可上线、可监控、可扩展的系统。
这类题目的核心不是背标准答案,而是答题时要有固定结构。
高频优先刷题顺序
P0 必刷
- 企业知识库问答系统
- 支持流式输出的 AI 对话系统
- 模型调用网关
P1 高频
- Agent 工具调用平台
- 多租户隔离
- 成本统计
- 降级和限流
P2 扩展
- 工具审计
- 灰度和回滚
- 复杂权限编排
面试前 1 小时只看这些
- 知识库问答系统的离线 / 在线链路
- 流式聊天系统的上下文和消息存储
- 模型网关的路由、限流、降级
- Agent 工具调用的平台化治理
快速导航
AI 系统设计题怎么回答?
建议统一按这个顺序展开:
- 先明确业务目标和边界
- 再拆核心模块
- 再讲关键数据流
- 再讲性能、稳定性、安全
- 最后讲扩展性和成本
设计一个企业知识库问答系统
业务目标
- 用户上传企业文档
- 系统支持按知识库问答
- 回答时给出引用来源
- 支持多租户和权限隔离
核心模块
- 文档上传模块
- 文档解析模块
- 文本切片模块
- embedding 生成模块
- 向量检索模块
- rerank 模块
- 大模型生成模块
- 权限与审计模块
核心链路
离线链路
- 用户上传文档
- 服务端解析文档文本
- 按规则切片
- 生成 embedding
- 写入向量库和元数据库
在线问答链路
- 用户提问
- 做权限校验
- 对问题生成 embedding
- 检索相关片段
- rerank 排序
- 拼接上下文
- 调用模型生成答案
- 返回答案和引用来源
面试官重点关注
- 切片策略怎么定?
- 如何避免召回不准?
- 为什么要 rerank?
- 如何做权限隔离?
- 如何展示引用来源?
- 文档更新后如何增量重建?
面试官最爱追问
- 切片粒度怎么确定?
- 为什么仅靠向量召回往往不够?
- 如何证明你的答案是“可信”的?
稳定性设计
- 文档解析异步化
- embedding 任务走队列
- 检索超时兜底
- 模型失败降级
- 热点问题缓存
设计一个支持流式输出的 AI 对话系统
业务目标
- 用户输入问题后尽快看到响应
- 支持多轮对话
- 支持中断、重试、历史记录
核心模块
- 会话管理
- 消息存储
- 模型调用网关
- 流式传输层
- 上下文压缩模块
- 审核和限流模块
核心链路
- 前端创建或进入会话
- 用户发送消息
- 服务端鉴权和限流
- 拉取最近上下文
- 必要时对历史消息做摘要
- 调用模型流式接口
- 服务端通过 SSE 或 WebSocket 转发
- 前端增量渲染
- 完成后落库消息和统计信息
面试官重点关注
- 为什么选 SSE 或 WebSocket?
- 上下文过长怎么办?
- 如何记录完整回答?
- 用户断线后怎么恢复?
- 如何统计 token 和耗时?
面试官最爱追问
- 为什么这里选 SSE,不选 WebSocket?
- 用户中途断线如何恢复?
- 聊天历史是全量拼接还是摘要压缩?
稳定性设计
- 请求超时控制
- 连接中断兜底
- 敏感内容审核
- 错误日志和链路追踪
- 热门回答缓存
设计一个 Agent 工具调用平台
业务目标
- 模型可以按需调用外部工具
- 工具调用过程可审计、可控、可回放
- 不允许越权操作
核心模块
- 工具注册中心
- 工具元数据管理
- 参数校验模块
- 权限控制模块
- 工具执行器
- 调用日志与审计模块
核心链路
- 平台维护工具清单和 schema
- 用户发起请求
- 模型判断是否需要调用工具
- 返回工具名和参数
- 服务端校验参数和权限
- 调用真实工具
- 将工具结果回传模型
- 模型组织最终答案
面试官重点关注
- 为什么不能让模型直接自由调用所有工具?
- 工具参数如何校验?
- 工具超时怎么处理?
- 高风险工具如何做审批或二次确认?
- 怎么做调用审计?
面试官最爱追问
- 为什么不能把工具权限完全交给模型?
- 工具失败后是重试、降级还是直接报错?
- 高风险操作怎么做二次确认?
稳定性设计
- 工具白名单
- 参数 schema 校验
- 超时和重试
- 熔断和降级
- 失败回退到人工或普通问答
设计一个模型调用网关
业务目标
- 统一接入多个模型厂商
- 统一做鉴权、限流、计费和日志
- 支持模型路由和降级
核心模块
- API 网关
- 用户鉴权
- 配额与限流
- 模型路由
- 调用日志
- 成本统计
- 降级策略中心
核心链路
- 用户请求进入网关
- 校验身份、租户、配额
- 根据策略路由模型
- 调用对应模型服务
- 记录 token、耗时、错误率、成本
- 返回响应
面试官重点关注
- 模型如何路由?
- 超时如何降级?
- 不同模型接口不一致怎么办?
- 如何做成本统计?
- 如何做灰度和回滚?
面试官最爱追问
- 多模型接入后接口差异怎么统一?
- 成本和效果冲突时你怎么取舍?
- 主模型超时后降级策略怎么设计?
项目亮点表达模板
知识库项目亮点怎么讲
参考表达重点:
- 不要只说“做了 RAG”
- 要说清楚检索链路、权限、缓存、成本和效果
参考表达:
Details
这个项目表面上是一个 AI 问答系统,本质上是一个企业知识检索系统。
我负责的是问答主链路,包括:
- 文档切片策略
- embedding 入库
- 检索和 rerank
- Prompt 上下文拼接
- 流式输出
项目里最关键的优化,是把最初“只做向量召回”的方案,升级为“向量召回 + rerank + 引用来源返回”,这样回答可解释性更强,也更容易让业务接受。
另外,我们还加了:
- 多租户隔离
- 权限过滤
- 热点缓存
- 成本统计
所以这个项目不只是把模型接进来,而是把它变成了一个真实可上线的企业能力。
对话系统项目亮点怎么讲
参考表达:
Details
我负责的对话系统重点不在界面,而在完整消息链路设计。
关键工作包括:
- 会话和消息表设计
- 上下文裁剪和摘要
- SSE 流式输出
- token 统计
- 异常兜底
这里最核心的价值,是把“模型调用”升级成“稳定的聊天服务”,用户不仅能提问,还能看到连续上下文、历史消息和稳定响应。
模型网关项目亮点怎么讲
参考表达:
Details
模型网关的核心价值是把多模型调用统一收口,避免每个业务线都自己接模型。
我负责的重点是:
- 模型路由
- 限流与配额
- 统一鉴权
- 调用日志
- 成本统计
- 降级策略
这样做之后,业务团队不需要关心不同模型厂商接口差异,可以直接通过统一网关接入模型能力。
面试高频追问
- RAG 为什么会不准?
- 切片过大或过小会有什么问题?
- 多租户隔离如何做?
- 如何防止 Prompt Injection?
- 如何控制 token 成本?
- 为什么有些场景不适合 Agent?
- 如何做日志、监控、报警?
- 如何做限流和降级?
面试回答建议
答这类题目时,最容易失分的是直接开始讲模型和框架,反而忽略了工程问题。
一定要主动补这些维度:
- 鉴权
- 限流
- 日志
- 监控
- 降级
- 成本
- 权限隔离
只要你能把这些维度系统地说出来,面试官通常会认为你不是“只会调 API”,而是真的理解线上系统。