AI应用开发面试题精讲(三):工程化与性能优化高频15问
AI应用开发面试题精讲三工程化与性能优化高频15问文章目录AI应用开发面试题精讲三工程化与性能优化高频15问前言一、Token与成本优化1. Token成本怎么预估怎么优化2. 语义缓存是什么怎么实现3. 模型路由怎么做有什么策略二、可靠性设计4. 大模型调用怎么做超时和重试5. 限流和熔断怎么做6. 大模型输出校验怎么做格式不对怎么处理三、流式输出与用户体验7. SSE流式输出的实现原理8. 流式输出和结构化输出怎么兼容四、高并发与监控9. AI应用的并发控制怎么做10. AI应用需要监控哪些指标和传统应用有什么区别11. Prompt版本管理怎么做五、上线与运维12. 大模型应用怎么做灰度发布13. AI应用的上线前检查清单有哪些14. 线上问题怎么排查大模型输出不稳定怎么定位15. 从Demo到上线最大的Gap是什么总结前言AI应用从Demo到生产工程化是最大的门槛。面试官最爱问的不是你会不会用大模型而是你的系统怎么扛住1000 QPS“Token成本怎么控制”“大模型超时了怎么办”。这篇整理了工程化与性能优化最高频的15道面试题。一、Token与成本优化1. Token成本怎么预估怎么优化参考答案成本构成输入Token 输出Token输出通常比输入贵2-3倍。预估方法统计每个请求的平均输入/输出Token数乘以调用量和单价留20%余量重试、改写等额外消耗优化手段Prompt压缩去掉冗余描述精简系统Prompt上下文裁剪只保留和当前问题相关的历史对话缓存语义缓存命中直接返回不走大模型模型路由简单问题用小模型复杂问题才用大模型批量请求多个请求合并为一个batch降低单条成本面试加分点提到成本监控比成本优化更重要——先建立Token消耗的监控和告警才知道该优化哪里。2. 语义缓存是什么怎么实现参考答案语义缓存是新query和缓存中某个query语义相似时直接返回缓存结果不调用大模型。实现方式把缓存query的Embedding存入向量库新query来了先在缓存向量库中检索如果相似度超过阈值如0.95直接返回缓存答案如果没有命中走正常流程结果存入缓存注意事项缓存要有TTL过期的要清理相似度阈值要调——太高命中率低太低可能返回错误答案对时效性敏感的query不适合缓存如今天天气怎么样缓存要有容量上限用LRU淘汰3. 模型路由怎么做有什么策略参考答案模型路由是根据请求特征选择不同级别的模型处理。路由策略按复杂度路由简单FAQ用小模型复杂推理用大模型按场景路由客服对话用小模型技术分析用大模型按用户路由免费用户用小模型付费用户用大模型按延迟要求路由实时场景用快模型离线任务用慢模型实现方式用一个轻量分类器甚至规则判断query复杂度复杂度低→小模型复杂度高→大模型大模型超时或失败→降级到小模型面试加分点提到路由本身就是A/B测试——路由策略要持续监控各路径的效果和成本动态调整。二、可靠性设计4. 大模型调用怎么做超时和重试参考答案超时设置连接超时5-10秒连不上就快速失败读取超时30-120秒根据最大输出长度估算流式输出首Token超时10秒整体超时按输出长度估算重试策略指数退避第1次等1秒第2次等2秒第3次等4秒最大重试3次超过就降级只对可重试错误重试网络超时、5xx不对4xx重试重试时要换请求ID避免服务端去重导致不重试面试加分点提到重试要有抖动jitter——多个请求同时重试会造成惊群效应加随机抖动可以错开。5. 限流和熔断怎么做参考答案限流令牌桶/漏桶算法控制请求速率按用户/API Key分别限流区分优先级付费用户配额高免费用户配额低熔断错误率超过阈值如50%→ 熔断直接返回降级响应熔断后每隔一段时间放一个请求试探半开状态成功则恢复失败则继续熔断降级策略大模型不可用→返回缓存的相似答案向量库不可用→降级为关键词检索重排器超时→跳过重排直接用向量检索结果原则保证核心功能可用非核心功能可以降级6. 大模型输出校验怎么做格式不对怎么处理参考答案校验层次格式校验JSON是否合法、必填字段有没有、类型对不对内容校验内容是否在允许范围内、有没有敏感信息、有没有幻觉业务校验数值是否合理、逻辑是否自洽、引用是否存在格式不对的处理修复重试把错误信息附加到Prompt末尾让模型修正多次采样生成3次取第一个通过校验的降级解析尝试正则提取关键信息人工兜底高价值场景转人工处理实践建议修复重试最多2次超过就降级。不要无限重试——如果模型连续输出错误格式可能是Prompt有问题。三、流式输出与用户体验7. SSE流式输出的实现原理参考答案SSEServer-Sent Events是单向长连接服务端持续推送数据。流程前端发起SSE连接后端调用大模型流式API每收到一个Token就推送给前端前端逐字渲染大模型输出结束后端关闭SSE连接关键实现点后端要做心跳保活防止连接超时断开前端要处理中断用户主动停止错误处理连接断开后的重连逻辑前端渲染用requestAnimationFrame逐字渲染不要每收到一个Token就更新DOM8. 流式输出和结构化输出怎么兼容参考答案这是个真实痛点——结构化输出如JSON需要完整内容才能解析但流式输出是逐字返回的。解决方案流式返回文本最后返回完整JSON流式阶段展示思考过程最终给出结构化结果增量JSON解析用流式JSON解析器部分JSON也能提取已完成的字段分两步调用第一次流式生成内容第二次格式化为JSON约定分隔符流式输出中用特殊标记区分思考过程和最终结果实践建议方案1最稳妥——用户看到打字机效果思考过程最后收到一个干净的JSON。体验和工程都兼顾。四、高并发与监控9. AI应用的并发控制怎么做参考答案并发挑战大模型API有并发限制如同时最多10个请求GPU推理资源有限长请求会占用连接很久控制手段请求队列所有请求进队列消费者按限速消费连接池复用HTTP连接减少建连开销信号量限制同时调用大模型的请求数优先级队列VIP用户优先离线任务后置背压队列满了直接拒绝返回系统繁忙面试加分点提到排队不是坏事——合理排队可以提升整体吞吐量避免雪崩。10. AI应用需要监控哪些指标和传统应用有什么区别参考答案传统应用监控CPU、内存、QPS、响应时间、错误率AI应用额外监控Token消耗每请求/每用户/每API的Token用量模型调用调用次数、延迟分布P50/P95/P99、错误率质量指标输出格式合规率、拒答率、用户反馈率成本指标每请求成本、每用户成本、日/月总成本缓存指标命中率、缓存大小安全指标Prompt注入拦截次数、敏感内容过滤次数关键告警Token消耗突增可能被滥用或Prompt泄露错误率升高模型服务不稳定响应延迟突增排队过长或模型变慢缓存命中率骤降可能知识库更新了11. Prompt版本管理怎么做参考答案问题Prompt散落在代码里改一个字可能影响所有效果但没有版本管理就无法回滚。管理方案Prompt外置Prompt模板存在数据库/配置中心不在代码里硬编码版本管理每次修改存新版本标注修改原因和预期效果灰度发布新Prompt先放5%流量对比效果A/B测试新旧Prompt同时跑用评估集对比回滚机制出问题秒级回滚到上一版本实践建议Prompt即代码——用Git管理Prompt模板Code Review后再上线。五、上线与运维12. 大模型应用怎么做灰度发布参考答案灰度策略按用户灰度先1%用户观察指标逐步扩大到100%按场景灰度先在低风险场景上线再扩展到核心场景按流量灰度随机5%流量走新版本监控指标功能指标成功率、格式合规率质量指标用户满意度、人工抽查准确率性能指标延迟、超时率成本指标Token消耗对比回滚条件错误率超过阈值用户投诉率升高质量评分下降回滚要快——灰度期间旧版本不删随时可切回13. AI应用的上线前检查清单有哪些参考答案功能检查核心流程跑通边界case有处理输出格式校验覆盖率100%流式输出正常中断可恢复性能检查P95延迟达标并发压测通过缓存命中率达标安全检查Prompt注入防御已部署敏感内容过滤已开启用户输入有长度限制工具调用有权限控制运维检查监控告警已配置降级兜底已实现日志链路追踪已接入成本预算已设置文档检查系统架构图已更新应急预案已编写oncall排班已安排14. 线上问题怎么排查大模型输出不稳定怎么定位参考答案排查步骤复现问题拿到用户原始query、时间、userId查看链路日志从请求入口到模型调用的全链路trace检查Prompt是否被修改上下文是否有问题检查检索召回的文档对不对排序有没有问题检查模型同一Prompt同一输入多次调用结果是否一致检查配置Temperature、Top-P等参数是否被改动常见原因Temperature过高导致输出不稳定上下文被截断导致信息丢失检索结果变化知识库更新导致答案变化模型服务端更新导致行为变化15. 从Demo到上线最大的Gap是什么参考答案Demo和生产的10个差距维度Demo生产输入固定测试case用户各种奇葩输入错误处理出错了重来出错了要兜底延迟几秒能接受P95要达标成本不考虑要控制并发单请求高并发监控没有必须安全不考虑必须一致性不在乎同一问题不能差异太大可维护性一个脚本团队协作文档不需要必须面试金句Demo证明能做生产证明能稳定做。面试官看重的是后者。总结工程化面试的核心是你踩过坑吗。每道题不要只答概念要能说出我们遇到过什么问题、怎么发现的、怎么解决的。有真实踩坑经验的候选人和只会背概念的面试官一问就区分出来了。