Skip to content

AI 系统设计面试题

AI 技术 ⭐⭐⭐ 高级 🔥🔥 中频

💡 核心要点

AI 系统设计面试考察候选人将 LLM 能力整合到生产系统的端到端工程能力——不仅要了解模型原理,还要能设计可扩展、可维护、成本可控的完整架构。关键在于:明确需求 → 选择合适的架构模式 → 识别核心组件 → 讨论权衡取舍。

AI 系统设计面试框架

与传统系统设计面试类似,AI 系统设计也遵循结构化流程,但需要额外考虑模型选择、Prompt 设计、评估体系等 AI 特有环节。

五步框架


设计题:智能客服系统

题目:设计一个面向电商平台的智能客服系统,能自动回答用户的订单查询、退换货政策、商品问题等,复杂问题需转人工。

需求分析

需求类型详情
功能需求多轮对话、订单查询、知识库问答、人工转接
非功能需求首回复 < 2s、7×24 可用、支持中英文
规模日活 10 万用户、峰值 QPS 500
约束不能泄露其他用户数据、回答需准确(涉及金额)

架构设计

关键技术决策

决策点选择理由
架构模式RAG + Agent (Tool Use)需要检索知识库 + 调用业务 API
模型选择Claude Sonnet / GPT-4o-mini性价比优,速度快,足以胜任客服场景
知识库向量数据库 + BM25 混合检索语义检索 + 关键词检索互补
转人工策略置信度阈值 + 规则触发涉及投诉、金额争议、连续未解决时自动转人工

权衡讨论

准确率 vs 延迟:订单金额查询必须 100% 准确(通过 API 直接查询,不用 LLM 生成);政策类回答可容忍小幅不准确,通过 RAG + 引用原文提高可信度。

成本控制

  • 常见问题使用语义缓存(相似问题命中缓存)
  • 简单意图(查快递)走规则引擎,不调用 LLM
  • 复杂问题才使用 LLM Agent

安全防护

  • 输入过滤:防止 Prompt 注入
  • 输出过滤:不输出其他用户数据、不给出超范围承诺
  • System Prompt 明确限定角色和能力边界

设计题:代码补全系统

题目:设计一个 IDE 内的智能代码补全系统,在用户编写代码时实时提供续写建议。

需求分析

需求类型详情
功能需求实时代码补全(行级 / 块级)、上下文感知
非功能需求延迟 < 200ms(不能打断打字节奏)、低误补率
规模10 万开发者并发、每秒数百万次触发
约束代码隐私、多语言支持(Python/JS/Java/Go...)

架构设计

关键技术决策

决策点选择理由
模型大小1B~7B 专用代码模型延迟 < 200ms 硬约束,大模型无法满足
补全模式FIM (Fill-in-the-Middle)需要同时利用光标前后的上下文
部署方式自建推理服务 + GPU 集群代码隐私要求高、请求量大,API 成本不可控
触发策略Debounce + 智能触发避免无效请求,减少服务端压力

延迟优化

代码补全对延迟极为敏感(>300ms 用户体验明显下降),需要多层优化:

优化层技术效果
客户端Debounce、请求取消(新输入取消旧请求)减少 60%+ 无效请求
网络gzip 压缩、边缘节点就近推理减少网络延迟
推理Prefix Caching(文件头 KV 缓存)减少 30%+ 计算
推理推测解码加速 2~3x
推理INT4 量化减少显存,提高吞吐
生成提前终止(遇到自然断点停止)减少无用生成

权衡讨论

模型大小 vs 质量:1B 模型延迟低但补全质量有限(适合行级补全);7B 模型质量更高但延迟增加(适合块级补全)。可采用级联策略——先用小模型快速补全,用户停顿时用大模型提供更高质量建议。

代码隐私:企业用户要求代码不离开内网。解决方案:私有化部署推理服务,或使用本地小模型(如 Ollama + CodeLlama)。


LLM 工程权衡

AI 系统设计面试中,权衡讨论往往比架构设计本身更能体现候选人的工程成熟度。

准确率 vs 延迟 vs 成本

三角不可能定理:不可能同时最优化准确率、延迟和成本三者,必须根据场景取舍。

场景优先级策略
医疗/法律问答准确率 > 成本 > 延迟大模型 + RAG + 多轮验证
实时聊天助手延迟 > 准确率 > 成本小模型 + 流式输出
批量数据处理成本 > 准确率 > 延迟小模型 + 批处理 + 异步
代码补全延迟 > 准确率 > 成本小模型 + 推测解码 + 缓存

自建 vs API

维度自建部署第三方 API
初始成本高(GPU 采购/租用)低(按用量付费)
边际成本低(固定硬件费用)线性增长
数据隐私完全可控数据离开内网
灵活性可自定义模型/微调受限于 API 提供的能力
运维负担
适用场景高 QPS、隐私敏感、需微调早期验证、低 QPS、快速上线

决策建议:早期用 API 快速验证产品价值,QPS 超过盈亏平衡点后考虑自建。

级联架构 Model Cascade

用小模型处理简单请求,只将复杂请求路由到大模型:

效果:可降低 50~70% API 成本,同时保持与纯大模型接近的质量。


常见陷阱

⚠️ 常见误区

  1. 一上来就选最大的模型:不同任务对模型能力的要求不同。简单分类/提取用小模型即可,只有开放域生成、复杂推理才需要大模型。先明确任务需求再选模型。

  2. 忽视成本分析:面试时只讨论技术架构不讨论成本,显得不成熟。应该估算 QPS × 平均 Token 数 × 单价,给出月度成本量级。

  3. 缺少降级方案:当 LLM 服务不可用时怎么办?应设计降级策略——如切换到备用模型、返回缓存结果、或转人工处理。

  4. 过度依赖 LLM:并非所有环节都需要 LLM。确定性逻辑(订单查询、价格计算)用规则引擎更可靠;只有需要自然语言理解/生成的环节才用 LLM。


📝 面试真题2 道高频
1. 设计一个电商平台的智能客服系统困难
2. 设计一个 IDE 内的代码补全系统困难

面试真题详解

Q1:设计一个电商平台的智能客服系统

要点

架构选择:RAG + Agent(Tool Use)架构,因为需要同时具备知识库检索和业务 API 调用能力。

核心组件

  1. 意图识别:判断用户诉求类型(查订单、问政策、投诉、闲聊)
  2. RAG 知识库:存储退换货政策、商品信息、FAQ,使用向量+关键词混合检索
  3. Tool Use:调用订单查询 API、退换货系统 API,获取精确数据
  4. 对话管理:维护多轮对话上下文和用户会话状态
  5. 转人工判断:置信度低于阈值、涉及投诉/金额争议、用户主动要求时转人工

关键权衡

  • 涉及金额/订单数据的查询必须走 API,不能让 LLM 生成数据
  • 使用语义缓存减少 LLM 调用成本
  • System Prompt 严格限定角色边界,防止越权承诺

Q2:设计一个 IDE 内的代码补全系统

要点

核心约束:延迟 < 200ms,这决定了整个架构选择。

架构设计

  1. 模型选择:1B~7B 专用代码模型(CodeLlama / StarCoder2),延迟优先
  2. 补全模式:FIM(Fill-in-the-Middle)——同时利用光标前后的上下文
  3. 上下文构建:当前文件光标前后 N 行 + import 依赖文件 + 最近编辑片段
  4. 触发策略:Debounce 300ms + 智能触发(行尾、函数签名后)

延迟优化栈

  • 客户端:Debounce + 请求取消(新输入取消旧请求)
  • 推理层:Prefix Caching(文件头 KV 缓存)+ 推测解码 + INT4 量化
  • 生成层:提前终止(遇到自然断点停止)

权衡讨论:小模型适合行级补全、大模型适合块级补全,可用级联策略——快速小模型响应即时输入,用户停顿时大模型提供更高质量建议。


延伸阅读