# 1. 会话、缓存、队列和定时任务怎样保存模型、Prompt、工具和数据版本以支持恢复 A 只需保存模型版本 B 记录模型、Prompt、工具、数据版本并随会话/缓存/队列/任务持久化,支持重放与回滚 ✓ 正确答案 C 版本信息无需持久化 D 恢复时无需版本一致性
# 2. 配置中心与 Vault 轮换密钥时,如何避免长连接、缓存客户端和正在执行任务使用失效凭证 A 轮换会中断所有任务 B 轮换后所有连接自动更新 C 长连接无需更新凭证 D 动态刷新重建客户端、双密钥过渡、短租约与任务重试,避免长连接与进行中任务使用失效凭证 ✓ 正确答案
# 3. 为什么“模型直接调用 Repository”是反模式,Tool Callback 与 Repository 之间应保留哪些业务层 A 模型直接访问 Repository 高效且安全 B Repository 可处理权限 C 应保留 Service 业务层,负责鉴权、校验、幂等、事务与审计,Tool 只调用 Service ✓ 正确答案 D 模型无需业务层
# 4. Tool Callback 中的 @ToolParam(description = "...") 如何写得让模型“选对参数”而不被忽视 A 只用简短字段名即可 B 参数描述不影响模型选择 C 明确含义、格式、取值范围、约束、示例与使用时机,避免歧义 ✓ 正确答案 D 描述越长越好,无需结构
# 5. 如何做容量测试以发现虚拟线程、Reactor、HTTP 连接池和 Provider 配额中的真实瓶颈 A 只看错误率 B 只测平均 QPS C 完全不接 Provider D 分层压测并逐层叠加,监控线程、连接池、延迟分布与 Provider 配额定位先到顶的层 ✓ 正确答案
# 6. 依赖版本和 API 状态为什么必须按官方文档与制品仓库共同核查 A 文档一定准确 B 制品仓库一定准确 C 只需信任注释 D 文档给用法语义,制品仓库给真实版本与坐标,需双源校验避免不存在版本或 API ✓ 正确答案
# 7. 怎样演练 Provider 故障、知识库不可用和结构化输出持续失败时的分层降级 A 用故障注入模拟 Provider、知识库、结构化输出故障,逐层验证降级路径与兜底 ✓ 正确答案 B 所有故障统一降级为 500 C 降级无需测试 D 只演练 Provider 故障
# 8. 模型结构化输出映射 Java DTO 后,JSON Schema、反序列化与 Bean Validation 应如何分层 A JSON Schema 约束生成、反序列化容错、Bean Validation 校验业务语义 ✓ 正确答案 B 只需反序列化 C Bean Validation 不能用于 DTO D 三者职责相同
# 9. Tool Callback 调用 Spring Service 时,怎样复用认证、授权、幂等和事务边界而不让模型直接访问 Repository A 更快访问数据 B 复用认证、授权、幂等与事务边界,防止模型直接访问 Repository ✓ 正确答案 C 绕过校验 D 无需事务
# 10. Spring AI 2.0 StructuredOutputValidationAdvisor 如何在 JSON Schema 校验失败时反馈错误并触发模型重试,避免无限循环 A 无限重试直到成功 B 校验失败直接丢弃 C 校验失败时反馈具体错误并限次重试,超限返回明确失败 ✓ 正确答案 D 重试无需上限
# 11. Java DTO 反序列化模型输出时(Jackson、Gson)应如何处理常见的格式问题 A 严格模式,未知字段直接报错 B 容忍未知字段、缺失字段、类型不匹配,并配合反序列化后校验 ✓ 正确答案 C 只支持完美 JSON D 反序列化无需校验
# 12. Java DTO 反序列化模型输出时(Jackson、Gson)应如何容错未知字段、类型不匹配与缺失字段,校验失败如何反馈给模型重试 A 忽略所有校验错误 B 校验失败即丢弃 C 无需重试 D 容错未知字段/类型/缺失,校验失败把具体错误反馈给模型限次重试 ✓ 正确答案
# 13. RAG、记忆、日志和安全 Advisors 的顺序为何重要,异常和短路行为如何测试 A 顺序任意,无需测试 B 短路无需测试 C 安全 Advisor 应最后执行 D 顺序决定上下文与安全边界,用 StepVerifier 验证顺序、短路、降级与异常传播 ✓ 正确答案
# 14. DTO 版本协商、灰度切换与回滚的工程实践是怎样的,如何验证向下兼容 A 引入版本字段、灰度/双写对比、保留旧映射回滚,并用契约测试验证向下兼容 ✓ 正确答案 B 直接改 DTO 无需兼容 C 新旧无法并存 D 无需验证兼容
# 15. Micrometer Observation API 与 OpenTelemetry 在 Spring AI 2.0 中应如何同时启用而不重复埋点 A 分别手动埋两次点 B 用 Observation 作为唯一埋点源,通过 OTel Bridge 自动生成 span ✓ 正确答案 C 二者互斥 D 只能选一个
# 16. Spring AI 流式响应如何通过 Observation API 记录 TTFT、TPOT、Token 等低基数指标 A 用 Observation 低基数标签记录 TTFT/TPOT/Token,并与 span 关联 ✓ 正确答案 B 指标只能高基数 C 无需记录 D 用高基数标签(用户 ID)记录
# 17. Java 应用的依赖版本(Spring Boot、Spring AI、LangChain4j)应如何锁定与升级,避免 Provider 兼容性回归 A 用 BOM 锁定版本,升级走评估→契约测试→灰度→回滚流程,重点防 Provider 兼容回归 ✓ 正确答案 B 随意升级即可 C 版本无需锁定 D 升级无需测试
# 18. 本地容器化的模型(Ollama、LocalAI)在 Java 测试中如何快速启动并断言输出 A 用大模型保证准确 B 用 Testcontainers 启动小模型,固定采样参数,用宽松断言并配合 MockLLM 做确定性测试 ✓ 正确答案 C 断言必须精确相等 D 容器每次重建
# 19. Java AI 应用的发布门禁应包含哪些硬指标(Prompt 校验、Schema 通过、安全分类) A 包含 Prompt 校验、Schema 通过率、安全分类正确率、性能阈值与金标准回归 ✓ 正确答案 B 安全分类无需纳入 C 门禁无需自动执行 D 只需编译通过
# 20. Java 应用的混沌测试应如何覆盖模型返回错误 JSON、向量库 504、工具超时三类典型故障 A 注入错误 JSON、向量库 504、工具超时,验证容错、降级、超时与恢复 ✓ 正确答案 B 只测模型错误 C 混沌测试无需验证降级 D 故障后无需恢复
# 21. Spring AI 2.0 升级破坏既有 API 时,应如何保留双版本共存并按业务粒度路由回退 A 新旧版本 Adapter 共存,按业务粒度路由与回退,影子对比验证后再放量 ✓ 正确答案 B 无法回退 C 一次性切换并删旧版本 D 只保留新版
# 22. Java 应用遥测数据应如何脱敏(Prompt、Token、用户输入) A 完整记录 Prompt 便于排查 B 无需脱敏指标 C 在埋点前对 Prompt/Token/用户输入做字段级脱敏,记录低敏感信息并审计 ✓ 正确答案 D 只脱敏日志不脱敏 trace
# 23. Java 应用的发布流程应如何集成 Prompt 单元测试、金标准集回归与红队对抗三类门禁 A 按 Prompt 单元测试、金标准回归、红队对抗分层集成,任一失败阻断发布 ✓ 正确答案 B 只跑金标准回归 C 三类门禁可任选其一 D 门禁无需自动化
# 24. RAG 检索如何使用数据库 RLS、租户过滤和用户权限,避免 Advisor 只拼接未授权上下文 A 检索后简单过滤 B 检索后过滤最安全 C 无需权限过滤 D 检索期用 RLS/租户/ACL 过滤,只让已授权文档进入检索结果 ✓ 正确答案
# 25. RAG 检索结果注入 Prompt 时,如何保证租户隔离而非依赖 Advisor 后的二次过滤 A 检索后过滤 B 租户隔离无需保证 C 检索期强制租户过滤(元数据/RLS),Advisor 只组装已隔离结果 ✓ 正确答案 D 依赖 Advisor 二次过滤即可
# 26. 多个 Advisor 串联时(LoggingAdvisor → RAGAdvisor → SafetyAdvisor → ChatMemoryAdvisor)的执行顺序与上下文传递如何设计,异常时如何降级? A 异常无需降级 B 顺序任意 C 安全 Advisor 可降级 D 按记忆→RAG→安全→模型编排,上下文链中传递,可降级(RAG/记忆)与不可降级(安全)区分 ✓ 正确答案
# 27. Spring AI MessageChatMemoryAdvisor 使用的会话存储(InMemory、JdbcChatMemory、RedisChatMemory)如何选型与扩展 A 一律用 InMemory B 按持久化/并发/分布式需求选 InMemory、Jdbc、Redis,多实例用共享存储并需扩展 TTL/容量策略 ✓ 正确答案 C Redis 无法共享 D 存储无需扩展
# 28. spring-ai-session 与 spring-ai-agent-utils 属于 community 而非 Spring AI 2.0 core,这对依赖治理意味着什么? A 与 core 同等支持 B community 永不更新 C 无需关注版本 D 需单独锁定版本、验证兼容性、评估维护活跃度与许可证 ✓ 正确答案
# 29. Java DTO 上的 Jakarta Validation(@NotNull、@Size)与 JSON Schema 校验应如何分工 A 完全重叠 B JSON Schema 校验模型输出结构,Jakarta Validation 校验业务语义 ✓ 正确答案 C 只需 Jakarta Validation D 只需 JSON Schema
# 30. Spring AI 2.0 自定义 Advisor 时,call() 与 observe() 方法分别适合什么场景 A 两者完全相同 B observe() 做业务增强 C 只需实现 call() D call() 做业务/横切增强,observe() 做模型调用观测与指标 ✓ 正确答案
# 31. Java 端的 RAG QuestionAnswerAdvisor 与 LangChain4j 的 RetrievalAugmentor 在实现复杂度上各自优势 A 完全等价 B QuestionAnswerAdvisor 功能最强 C QuestionAnswerAdvisor 简单集成,RetrievalAugmentor 功能强但复杂,按 RAG 复杂度选型 ✓ 正确答案 D RetrievalAugmentor 无法配置
# 32. Spring AI 2.0 中 ChatClient 流式响应的取消、超时与异常如何在多 Advisor 链路下被一致传播与观测 A 沿响应式链一致传播,doFinally 统一结束观测并记录取消/超时/异常 ✓ 正确答案 B 各 Advisor 各自处理 C 取消后继续处理 D 观测无需统一
# 33. 如何用 WireMock/MockLLM、本地模型容器和真实沙箱分别测试 Provider 适配器 A 只用 Mock B 用 MockLLM 做单元/契约、本地容器做集成、真实沙箱做验收,分层覆盖 ✓ 正确答案 C 只用真实沙箱 D 测试无需分层
# 34. 如何用 StepVerifier 或 WebTestClient 验证流事件顺序、半包、错误、取消和资源释放 A 只用 expectNext B 无需验证资源释放 C 用 StepVerifier 验证顺序、半包、错误、取消与资源释放,用 WebTestClient 验证 HTTP/SSE 层 ✓ 正确答案 D 无法测试取消
# 35. 怎样用 Toxiproxy 或 Chaos 工具注入延迟、断连、429 和半开连接,验证退避与断路器 A 用 Toxiproxy 注入延迟/断连/429/半开,验证指数退避、熔断打开/半开/恢复 ✓ 正确答案 B 只注入断连 C 无法注入 429 D 断路器无需验证
# 36. 模型、Prompt 或 Advisor 变更如何通过 Argo Rollouts/Flagger 灰度,并以质量与可靠性指标回滚 A 全量切换 B 无法自动回滚 C 小流量灰度,用质量与可靠性指标分析,超出阈值自动回滚 ✓ 正确答案 D 只需看成功率
# 37. WireMock / MockLLM 模拟 Provider 响应时,如何精确控制流事件顺序、错误位置与延迟 A 只能返回固定响应 B 配置响应体顺序、错误位置与延迟,复现半包/错位/中途错误/超时边界 ✓ 正确答案 C 无法控制延迟 D 错误位置无法控制
# 38. Argo Rollouts / Flagger 在 AI 应用发布中应基于哪些指标(成功率、P95 延迟、Token 成本) A 成功率、P95 延迟、Token 成本、错误率、金标准/Schema 通过率综合判断 ✓ 正确答案 B 只按成功率 C 只看 Token 成本 D 无需基线对比
# 39. Java 应用的 Spring Boot Actuator 应暴露哪些 AI 健康指标(Provider 连通性、向量库状态、模型版本) A Provider 连通性、向量库状态、模型版本、QPS/延迟/Token/错误率等自定义指标 ✓ 正确答案 B 健康检查需真实调用模型 C 只暴露 JVM D 无需区分存活与就绪
# 40. Spring AI 2.0 测试模块(spring-ai-test) A 提供 Mock 模型与测试断言,配合 Mockito 做 Advisor/RAG 依赖隔离与桩替换 ✓ 正确答案 B 只能测 Prompt C 无法控制响应 D 只能测真实模型
# 41. WireMock 与 MockLLM、本地模型容器、真实沙箱在测试金字塔中各承担什么角色,应如何取舍 A 全部用 Mock B 全部用真实沙箱 C 按金字塔分层:Mock 覆盖逻辑、容器覆盖协议、沙箱验证真实,平衡成本与真实性 ✓ 正确答案 D 无需分层
# 42. 灰度发布中 Prompt、Embedding、Advisor 变更应如何与代码版本绑定并支持秒级回滚 A 重新发布代码 B 无法回滚 C 只需重启服务 D 版本化配置 + 配置中心切换路由,新旧版本并存,回滚即切配置 ✓ 正确答案
# 43. Java 测试应如何使用 spring-ai-test 加 Mockito 做 Advisor 与 RAG 的依赖隔离与桩替换 A 用真实 Provider 与向量库 B 只测真实集成 C 用 spring-ai-test 的 Mock 模型与 Mockito 桩替换检索/存储依赖,隔离测试逻辑 ✓ 正确答案 D 无法隔离
# 44. Spring Boot Actuator 健康检查与 Provider 真实连通性检查应如何分层,以避免误报与漏报 A 只做存活检查 B 每次真实调用模型检查 C 存活/就绪分层,用轻量连通性检查 + 缓存 + 超时,避免瞬时波动误报与不检查漏报 ✓ 正确答案 D 健康检查无需分层