🟢 入门题
E1. GET /health 为什么要独立存在?
参考答案
健康检查用于负载均衡、容器编排与监控系统判断服务是否可用。它不应依赖外部 LLM,否则模型供应商抖动会让基础存活探针误判。
E2. Pydantic schema 的价值是什么?
参考答案
它把 API 合同显式化:输入校验、输出约束、OpenAPI 文档和测试样例都能复用同一份类型定义。
E3. HTTPException 的 detail 里至少放什么?
参考答案
建议放稳定错误码、可读信息、trace_id。不要把敏感上下文和模型原始错误完整返回给用户。
E4. StreamingResponse 适合什么场景?
参考答案
适合聊天、长文本生成、Agent 多步骤进度等需要降低首字等待时间的场景。后台批处理或严格 JSON 输出不一定需要流式。
🟡 进阶题
A1. 设计一个 /tasks 异步任务接口
要求包含提交、查询状态、失败重试三个接口,并说明状态表字段。
参考答案要点
POST /tasks返回task_idGET /tasks/{task_id}返回status/progress/result/errorPOST /tasks/{task_id}/retry复用幂等键- 表字段:
task_id/user_id/status/progress/error_code/trace_id/created_at/updated_at
A2. 如何做接口幂等?
参考答案要点
用 user_id + request_hash 作为幂等键;先查幂等记录,已有成功结果则直接返回;处理中则返回 task 状态;失败按策略允许重试。
A3. Redis 挂了,限流和任务状态怎么办?
参考答案要点
限流可临时降级为本机内存或更保守的全局限额;任务状态真相应落 DB,Redis 只做加速和锁,不做唯一事实来源。
🔴 深度题
D1. 画出 FastAPI + RAG + Agent 的请求链路
要求包含 HTTP 入口、鉴权、trace_id、检索、模型调用、流式返回、错误映射。
D2. 你如何证明接口稳定?
参考方向:单元测试、集成测试、压测 P95、错误率、超时率、日志抽样、告警阈值。