Skip to content
D · AI 面试训练第 4 课⏱ 30 分钟

AI 应用系统设计面试题

学完你能
  • 设计一个能上线的大模型网关:限流、流式、缓存、容错
  • 讲清成本、可观测、评测发布和内容安全的做法与取舍
  • 在模拟面试里拿到 60 分以上
Yui和Kai搭建AI应用系统设计控制塔
Yui和Kai搭建AI应用系统设计控制塔AI 生成配图

系统设计题考的是「把 Demo 变成能上线的服务」的能力。调通一次 API 很容易,难的是几百个用户同时用时:上游限流了怎么办、费用怎么不失控、出了问题怎么查、换了模型怎么知道没变差。

这类题没有标准答案,面试官看的是你能不能主动想到风险、说清取舍。HiveGPT 本身就是一个大模型网关,前面几条路线里你用到的 Key、分组、用量记录、限流报错,都是这一课的实际例子。

题库 ​

大模型网关像交通枢纽统一接入和限流
大模型网关像交通枢纽统一接入和限流AI 生成配图

如果让你设计一个给公司内部所有团队用的大模型网关,核心模块有哪些?限流怎么做? ​

  • 核心模块:
    • 统一接口(如兼容 OpenAI 格式),屏蔽不同供应商的差异;
    • 鉴权:每个团队、项目发自己的 Key,上游供应商的密钥集中保管、不下发;
    • 路由:按模型名映射到供应商和账号,支持故障转移;
    • 计量计费、日志监控、缓存、内容审核。
  • 限流:
    • 同时限请求数(RPM)和 token 数(TPM),按 Key、团队、模型分层设额度;
    • 输出 token 请求前不知道,先按 max_tokens 预占,结束后按实际用量修正;
    • 用 Redis 做分布式计数(令牌桶或滑动窗口),长请求还要限并发数;
    • 超限返回 429 并带上 Retry-After。

大模型的流式输出(SSE)在网关和后端里要注意什么?用户中途断开连接怎么办? ​

  • 转发:收到一块转一块,关掉反向代理的缓冲(如 Nginx 的 proxy_buffering off),否则用户看到的是一次性输出。
  • 超时:首 token 超时和整体超时分开设;长时间无数据时可以发心跳保持连接。
  • 用户断开:检测到客户端断开就取消上游请求,避免白白消耗;已生成的部分仍要计费,记录到断开为止的用量。
  • 用量:流式下 usage 通常在最后一个事件里(OpenAI 格式需要设置 stream_options.include_usage)。
  • 错误处理:开始输出后状态码已经发出,中途出错只能在事件流里发错误事件;也不能再换上游重试,用户已经看到部分内容了。

大模型应用可以在哪些层面做缓存?prompt cache 和语义缓存分别是什么? ​

  • prompt cache(前缀缓存):由模型供应商实现,请求开头和之前的请求相同时复用已算好的结果,这部分输入更便宜、首 token 更快。所以把系统提示、工具定义、固定文档放前面,变化的用户输入放后面。
  • 精确缓存:请求完全相同时直接返回之前的结果,适合确定性的离线任务。
  • 语义缓存:问题向量和历史问题足够相似就复用答案。风险是相似但不同的问题被误命中、答错,要设相似度阈值,只缓存通用内容,并带上权限范围和过期时间。
  • 另外,Embedding 结果、检索结果也可以缓存。

AI 应用上线后费用涨得很快,你会从哪些方面控制成本? ​

  • 先观测:按用户、功能、模型统计 token 和费用,找到花钱的大头,而不是凭感觉优化。
  • 模型分级:简单任务(分类、抽取、改写)用小模型,复杂任务才用大模型或推理模型;推理模型按需调低推理强度。
  • 减少输入:精简提示词,多轮对话做摘要,RAG 只放相关的块。
  • 控制输出:设合理的 max_tokens,要求简洁的输出格式。
  • 用好缓存:调整提示词结构提高 prompt cache 命中率。
  • 非实时任务:走批处理接口,通常有折扣。
  • 兜底:每个用户设配额,项目设预算告警,防止滥用或程序 bug 刷爆账单。

上游模型服务超时、限流或者宕机时,你的系统怎么保证可用? ​

  • 区分错误:429、5xx、超时可以重试;参数错误、鉴权失败、余额不足重试也没用,直接返回。
  • 重试:指数退避加随机抖动,遵守上游的 Retry-After;限制重试次数和总耗时,避免用户等太久。
  • 故障转移:切换到备用账号或其他供应商的同等模型;必要时降级到更小的模型,并让调用方知道。
  • 熔断:某个账号或供应商连续失败就暂时摘掉、冷却一段时间,避免请求继续打到故障节点、引发雪崩。
  • 边界:流式已经开始输出就不再重试;会产生副作用的请求(如发消息的 Agent 步骤)要保证幂等。

大模型应用的可观测性要记录哪些东西?和传统后端相比有什么不同? ​

  • 每次调用:模型、输入和输出 token、首 token 延迟和总延迟、费用、错误码、finish_reason(比如是不是被长度截断)。
  • 链路追踪:用 trace 把一次请求里的检索、模型调用、工具调用和 Agent 的每一步串起来,出问题时能还原过程。
  • 内容:采样保存输入输出用于排查和评测,注意脱敏和用户隐私。
  • 质量信号:用户点赞点踩、重新生成次数、线上抽样评测分数。
  • 不同之处:结果不确定,同样的输入可能有不同输出;很多问题不是报错,而是「答得不好」,光看错误率和延迟发现不了,所以要单独监控质量。

换模型或者改提示词之前,你怎么确认效果没有变差? ​

  • 评测集:从真实请求里挑代表性案例,加上边界情况和历史上出过的 bug,标好期望结果。
  • 评分方式:能用规则判断的用断言(格式对不对、是否包含关键信息);开放式回答用 LLM 评分,并定期人工抽检校准;关键场景人工评审。
  • 对比:新旧版本在同一评测集上比较质量,同时比较成本和延迟。
  • 流程:提示词做版本管理,评测接入 CI,改动先跑回归。
  • 上线:灰度或 A/B 测试,监控线上指标,有问题能快速回滚。
  • 闭环:线上发现的失败案例持续补进评测集。

一个多租户的 AI 平台,API Key 和数据要怎么设计,才能做到隔离和安全? ​

  • 平台 Key:数据库只存哈希,创建时只显示一次;支持轮换和吊销;可设权限范围(能用哪些模型)、额度和有效期。
  • 上游密钥:供应商的 Key 加密存储(或放在 KMS 里),只在服务端使用,不出现在日志和前端。
  • 数据隔离:每个请求都带租户身份,数据库查询、向量检索、缓存都按租户过滤,缓存的 key 里要包含租户标识,防止串数据。
  • 资源隔离:配额和限流按租户设置,避免一个租户耗尽共享的上游额度,影响其他人。
  • 审计:记录谁在什么时候用哪个 Key 做了什么;日志里的敏感内容脱敏。

面向公众的 AI 应用怎么做内容安全?输入和输出两侧分别要做什么? ​

  • 输入侧:用关键词加分类模型审核用户输入;检测提示词注入;限制长度和请求频率,防止批量滥用。
  • 输出侧:模型生成后再审核一遍;流式输出可以按句或分段审核,发现问题就中断并替换提示;系统提示限定应用的服务范围。
  • 合规:在国内面向公众提供生成式 AI 服务,需要按规定完成备案,并对 AI 生成的内容做标识。
  • 运营:保留必要日志,提供举报入口,定期复盘被拦截和漏放的案例。
  • 取舍:规则太严会误拦正常请求,影响体验;太松会漏放,要按业务场景平衡,并持续调整。

生成视频、处理长文档这类要跑几分钟的任务,你会怎么设计接口和后台? ​

  • 异步接口:提交后立即返回任务 ID,不让 HTTP 请求一直挂着;客户端轮询状态,或通过 Webhook、SSE 接收进度和结果。
  • 后台执行:任务进消息队列,由 worker 消费,按上游额度控制并发。
  • 状态持久化:排队、运行中、成功、失败、已取消,存在数据库里,服务重启后能恢复。
  • 可靠性:设超时和重试;用幂等键防止重复提交;长任务分段处理,失败时从断点继续。
  • 结果:大文件存对象存储,返回链接。
  • 体验与计费:显示进度,支持取消;提交时预扣费用,失败后退还。

答题思路 ​

面试答题按骨架、原理、取舍逐层展开
面试答题按骨架、原理、取舍逐层展开AI 生成配图

系统设计题时间长、范围大,结构比细节更重要:

  1. 先结论:先给出整体方案的骨架。「我会把它设计成异步任务:提交返回 ID,队列加 worker 执行,状态存库,结果推送。」
  2. 再原理:说明为什么这样设计。「几分钟的任务如果用同步请求,连接会被网关超时切断,失败了也无法恢复。」
  3. 再实践与取舍:逐个展开关键点和代价。「轮询实现简单但有延迟和额外请求,SSE 实时但要维护长连接,我会……」

动手设计前,先花一两句话确认需求和规模:多少用户、多少 QPS、对延迟和成本哪个更敏感。这既能让方案有针对性,也能体现你的工程习惯。

延伸阅读:AI 系统设计面试题总结、大模型网关详解、AI 可观测性与 Trace、LLM/Agent 安全实战。

模拟面试 ​

5 道题从上面的题库随机抽,逐题作答,每题都会得到打分、点评和要点。系统设计题回答要有结构,先给骨架再展开,篇幅有限时优先讲清关键取舍。

🎤 模拟面试每场 5 题,AI 面试官逐题打分点评,总分 = 平均分 × 10
登录后开始模拟面试

小结 ​

  • 网关的核心是统一接口、鉴权、路由、限流、容错和计量;流式和缓存各有容易踩的坑。
  • 成本、可观测、评测发布要形成闭环:先量化,再优化,用评测证明没有变差。
  • 回答先确认需求和规模,再按「结论 → 原理 → 实践与取舍」展开。

到这里 D 路线的四课就学完了。四组模拟面试都过 60 分后,到路线页领取结业证书。

代码示例在页面里运行时使用 HiveGPT 的模型接口。延伸阅读来自 JavaGuide(Apache-2.0),版权归原作者。