# 1. InnoDB 自适应哈希索引(AHI)在 Spring Boot 4.0 高并发点查场景下是否反而导致缓冲池污染 A AHI 会持久化到磁盘,因此重启后无需重建 B AHI 由 DBA 通过参数显式创建在指定列上,用于替代普通二级索引 C AHI 是 InnoDB 根据索引页访问频率自动构建的内存哈希索引,可降低 B+ 树等值查找的 CPU 开销 ✓ 正确答案 D AHI 只适用于范围扫描,对等值点查没有帮助
# 2. Spring Boot 4.0 中 JPA 派生查询方法命名自动生成索引与 DBA 人工审计的协作流程 A 派生查询仅生成 SQL 与 WHERE 条件,索引仍需通过迁移脚本或 DBA 创建,并需审计 ✓ 正确答案 B 派生查询方法名会自动生成对应索引,无需额外处理 C 派生查询方法不能传多个参数,因此不需要联合索引 D 派生查询方法执行时若索引不存在会自动跳过查询
# 3. Spring Cloud 微服务链路中数据库索引变更的灰度发布策略与慢 SQL 监控触发条件 A 索引变更必须与代码发布同一时刻完成,否则程序必然出错 B 应遵循"先加后删"原则,新增索引用 ONLINE DDL,观察稳定后再删除旧索引 ✓ 正确答案 C 删除索引无需灰度,可直接执行 D 慢 SQL 只需看执行时间,与扫描行数无关
# 4. Spring Data JPA 在 OPTIMISTIC 与 PESSIMISTIC_WRITE 锁模式下生成 SQL 的差异及索引依赖 A 乐观锁在 SELECT 时加 FOR UPDATE 锁 B 悲观锁通过 @Version 字段在 UPDATE 时校验版本号 C 乐观锁在 UPDATE 时附加 version 条件并校验受影响行数,悲观锁用 SELECT FOR UPDATE 预占锁 ✓ 正确答案 D 两种锁模式都不依赖索引
# 5. Spring Boot 4.0 与 MySQL 8.4 集成时,间隙锁(Gap Lock)对并发插入的影响与隔离级别选择 A REPEATABLE READ 下范围查询会产生间隙锁,可能阻塞并发插入;RC 下不使用间隙锁可提升并发 ✓ 正确答案 B 间隙锁只在 READ COMMITTED 下产生 C 间隙锁只锁已存在的记录,不阻止插入 D 隔离级别越高,并发插入性能越好
# 6. MySQL 8.0 引入的 SKIP LOCKED 与 NOWAIT 在 Spring Data JPA 中的语义映射与代码示例 A NOWAIT 会跳过已锁行并返回未锁行 B SKIP LOCKED 在目标行被锁时会立即报错 C JPA 中可通过 lock.timeout hint 值 -2 映射 SKIP LOCKED、0 映射 NOWAIT ✓ 正确答案 D JPA 的 PESSIMISTIC_WRITE 默认生成 FOR UPDATE SKIP LOCKED
# 7. MySQL Group Replication 在多主模式下写冲突检测与 Spring Boot 事务回滚机制的兼容性 A MGR 多主模式无写冲突检测,各节点自由写 B 冲突检测失败时事务自动提交,无需回滚 C MGR 多主模式只支持单主写入 D MGR 在提交阶段通过认证机制检测写冲突,冲突事务被回滚,Spring 通过捕获异常触发回滚,二者兼容 ✓ 正确答案
# 8. 使用 SELECT ... FOR UPDATE SKIP LOCKED 实现任务队列与 Redisson 分布式锁的工程取舍 A 两者都基于 Redis 实现 B SKIP LOCKED 适合所有大规模任务场景 C Redisson 分布式锁与业务数据天然同库强一致 D SKIP LOCKED 依赖数据库行锁且与业务数据同库一致,Redisson 依赖 Redis 更适合高吞吐分布式场景 ✓ 正确答案
# 9. MySQL 8.0 引入的 LOCK TABLES 与事务混合使用时的隐式提交点及 Spring 事务管理器如何感知 A Spring 事务管理器能自动感知并回滚数据库隐式提交的影响 B LOCK TABLES 会触发隐式提交,Spring 事务管理器无法感知,应避免在事务内混用 ✓ 正确答案 C 隐式提交只影响 DML,不影响事务边界 D LOCK TABLES 不会触发隐式提交,可安全用于事务内
# 10. MySQL 连接串与 JDBC 驱动参数(useSSL、characterEncoding、serverTimezone、rewriteBatchedStatements)对 JPA 应用的正确性与性能影响 A rewriteBatchedStatements=true 可将多条批量语句合并为多 VALUES 语句,显著提升批量写入性能 ✓ 正确答案 B rewriteBatchedStatements=true 会降低批量插入性能 C serverTimezone 不配置也不会影响日期时间 D characterEncoding 只影响 SSL 加密,与乱码无关
# 11. 唯一索引与业务唯一约束在并发插入下的间隙锁竞争对 Spring Boot 事务吞吐的影响 A 唯一索引在并发插入时不会产生任何锁竞争 B 并发插入同一唯一键值会触发间隙锁竞争与死锁,可用 INSERT ... ON DUPLICATE KEY UPDATE 等原子操作缓解 ✓ 正确答案 C 唯一索引只影响查询性能,不影响插入 D 提高隔离级别可消除唯一索引的锁竞争
# 12. 在 GraalVM Native Image 下启动时执行 schema 校验与索引一致性检查的可行性 A 原生镜像下无法连接数据库执行任何 SQL B schema 校验可行,但 Hibernate 的反射/动态代理需在构建期通过 reachability metadata 显式配置 ✓ 正确答案 C 原生镜像下 Hibernate 无需任何配置即可正常工作 D schema 校验在原生镜像下会自动关闭,无法开启
# 13. 在 Spring Data JPA 中使用 @Index 注解与 Flyway 自动创建索引的兼容性与事务回滚差异 A Flyway 迁移脚本统一管理索引,hbm2ddl.auto 应设为 none;MySQL 的 DDL 隐式提交导致无法事务回滚 ✓ 正确答案 B @Index 注解在生产环境 hbm2ddl.auto=none 时仍会自动创建索引 C @Index 与 Flyway 可同时开启且互不冲突 D MySQL 的 CREATE INDEX 可在事务内回滚
# 14. 使用 SEQUENCE 引擎与 AUTO_INCREMENT 在 Spring Cloud 微服务分库场景下的全局唯一性取舍 A AUTO_INCREMENT 在分库分表后仍能保证全局唯一 B 分库后各库 AUTO_INCREMENT 互不影响,不会重复 C MySQL 原生支持 SEQUENCE,可直接用于分库 D AUTO_INCREMENT 仅单库唯一,分库分表需改用号段模式、雪花算法等全局唯一 ID 方案 ✓ 正确答案
# 15. MySQL 8.4 中 read_only 与 super_read_only 在 Spring Boot 多租户数据隔离中的权限模型 A read_only=ON 时 SUPER 用户也不能写 B super_read_only=ON 时普通用户依然可写 C 两个参数都只影响查询,不影响写操作 D super_read_only=ON 时连 SUPER 用户也禁止写,用于彻底保护只读节点 ✓ 正确答案
# 16. rewriteBatchedStatements=true 与 Hibernate 批量插入(hibernate.jdbc.batch_size)如何配合提升批量写入吞吐 A 只开启 rewriteBatchedStatements 就足以提升批量性能,无需其他配置 B rewriteBatchedStatements 与 batch_size 互斥,只能二选一 C batch_size 控制攒批阈值,rewriteBatchedStatements 让驱动合并为多 VALUES,两者配合并配合 order_inserts 可最大化吞吐 ✓ 正确答案 D batch_size 越大越好,无上限
# 17. Hibernate MySQL 方言对 java.time、BigDecimal 与 JSON 类型的映射差异与精度陷阱 A BigDecimal 默认无精度限制,可任意存入 B JSON 类型在所有 Hibernate 版本都无需配置即可映射 C LocalDateTime 映射为 TIMESTAMP 时不会有时区问题 D BigDecimal 映射为 DECIMAL,若数据库精度/标度不足会四舍五入或溢出,需用 @Column(precision, scale) 显式声明 ✓ 正确答案
# 18. Spring Boot 默认开启的 spring.jpa.open-in-view(OSIV)如何把 Session 生命周期绑定到请求,视图/序列化阶段访问懒加载属性为何抛 LazyInitializationException,关闭后应选用 @EntityGraph、JOIN FETCH 还是事务内访问 A 关闭 OSIV 后,Session 在事务外仍保持打开,可正常访问懒加载属性 B @EntityGraph 与 JOIN FETCH 作用相同,都能解决所有加载问题 C OSIV 关闭后 LazyInitializationException 不会发生 D OSIV 默认开启,把 Session 绑定到请求;关闭后事务外访问懒加载属性抛 LazyInitializationException,可用 @EntityGraph、JOIN FETCH 或事务内访问解决 ✓ 正确答案
# 19. Spring @Transactional 的 REQUIRES_NEW 与 NESTED 在 MySQL SAVEPOINT 支持下的真实语义差异 A REQUIRES_NEW 是物理独立事务,内层可独立提交;NESTED 基于 SAVEPOINT,内层不独立提交,随外层事务提交 ✓ 正确答案 B NESTED 不支持 SAVEPOINT,内部必回滚整个事务 C NESTED 与 REQUIRES_NEW 语义完全相同 D 外层回滚时 REQUIRES_NEW 内层也会一起回滚