LLM 安全与 Spring Modulith

共 26 题
#

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 声明式监听其他模块发布的事件,实现模块间事件驱动解耦 ✓ 正确答案
#

14. Modulith 的依赖检查(ModulithVerify)

A 业务逻辑的正确性
B 模型输出质量
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 与任何框架都无法配合