第25章 · AI 系统实战面试指南 · 阶段测试题¶
题型: 单选 × 8 / 多选 × 4 / 简答 × 5 / 算法 × 2 = 共 19 题 建议用时: 60 分钟
一 · 单选题 (8 题)¶
1.1 STAR 法 4 个字母含义? - A. Search / Test / Action / Result - B. Situation / Task / Action / Result - C. Skill / Tech / Algorithm / Result - D. System / Test / Architecture / Result
1.2 推荐系统召回 / 精排 / 重排, 数据量变化典型是? - A. 1000 / 100 / 10 - B. 100 万 / 1000 / 10 - C. 100 / 10 / 1 - D. 10 万 / 1000 / 100
1.3 RAG 三大组件是? - A. Encoder / Decoder / Loss - B. Retriever / Generator / Index - C. Loader / Embedder / Re-ranker - D. Tokenizer / Embedding / Output
1.4 Speculative Decoding 的核心? - A. 大模型先草拟 - B. 小模型草拟 + 大模型并行验证 - C. 多模型投票 - D. KV Cache 优化
1.5 LRU Cache 实现? - A. 数组 - B. 链表 - C. 哈希 + 双向链表 - D. 红黑树
1.6 Bloom Filter 的缺点? - A. 内存大 - B. 慢 - C. 假阳率 + 无删除 - D. 只能存数字
1.7 Top-K Frequent 最优算法? - A. 排序 O(n log n) - B. 堆 O(n log k) - C. 哈希 O(n) - D. 二分 O(log n)
1.8 反欺诈场景, 漏报 vs 误杀优先? - A. 误杀优先 (用户体验) - B. 漏报优先 (资损更大) - C. 一样 - D. 取决于用户
二 · 多选题 (4 题)¶
2.1 8 步系统设计框架步骤? (多选) - A. 需求澄清 - B. 指标定义 - C. 数据流/特征 - D. 模型/部署/监控
2.2 Chunking 3 大策略? (多选) - A. 固定大小 - B. 按段 - C. 语义分块 - D. 随机
2.3 LLM 系统优化技术? (多选) - A. KV Cache - B. Speculative Decoding - C. Prompt Caching - D. 量化 (Quantization)
2.4 Offer 谈判可以谈什么? (多选) - A. Base 工资 - B. 签字费 - C. RSUs/期权 - D. 假期 / 远程
三 · 简答题 (5 题)¶
3.1 用 8 步框架设计"抖音推荐系统", 重点说数据流和模型选择。
3.2 用 8 步框架设计"企业 RAG 知识库", 重点说 Chunking 和 Hybrid Search。
3.3 用 8 步框架设计"LLM 推理服务", 重点说延迟/吞吐/成本三角。
3.4 离线-在线不一致的 3 大原因和解决方案。
3.5 Offer 谈判的 3 大关键 (策略 + 注意事项)。
四 · 算法题 (2 题)¶
4.1 Top-K Frequent Elements (LeetCode 347)
4.2 LRU Cache (LeetCode 146)
class LRUCache:
def __init__(self, capacity):
pass
def get(self, key):
pass
def put(self, key, value):
pass
五 · 参考答案¶
单选¶
1.1 B 1.2 B 1.3 B 1.4 B 1.5 C 1.6 C 1.7 B 1.8 B
多选¶
2.1 ABCD 2.2 ABC 2.3 ABCD 2.4 ABCD
简答¶
3.1 抖音推荐: 1. 需求: 100 万视频库, 推 10 个给用户 2. 指标: CTR / 完播率 / 留存 3. 离线: AUC; 在线: CTR + 长期留存 4. 一致性: 特征对齐 + 实时特征 5. 数据流: 用户行为日志 → Kafka → Flink → 特征仓库 6. 特征: 用户 (历史/兴趣) + 视频 (类目/标签) + 上下文 (时间/位置) 7. 模型: 召回 (双塔/协同过滤) → 精排 (DLRM/DIN) → 重排 (多样性/规则) 8. 监控: 实时 CTR + 特征分布 + A/B 测试
3.2 企业 RAG: 1. 需求: 100 GB 文档库, 答员工问题 2. 指标: Faithfulness / Answer Relevance / Citation 准确 3. 离线: RAGAS 评测集 4. 一致性: 文档版本 + 权限 5. 数据流: PDF/Confluence → Loader → Splitter (512 token 重叠 50) → Embedder (BGE) → Vector DB (Milvus) 6. 特征: BM25 + 向量 混合检索 7. 模型: Claude 4.5 + System Prompt (引用源) + Re-ranker 8. 监控: 引用率 + 用户反馈 + 文档更新
3.3 LLM 推理服务: 1. 需求: 100 QPS, p99 < 2s 2. 指标: 延迟 / 吞吐 / 成本 (QPS/$) 3. 离线: throughput benchmark 4. 一致性: 训练-推理差异 5. 数据流: HTTP → Load Balancer → API Gateway → Inference Cluster 6. 特征: 文本 + prompt cache 7. 模型: vLLM / SGLang / TensorRT-LLM, PagedAttention, KV Cache, 连续批处理 8. 监控: 延迟 / GPU 利用率 / 队列长度
3.4 3 大原因: 1. 特征不一致: 离线用历史快照, 在线用实时特征 → 特征平台 (Feast) 统一 2. 分布漂移: 用户/数据变化 → PSI 监控 + 周期性重训 3. 反馈延迟: 用户行为延迟 → 实时反馈 + 离线-在线一致性检查
3.5 1. 手里有竞争: 拿 1-2 个其他 offer 当谈判筹码 2. 用数据说话: 引用市场 (levels.fyi / 猎聘) + 个人贡献 (涨收 X%) 3. 不只谈 base: 谈签字费 + RSUs + 假期, 总包可能比 base 涨 30%
算法¶
4.1 参考答案:
from collections import Counter
import heapq
def topKFrequent(nums, k):
count = Counter(nums)
# 最小堆, 保留 top-k
return heapq.nlargest(k, count.keys(), key=count.get)
4.2 参考答案:
from collections import OrderedDict
class LRUCache(OrderedDict):
def __init__(self, capacity):
self.capacity = capacity
def get(self, key):
if key not in self:
return -1
self.move_to_end(key)
return self[key]
def put(self, key, value):
if key in self:
self.move_to_end(key)
self[key] = value
if len(self) > self.capacity:
self.popitem(last=False)