# 1. Modulith 与 Event Sourcing 的集成 A 事件发布与业务事务完全无关 B 将事件持久化到发布表并通过异步重放,保证不丢失 ✓ 正确答案 C 完全依赖模型自动生成事件 D 事件只保存在内存中,进程重启即丢失
# 2. Modulith 与 Saga 模式的边界 A Modulith 就是分布式 Saga 的一种实现 B 模块内用 Modulith 本地事务,跨服务的分布式长流程用 Saga 编排 ✓ 正确答案 C Saga 用于单体内模块间的事务 D 二者完全不相关,无法配合使用
# 3. Modulith 单元(@UnitOfWork)与跨模块事务 A 让事件发布与业务变更处于同一事务,提交后再异步投递 ✓ 正确答案 B 事件发布完全独立,无一致性要求 C 每次事件都同步阻塞业务提交 D 事件在业务提交前就立即投递,不管成功与否
# 4. Modulith 的 JPA 持久化与事务边界 A 禁止任何模块使用 JPA B 所有模块共享同一套全部实体 C 跨模块直接依赖彼此的内部实体 D 每个模块拥有自己的实体与 Repository,跨模块通过公开 API 或事件协作 ✓ 正确答案
# 5. Modulith 的依赖注入(Autowired 与模块边界) A 依赖检查会禁用所有注入 B 可以随意注入对方任何内部类 C 只依赖对方公开 API 类型,不注入内部实现,并由依赖检查保障 ✓ 正确答案 D 完全禁止跨模块注入,只能复制代码
# 6. Spring Modulith 的事件持久化(JdbcEventPublicationRegistry)与事务一致性的协作 A 事件只暂存内存,重启即丢失 B 事件与业务在同一事务持久化,提交后异步投递并支持重试 ✓ 正确答案 C 事件持久化与业务事务完全无关 D 事件投递永远不重试
# 7. token 用量如何计量并按租户/业务做成本归因,配额限流与预算告警应落在哪一层实现 A 消费者端手工限流 B 数据库写入层 C 模型内部推理环节 D 调用入口或网关层,进入模型前按租户配额拦截超限请求 ✓ 正确答案
# 8. 模型不可用或超时的降级策略如何设计,备用模型切换、语义缓存应答与熔断如何协同保障可用性 A 对语义相似的重复请求直接返回缓存,减少模型调用 ✓ 正确答案 B 扩大模型的上下文窗口 C 替代所有模型请求,不用主模型 D 缓存模型权重,加快推理
# 9. Modulith 与 Micrometer Tracing 的模块边界 A 为跨模块调用生成 trace,并打上模块标签,便于按模块定位瓶颈与故障 ✓ 正确答案 B trace 会泄露模块内部实现细节 C 追踪只能用于 HTTP 层,与模块无关 D 模块化单体无需任何追踪
# 10. Modulith 与 Spring Cloud Function 的边界 A Modulith 负责函数部署 B 二者功能完全相同,可互换 C Modulith 组织模块边界,Cloud Function 统一函数化暴露业务能力 ✓ 正确答案 D Cloud Function 负责模块依赖检查
# 11. Modulith 的 Module Testing 与 Verifies A 必须启动所有模块才能测试 B 与普通单元测试完全相同,无差异 C 无法验证模块内任何行为 D 只加载单个模块上下文,更快更聚焦地验证模块行为 ✓ 正确答案
# 12. Modulith 的 documentation.md 自动生成 A 只生成注释,不反映模块关系 B 替代所有手工代码 C 从代码自动提取模块结构与依赖,保证文档与实现一致 ✓ 正确答案 D 文档必须每次手工编写
# 13. Modulith 的事件发布(@ApplicationModuleListener) A 直接调用其他模块的方法 B 生成 API 文档 C 定义模块的依赖关系 D 声明式监听其他模块发布的事件,实现模块间事件驱动解耦 ✓ 正确答案
# 15. Modulith 的测试切片(@TestEnvironment) A 关闭所有测试支持 B 只加载目标模块及必要依赖,减少启动范围,提升测试速度与隔离性 ✓ 正确答案 C 与模块化测试无关 D 强制启动整个应用上下文
# 16. Modulith 项目的 ApplicationModule 与 package by feature A 按业务能力而非技术层次组织包,同能力类聚在一个模块 ✓ 正确答案 B 所有类都放在一个包中 C 把所有 controller 放一层、service 放另一层 D 按数据库表组织类
# 17. Prompt Injection(提示注入)攻击的原理是什么,输入过滤、系统提示隔离与工具调用权限收敛如何分层防御 A 最小化工具暴露并加鉴权,限制注入后能造成的危害面 ✓ 正确答案 B 扩大模型可调用的工具范围 C 与工具调用完全无关 D 让模型识别所有恶意输入
# 18. RAG 场景下检索注入的外部内容如何成为间接提示注入入口,来源可信度校验与内容隔离如何处理 A 忽略检索内容,不做任何处理 B 对来源做可信度分级,并把检索内容标记为不可信数据而非指令 ✓ 正确答案 C 让检索内容直接获得工具调用权限 D 完全信任所有检索内容并原样执行
# 19. Spring Modulith 与 Gradle/Maven 多模块构建的工程取舍(构建工具差异对模块边界与依赖管理的影响) A 二者必须完全一一对应 B 构建工具无法影响任何模块边界 C 逻辑模块只存在于文档中,与代码无关 D 逻辑模块按业务能力划分,构建模块按编译发布粒度划分,二者不必一一对应 ✓ 正确答案
# 20. Spring Modulith 的 @Modulith/@ApplicationModule 注解 A 声明一个数据库事务 B 声明某个类是一个领域实体 C 声明这是一个模块化应用,启用事件发布、依赖检查等模块化能力 ✓ 正确答案 D 声明一个 REST 控制器
# 21. 如何在 Spring AI 中通过 Advisor 链统一实现审计日志、内容安全审查与合规留痕 A 只记录成功请求,忽略其他 B 在每个业务方法里手工硬编码 C 完全依赖模型自动记录 D 通过自定义 Advisor 挂入 Advisor 链,在请求前后统一执行审计与合规逻辑 ✓ 正确答案
# 22. 当 LLM 可调用工具(function calling)时,越权与数据泄漏风险如何放大,最小权限与人工确认机制如何设计 A 完全禁止任何工具 B 只记录日志而不做任何控制 C 让模型无条件自动执行 D 加入人工确认机制,模型只生成意图,执行需人工审批 ✓ 正确答案
# 23. 模型输出幻觉(hallucination)与合规风险如何通过 grounding、引用溯源与人工审核流程加以约束 A 完全依赖模型记忆 B 关闭所有引用能力 C 通过 grounding 把回答约束到检索到的可靠资料上 ✓ 正确答案 D 让模型自由发挥,不限定依据
# 24. 结构化输出(Structured Output)被诱导越狱或返回非法结构时,校验 Advisor 与重试兜底的边界在哪里 A 静默接受非法输出 B 无限重试直到成功为止 C 停止重试,返回安全兜底值或告警,避免无限循环与风险扩散 ✓ 正确答案 D 忽略校验结果直接使用
# 25. 请求/响应链路上的敏感信息(PII)如何在送入模型前脱敏,并在日志与审计中保留可追溯性 A 脱敏后不记录任何标识 B 建立原始值与脱敏值的映射并安全存储,日志记录脱敏态与引用标识 ✓ 正确答案 C 彻底丢弃原始值,无法追溯 D 只在展示层脱敏,模型仍见明文
# 26. Modulith 与 Micronaut 的协同 A Micronaut 就是 Spring 的一部分 B Spring Modulith 深度依赖 Spring 生态,与独立框架 Micronaut 原生集成受限 ✓ 正确答案 C 二者可以零成本完全互换 D Spring Modulith 与任何框架都无法配合