Skip to content

AI 系统设计题

AI 全栈岗位到了三面,通常不会再停留在“会不会调用模型 API”,而是会重点考察你能否把 AI 能力设计成一个可上线、可监控、可扩展的系统。

这类题目的核心不是背标准答案,而是答题时要有固定结构。

高频优先刷题顺序

P0 必刷

  • 企业知识库问答系统
  • 支持流式输出的 AI 对话系统
  • 模型调用网关

P1 高频

  • Agent 工具调用平台
  • 多租户隔离
  • 成本统计
  • 降级和限流

P2 扩展

  • 工具审计
  • 灰度和回滚
  • 复杂权限编排

面试前 1 小时只看这些

  1. 知识库问答系统的离线 / 在线链路
  2. 流式聊天系统的上下文和消息存储
  3. 模型网关的路由、限流、降级
  4. Agent 工具调用的平台化治理

快速导航

AI 系统设计题怎么回答?

建议统一按这个顺序展开:

  1. 先明确业务目标和边界
  2. 再拆核心模块
  3. 再讲关键数据流
  4. 再讲性能、稳定性、安全
  5. 最后讲扩展性和成本

设计一个企业知识库问答系统

业务目标

  • 用户上传企业文档
  • 系统支持按知识库问答
  • 回答时给出引用来源
  • 支持多租户和权限隔离

核心模块

  • 文档上传模块
  • 文档解析模块
  • 文本切片模块
  • embedding 生成模块
  • 向量检索模块
  • rerank 模块
  • 大模型生成模块
  • 权限与审计模块

核心链路

离线链路

  1. 用户上传文档
  2. 服务端解析文档文本
  3. 按规则切片
  4. 生成 embedding
  5. 写入向量库和元数据库

在线问答链路

  1. 用户提问
  2. 做权限校验
  3. 对问题生成 embedding
  4. 检索相关片段
  5. rerank 排序
  6. 拼接上下文
  7. 调用模型生成答案
  8. 返回答案和引用来源

面试官重点关注

  • 切片策略怎么定?
  • 如何避免召回不准?
  • 为什么要 rerank?
  • 如何做权限隔离?
  • 如何展示引用来源?
  • 文档更新后如何增量重建?

面试官最爱追问

  • 切片粒度怎么确定?
  • 为什么仅靠向量召回往往不够?
  • 如何证明你的答案是“可信”的?

稳定性设计

  • 文档解析异步化
  • embedding 任务走队列
  • 检索超时兜底
  • 模型失败降级
  • 热点问题缓存

设计一个支持流式输出的 AI 对话系统

业务目标

  • 用户输入问题后尽快看到响应
  • 支持多轮对话
  • 支持中断、重试、历史记录

核心模块

  • 会话管理
  • 消息存储
  • 模型调用网关
  • 流式传输层
  • 上下文压缩模块
  • 审核和限流模块

核心链路

  1. 前端创建或进入会话
  2. 用户发送消息
  3. 服务端鉴权和限流
  4. 拉取最近上下文
  5. 必要时对历史消息做摘要
  6. 调用模型流式接口
  7. 服务端通过 SSE 或 WebSocket 转发
  8. 前端增量渲染
  9. 完成后落库消息和统计信息

面试官重点关注

  • 为什么选 SSE 或 WebSocket?
  • 上下文过长怎么办?
  • 如何记录完整回答?
  • 用户断线后怎么恢复?
  • 如何统计 token 和耗时?

面试官最爱追问

  • 为什么这里选 SSE,不选 WebSocket?
  • 用户中途断线如何恢复?
  • 聊天历史是全量拼接还是摘要压缩?

稳定性设计

  • 请求超时控制
  • 连接中断兜底
  • 敏感内容审核
  • 错误日志和链路追踪
  • 热门回答缓存

设计一个 Agent 工具调用平台

业务目标

  • 模型可以按需调用外部工具
  • 工具调用过程可审计、可控、可回放
  • 不允许越权操作

核心模块

  • 工具注册中心
  • 工具元数据管理
  • 参数校验模块
  • 权限控制模块
  • 工具执行器
  • 调用日志与审计模块

核心链路

  1. 平台维护工具清单和 schema
  2. 用户发起请求
  3. 模型判断是否需要调用工具
  4. 返回工具名和参数
  5. 服务端校验参数和权限
  6. 调用真实工具
  7. 将工具结果回传模型
  8. 模型组织最终答案

面试官重点关注

  • 为什么不能让模型直接自由调用所有工具?
  • 工具参数如何校验?
  • 工具超时怎么处理?
  • 高风险工具如何做审批或二次确认?
  • 怎么做调用审计?

面试官最爱追问

  • 为什么不能把工具权限完全交给模型?
  • 工具失败后是重试、降级还是直接报错?
  • 高风险操作怎么做二次确认?

稳定性设计

  • 工具白名单
  • 参数 schema 校验
  • 超时和重试
  • 熔断和降级
  • 失败回退到人工或普通问答

设计一个模型调用网关

业务目标

  • 统一接入多个模型厂商
  • 统一做鉴权、限流、计费和日志
  • 支持模型路由和降级

核心模块

  • API 网关
  • 用户鉴权
  • 配额与限流
  • 模型路由
  • 调用日志
  • 成本统计
  • 降级策略中心

核心链路

  1. 用户请求进入网关
  2. 校验身份、租户、配额
  3. 根据策略路由模型
  4. 调用对应模型服务
  5. 记录 token、耗时、错误率、成本
  6. 返回响应

面试官重点关注

  • 模型如何路由?
  • 超时如何降级?
  • 不同模型接口不一致怎么办?
  • 如何做成本统计?
  • 如何做灰度和回滚?

面试官最爱追问

  • 多模型接入后接口差异怎么统一?
  • 成本和效果冲突时你怎么取舍?
  • 主模型超时后降级策略怎么设计?

项目亮点表达模板

知识库项目亮点怎么讲

参考表达重点:

  • 不要只说“做了 RAG”
  • 要说清楚检索链路、权限、缓存、成本和效果

参考表达:

Details

这个项目表面上是一个 AI 问答系统,本质上是一个企业知识检索系统。

我负责的是问答主链路,包括:

  • 文档切片策略
  • embedding 入库
  • 检索和 rerank
  • Prompt 上下文拼接
  • 流式输出

项目里最关键的优化,是把最初“只做向量召回”的方案,升级为“向量召回 + rerank + 引用来源返回”,这样回答可解释性更强,也更容易让业务接受。

另外,我们还加了:

  • 多租户隔离
  • 权限过滤
  • 热点缓存
  • 成本统计

所以这个项目不只是把模型接进来,而是把它变成了一个真实可上线的企业能力。

对话系统项目亮点怎么讲

参考表达:

Details

我负责的对话系统重点不在界面,而在完整消息链路设计。

关键工作包括:

  • 会话和消息表设计
  • 上下文裁剪和摘要
  • SSE 流式输出
  • token 统计
  • 异常兜底

这里最核心的价值,是把“模型调用”升级成“稳定的聊天服务”,用户不仅能提问,还能看到连续上下文、历史消息和稳定响应。

模型网关项目亮点怎么讲

参考表达:

Details

模型网关的核心价值是把多模型调用统一收口,避免每个业务线都自己接模型。

我负责的重点是:

  • 模型路由
  • 限流与配额
  • 统一鉴权
  • 调用日志
  • 成本统计
  • 降级策略

这样做之后,业务团队不需要关心不同模型厂商接口差异,可以直接通过统一网关接入模型能力。

面试高频追问

  • RAG 为什么会不准?
  • 切片过大或过小会有什么问题?
  • 多租户隔离如何做?
  • 如何防止 Prompt Injection?
  • 如何控制 token 成本?
  • 为什么有些场景不适合 Agent?
  • 如何做日志、监控、报警?
  • 如何做限流和降级?

面试回答建议

答这类题目时,最容易失分的是直接开始讲模型和框架,反而忽略了工程问题。

一定要主动补这些维度:

  • 鉴权
  • 限流
  • 日志
  • 监控
  • 降级
  • 成本
  • 权限隔离

只要你能把这些维度系统地说出来,面试官通常会认为你不是“只会调 API”,而是真的理解线上系统。