跳转至

🏗️ AI系统设计面试

⚠️ 时效性说明:本章涉及前沿模型/价格/榜单等信息,可能随版本快速变化;请以论文原文、官方发布页和 API 文档为准。

适用岗位:AI算法工程师(二面/三面)、MLOps/AI Infra工程师 核心能力:将AI模型落地为可靠、高效、可扩展的生产系统


目录

章节 内容 学时
01-方法论 系统设计面试框架(AI版RESHADED) 2h
02-经典题型 10个高频AI系统设计题(详解) 8h
03-核心组件 特征系统/推理服务/训练平台/监控 4h
04-模拟面试 45分钟模拟面试流程 2h

总学时:约16小时


01 AI系统设计面试方法论

1.1 AI-RESHADED框架(45分钟)

MLOps架构流程图

步骤 时间 内容
Requirements 5min 功能需求+非功能需求(QPS/延迟/成本)
Estimate 3min 数据量/模型大小/计算量 back-of-envelope
System Overview 5min 端到端架构图(数据→训练→推理→监控)
High-level Design 10min ML方案选择+技术权衡
Architecture 10min 详细组件设计(特征/推理/存储)
Deep Dive 7min 面试官感兴趣的技术细节
Evaluation 3min 离线→在线评估+监控方案
Deployment 2min 发布策略+版本管理+回滚

1.2 AI系统设计 vs 传统系统设计

维度 传统系统 AI系统
核心 数据存储+检索 模型训练+推理
评估 功能正确性 离线指标+在线AB
迭代 代码更新 数据+模型+代码
特有问题 - 数据偏差/模型漂移/幻觉
资源 CPU+内存+磁盘 +GPU+显存

1.3 性能估算方法(Back-of-Envelope)

系统设计面试中的快速估算是核心能力,以下是常用公式和参考值:

估算项 公式/经验值
平均QPS DAU × 日均请求次数 / 86400
峰值QPS 平均QPS × 2~3(峰值系数)
存储总量 数据量 × 单条大小 × 副本数 × 保留天数
GPU显存 模型参数量 × 精度字节数(FP16=2B, INT8=1B, INT4=0.5B)
推理延迟 模型计算 + 特征查询 + 网络开销 + 队列等待
带宽 QPS × 单次响应大小

常用数值参考

组件 延迟/容量
Redis读取 <1ms
FAISS向量检索(百万级) ~5ms
Cross-Encoder Rerank(10条) ~50ms
LLM推理(7B, 512 tokens) ~2-5s
A100 80GB FP16 7B模型~14GB显存, 70B~140GB(需多卡)
Kafka端到端延迟 ~10-100ms
ES/倒排检索(千万级) ~10-50ms

估算示例(推荐系统)

Text Only
DAU        = 1亿
日均请求    = 10次/用户
日总请求    = 10亿
平均QPS    = 10亿 / 86400 ≈ 12K
峰值QPS    = 12K × 2.5 ≈ 30K
单请求延迟  = 特征查询(5ms) + 召回(20ms) + 精排(50ms) + 重排(10ms) ≈ 85ms < 200ms ✓
GPU需求    = 30K QPS × 50ms/req ÷ 1000 = 1500 GPU·s/s → 需~1500个推理线程


02 经典题型(10题详解)

题目1: 设计一个推荐系统(抖音/小红书)

推荐系统架构图

需求:日活1亿,每次请求推荐50条内容,延迟<200ms

架构

Text Only
用户请求 → API Gateway → 用户画像服务(Redis) → 多路召回(并行)
    ├→ ItemCF召回(Redis)
    ├→ 双塔向量召回(FAISS, GPU)
    ├→ 热度召回
    ├→ 多兴趣召回(MIND)
    └→ 社交召回
→ 合并去重(10000→1000) → 粗排(轻量双塔) → 精排(DIN多目标模型, GPU)
→ 重排(多样性+业务规则) → 返回50条

关键设计决策: - 特征系统: 离线(Spark T+1)+近实时(Flink分钟级)+实时(Redis毫秒级) - 精排模型: DIN + 多目标(CTR/完播率/互动) + MMoE - 模型更新: 小时级增量训练 + 天级全量训练 - AB测试: 用户级分流,核心指标+护栏指标


题目2: 设计一个RAG问答系统(企业知识库)

RAG系统架构图

需求:100万文档,QPS 100,准确率目标>90%,延迟<3s

架构

Text Only
文档上传 → 解析(PDF/HTML/DOC) → 分块(500 tokens, 50 overlap)
→ Embedding(BGE-M3) → 向量库(Milvus) + 关键词索引(ES)

用户查询 → Query改写(HyDE) → 混合检索(Dense 0.7 + BM25 0.3)
→ Rerank(Cross-Encoder, Top-10) → LLM生成(GPT-4o/Qwen-72B)
→ 引用标注 → 返回结果

关键设计决策: - 分块策略: 语义感知分块(按段落/标题) > 固定大小 - 混合检索: Dense(语义)+Sparse(关键词)互补 - Rerank: Cross-Encoder精排通常能显著提升纯向量检索效果 - 幻觉控制: 引用标注+自一致性检查+置信度阈值


题目3: 设计一个LLM推理服务(日调用1亿)

LLM推理服务架构图

需求:支持7B-70B模型,P99<5s,GPU成本优化

架构

Text Only
客户端 → LB(Nginx) → API Gateway(认证/限流/路由)
→ 请求队列(Redis Stream, 优先级队列)
→ 推理集群:
    ├→ 小模型池(7B, INT4, 高并发)
    ├→ 中模型池(70B, FP8, 中并发)
    └→ 大模型池(API代理, GPT-4o)
→ SSE流式响应 → 客户端

关键优化: - vLLM: PagedAttention + Continuous Batching - 量化: GPTQ/AWQ(INT4) → 4x显存节省 - 路由策略: 简单问题→7B,复杂→70B,极难→API - 自动扩缩: K8s HPA + GPU利用率指标(DCGM) - 成本: Spot实例(可抢占) + 预留实例混合


题目4: 设计一个实时欺诈检测系统

需求:交易延迟<100ms内完成检测,识别率>99%,误报率<0.1%

架构

Text Only
交易事件 → Kafka → Flink(实时特征计算)
→ 特征拼接(Redis实时特征 + 离线用户画像) → 决策层:
    ├→ 规则引擎(黑名单/高风险规则, <5ms) → 直接拦截
    └→ ML模型推理(XGBoost+DNN ensemble) → 风险评分
→ 决策(评分>0.9拦截 / 0.6-0.9人工审核 / <0.6放行)
→ 异步: 结果回写 + 告警通知

离线链路: Spark(历史特征+标签) → 模型训练(每日更新) → 模型注册(MLflow)
→ A/B灰度发布 → 上线

关键设计决策: - 特征工程: 交易金额/频率统计(1h/6h/24h滑动窗口) + 设备指纹 + IP地理位置 + 用户历史行为 - 模型策略: 规则引擎(高置信度快速拦截) + ML模型(复杂模式识别) 两层决策 - 样本不均衡: 正负样本比约1000:1,使用欠采样 + Focal Loss + 时间加权 - 实时性保障: Flink滑动窗口聚合 + Redis预计算特征,确保E2E <100ms - 对抗升级: 定期对抗样本训练,攻击模式漂移监控,黑产IP/设备库动态更新 - 可解释性: SHAP值输出每笔交易的风险归因,支持人工审核和合规要求


题目5: 设计一个图像内容审核系统

需求:日处理图片千万级,审核延迟<500ms,识别精度>99%

架构

Text Only
图片上传 → 图片预处理(缩放/裁剪) → 多模型并行审核:
    ├→ 色情检测(NSFW分类器)
    ├→ 暴力/血腥检测
    ├→ OCR文字检测 → 文本审核(NLP)
    ├→ 人脸检测 → 人物识别(敏感人物库)
    └→ 商标/Logo检测
→ 综合判定(规则引擎+模型融合) → 通过/拦截/人工复审

关键设计决策: - 模型部署: TensorRT加速 + Triton Inference Server多模型管理 - 级联审核: 快速模型先过滤(95%正常内容),复杂模型处理可疑内容 - 反馈闭环: 人工复审结果回流至训练集,持续优化模型


题目6: 设计一个搜索排序系统(电商)

需求:日搜索请求千万级,从查询到展示延迟<300ms

架构

Text Only
用户Query → Query理解(NER/意图识别/Query改写)
→ 多路召回(倒排索引+向量检索+业务规则)
→ 粗排(LightGBM, 千级→百级)
→ 精排(DNN+Cross-Attention, 百级→十级)
→ 重排(多样性/业务调控) → 返回结果

关键设计决策: - 相关性特征: 文本匹配(BM25) + 语义匹配(BERT) + 行为特征(CTR/CVR) - 多目标优化: 点击率 × 转化率 × GMV,结合业务权重 - 实时性: Flink计算实时特征,模型小时级增量更新


题目7: 设计一个对话机器人(客服)

需求:日对话百万级,解决率80%常见问题,复杂问题转人工

架构

Text Only
用户输入 → 意图识别(BERT分类器) → 槽位填充(NER)
→ 对话管理器(DST):
    ├→ FAQ匹配(RAG检索) → 知识库问答
    ├→ 任务型对话(查订、退换货) → 调用业务API
    ├→ 闲聊/开放域 → LLM生成
    └→ 转人工(复杂/敏感/情绪检测)
→ 品控审核 → 返回回复

关键设计决策: - 多轮对话管理: 维护对话状态(Redis) + 上下文窗口 - 安全护栏: 输出过滤敏感信息 + 幻觉检测 - 持续优化: 对话日志分析 → 发现bad case → 优化检索/模型


题目8: 设计一个视频推荐系统

需求:日活千万级,短视频+长视频混合推荐,优化观看时长与次日留存率

架构

Text Only
用户请求 → 用户画像服务(Redis) → 多路召回(并行):
    ├→ 双塔向量召回(视频Embedding, FAISS)
    ├→ ItemCF协同过滤(Swing算法)
    ├→ 热度/新内容探索池(时间衰减)
    ├→ 关注作者最新内容
    └→ 标签兴趣图谱召回
→ 粗排(双塔模型, 万级→千级)
→ 精排(多目标DNN: 完播率/点赞/评论/转发, MMoE结构)
→ 重排(多样性打散DPP + 流量调控 + 广告混排) → 返回推荐列表

内容理解(异步): 视频上传 → 多模态特征提取(CLIP视觉+ASR音频+NLP标题)
→ 内容标签/质量评分 → 写入特征库

关键设计决策: - 多模态特征: 视频帧特征(CLIP) + 音频ASR转文本 + 标题/弹幕NLP + 封面图特征 - 完播率建模: 视频时长归一化处理,长/短视频分开建模(不同的目标函数) - 探索与利用: 新内容分配探索流量池(10%流量),根据早期互动数据决定是否进入精排 - 实时反馈: 用户滑过/点赞/评论 → Flink实时更新Redis中的用户兴趣向量 - 冷启动: 新用户基于设备/地域/时段的群体画像推荐;新视频基于内容特征匹配


题目9: 设计一个广告竞价系统(eCPM排序)

需求:广告竞价QPS万级,延迟<100ms,最大化平台收入与用户体验平衡

架构

Text Only
广告请求(用户画像+页面上下文) → 广告检索(定向匹配):
    ├→ 人群定向(DMP标签匹配)
    ├→ 关键词定向(Query-广告相关性)
    └→ 重定向(Retargeting)
→ 候选广告集(千级) → 预估模型(并行):
    ├→ pCTR模型(Deep&Cross Network)
    ├→ pCVR模型(ESMM, 解决样本选择偏差)
    └→ 质量分模型(广告与上下文相关性)
→ eCPM排序(pCTR × pCVR × Bid × 质量分)
→ 竞价扣费(GSP二价机制) → 预算检查(Pacing) → 广告展示
→ 异步: 曝光/点击/转化日志 → Kafka → 归因 + 模型训练

关键设计决策: - eCPM排序: eCPM = pCTR × pCVR × Bid,多目标模型预估点击率和转化率 - 竞价机制: GSP(Generalized Second Price)二价扣费,激励广告主真实出价 - 预算控制: 平滑消耗算法(Pacing),按时间段均匀分配预算,防止预算过早耗尽 - 特征工程: 广告主特征 + 用户画像 + 上下文特征 + 交叉特征(DeepFM/DCN) - 冷启动: 新广告分配explore流量池(Thompson Sampling),积累一定数据后进入正常竞价 - 频控与体验: 用户级频次控制,同一广告限制每日曝光次数,避免用户疲劳


题目10: 设计一个ML特征平台(Feature Store)

需求:统一管理训练/推理特征,支持离线/近实时/实时三层,在线查询P99<10ms

架构

Text Only
数据源(业务DB / 用户行为日志 / 事件流) → 特征计算:
    ├→ 离线批处理(Spark/dbt → Hive/Delta Lake, T+1)
    ├→ 近实时流(Kafka → Flink → Redis, 分钟级)
    └→ 实时请求(上下文特征: 位置/时间/设备, 毫秒级)

特征注册中心(元数据/血缘/权限/版本) ← SDK注册特征定义

特征服务:
    ├→ 训练: Point-in-time Join → 生成训练数据集(避免数据泄漏)
    └→ 推理: 在线特征查询(Redis/DynamoDB, P99<10ms)

监控: 特征分布漂移(PSI) / 缺失率 / 新鲜度 / 查询延迟

关键设计决策: - Train-Serving一致性: 训练和推理使用同一套特征计算逻辑(DSL定义),避免Training-Serving Skew - 存储分层: 离线(Hive/Delta Lake)、在线(Redis/DynamoDB)、近实时(Flink+Redis) - 特征注册: 元数据管理(名称/类型/owner/数据源/更新频率),支持特征发现和跨团队复用 - 时间旅行: Point-in-time Join避免数据泄漏(data leakage),确保训练时只用事件发生前的特征 - 监控: 特征分布漂移检测(PSI>0.2告警)、缺失率、新鲜度(SLA监控) - 回填(Backfill): 新增特征可回填历史数据,支持离线实验快速迭代


03 核心组件设计

3.1 特征系统(Feature Store)

特征系统架构图

Text Only
离线特征: Spark/dbt → Hive/Delta Lake → 同步Redis/DynamoDB
近实时特征: Kafka → Flink → Redis(分钟级)
实时特征: 请求上下文(位置/时间/设备)

3.2 推理服务

  • 模型格式: PyTorch→ONNX→TensorRT
  • Serving: Triton(多模型/动态批处理) / vLLM(LLM专用)
  • 监控: 延迟P50/P99、GPU利用率、模型漂移

3.3 训练平台

MLOps训练平台架构图

  • 实验追踪: MLflow/W&B
  • 分布式训练: PyTorch FSDP / DeepSpeed
  • 超参优化: Optuna/Ray Tune
  • 自动化: Airflow触发重训练

3.4 监控与评估

  • 数据监控: 特征分布漂移(PSI/KL散度)
  • 模型监控: 预测分布变化、在线指标下降
  • 系统监控: QPS/延迟/错误率(Prometheus+Grafana)

04 模拟面试流程

45分钟模拟(以推荐系统为例)

0-5min: 需求澄清 - "这是哪种平台?内容形态?" → 短视频 - "日活/QPS量级?" → 日活1亿 - "核心优化指标?" → 用户时长+留存

5-8min: 估算 - "1亿DAU × 平均10次请求/天 = 10亿请求/天 ≈ 12K QPS(峰值30K)"

8-13min: 整体架构 - 画出端到端架构图

13-23min: ML方案设计 - 多路召回策略、特征工程、精排模型选择、多目标优化

23-33min: 架构详细设计 - 特征系统、模型Serving、AB测试、实时更新

33-40min: 深入讨论 - 面试官可能追问:冷启动怎么办?数据偏差怎么处理?

40-43min: 评估方案 - 离线(AUC/NDCG) → 在线(CTR/留存AB测试)

43-45min: 总结 - 部署策略、风险点、未来优化方向


最后更新:2026年2月