# 1. Flyway 与 Spring Boot 的集成(spring-boot-starter-jdbc + flyway-core) A 迁移脚本默认在 db/schema B 需手动调用迁移 C 引入 flyway-core 后 Spring Boot 在启动时自动执行 db/migration 下的迁移脚本 ✓ 正确答案 D Flyway 与 Spring Boot 无关
# 2. Flyway 在 Spring Boot 4.x 的兼容性 A 需选择与 Spring Boot 4.x 匹配的 Flyway 版本,注意依赖与 API 兼容 ✓ 正确答案 B 所有版本自动兼容 C Flyway 不参与 Spring Boot 自动配置 D 升级无影响
# 3. Flyway 的 baseline 与 repair 命令 A baseline 用于修复 checksum B repair 用于建立基线 C baseline 对已有数据库建立基线,repair 修复 schema history 不一致 ✓ 正确答案 D 两者功能相同
# 4. Flyway 的 schema history 表如何在多实例并发启动时通过表锁保证迁移互斥,锁等待与超时失败如何处理 A 多实例可同时迁移 B Flyway 通过 schema history 表的数据库锁保证同时只有一个实例迁移 ✓ 正确答案 C 无需锁 D schema history 表与互斥无关
# 5. Flyway/Liquibase 与 Git 版本对齐 A 迁移脚本可随意修改 B 迁移与代码版本无关 C 无需纳入版本控制 D 迁移脚本应与代码一起版本管理、按顺序执行,保证代码与数据库一致 ✓ 正确答案
# 6. Liquibase 的 include/includeAll 与格式化 A 无法模块化组织 B 两者都只引入一个文件 C Liquibase 只支持 XML D include 引入单个 changelog,includeAll 引入目录下所有 changelog ✓ 正确答案
# 7. Liquibase 的 liquibase.properties 与 profile A 无法多环境配置 B 配置文件只用于数据源 C liquibase.properties 集中配置,profile/context 区分多环境执行 ✓ 正确答案 D 无 profile 概念
# 9. Liquibase 的 preConditions 条件执行 A 它用于回滚 B 它无法校验表是否存在 C 它总在变更后执行 D 它在变更前校验条件,满足才执行,避免错误状态迁移 ✓ 正确答案
# 10. 一次性数据回填脚本如何保证幂等(唯一键/记录状态字段)并支持安全重跑 A 回填脚本无需幂等 B 用唯一键约束或状态字段标记已处理,保证重复执行不产生重复数据 ✓ 正确答案 C 唯一键会引起重复 D 重跑必然报错
# 11. Flyway 与 Liquibase 的选型对比,社区版能力、回滚模型、多数据库支持与团队协作 A 两者回滚能力相同 B Liquibase 只支持 SQL C Flyway 支持自动回滚 D Liquibase 回滚模型更完善、支持多格式,Flyway 简单以 SQL 版本脚本为主 ✓ 正确答案
# 12. Liquibase 的变更集(ChangeSet)与回滚(Rollback) A ChangeSet 是变更单元,可定义 rollback 实现版本回退 ✓ 正确答案 B 回滚无需定义 C ChangeSet 无法回滚 D ChangeSet 与回滚无关
# 13. Spring 的 DatabaseClient 如何以响应式方式执行 SQL 并映射结果,fetch 之后的 map/one/all 各返回什么类型 A one() 返回 Flux B all() 返回 Mono C 两者都返回 List D fetch().one() 返回 Mono,fetch().all() 返回 Flux ✓ 正确答案
# 14. 反应式事务中连接是如何在 Context 中绑定并沿订阅链传递的,与传统 ThreadLocal 绑定连接的机制有何不同 A 连接绑定在 ThreadLocal 中 B 连接绑定在响应式 Context 中沿订阅链传递,不依赖线程 ✓ 正确答案 C 线程切换会丢失连接 D 与 ThreadLocal 机制相同
# 15. 反应式链路中 @Transactional 为何失效,TransactionalOperator.transactional 如何把多个操作绑定到同一连接与事务 A @Transactional 在反应式中正常 B 反应式无需事务管理 C TransactionalOperator 用 ThreadLocal D @Transactional 在反应式链路失效,需用 TransactionalOperator 通过 Context 绑定事务 ✓ 正确答案
# 16. 多个应用副本同时执行 Flyway migrate 时,如何避免重复执行与版本错乱,baseline 与 lock 机制各起什么作用 A lock 机制保证互斥,baseline 处理已有库接管,避免重复与版本错乱 ✓ 正确答案 B baseline 用于并发锁 C 多副本可同时迁移 D lock 处理已有库
# 17. 大表 DDL 在线变更(gh-ost/pt-osc)如何与 Flyway/Liquibase 协作,影子表切换期间迁移脚本的版本一致性如何保证 A 在线 DDL 无需记录版本 B 影子表切换需保证迁移脚本版本与最终结构一致,避免切换期间冲突 ✓ 正确答案 C 与迁移工具无关 D 切换可随时进行
# 19. Flyway 的 repeatable migrations 与占位符 A repeatable 迁移按版本号唯一 B R__ 前缀的迁移在内容变化时重复执行,适合视图/存储过程 ✓ 正确答案 C 占位符用于定义版本 D repeatable 迁移只执行一次
# 20. Flyway 的 validateOnMigrate 与失败处理 A 它关闭迁移 B 它校验已应用迁移的 checksum 与一致性,失败需 repair 修复 ✓ 正确答案 C 校验失败无影响 D 它用于回滚
# 21. Flyway 的迁移机制(版本、校验、执行) A 迁移可随时修改 B 按版本号排序执行未应用迁移,校验一致性后记录到 schema history ✓ 正确答案 C 迁移不记录版本 D 无校验机制
# 22. R2DBC 与 JDBC 在编程模型上的根本差异是什么,为什么 R2DBC 规范刻意不提供阻塞式 API A R2DBC 提供阻塞 API B 两者都阻塞 C JDBC 阻塞、R2DBC 非阻塞,R2DBC 不提供阻塞 API 以保持非阻塞链路 ✓ 正确答案 D 两者编程模型相同
# 23. R2DBC 的 ConnectionPool(r2dbc-pool)配置模型与 HikariCP 有哪些关键差异,acquire 超时与连接校验如何设置 A 它与 HikariCP 配置相同 B 有 connectionTestQuery C 获取连接是阻塞的 D 它是响应式连接池,acquire 超时用 maxAcquireTime,无 JDBC 校验查询 ✓ 正确答案
# 24. Spring Data R2DBC 的 Repository 抽象相比 JDBC 版缺少哪些能力(如分页派生查询、懒加载),原因是什么 A 它缺少懒加载、级联等 JPA 式能力,因响应式模型与轻量 SQL 驱动 ✓ 正确答案 B 它与 JPA 完全相同 C 它支持懒加载 D 它支持级联映射
# 25. 在 WebFlux + R2DBC 链路中混入一次阻塞 JDBC 调用会破坏哪些保证,如何用 boundedElastic 隔离遗留代码 A 阻塞调用无影响 B 事件循环线程可被阻塞 C 阻塞调用会阻塞事件循环线程,需用 boundedElastic 隔离到独立线程池 ✓ 正确答案 D 无需隔离
# 27. 数据库迁移在多租户(每租户 schema/分库)架构下的执行策略与租户感知 A 只迁移一个租户 B 迁移脚本租户无关 C 需对每个租户 schema 执行迁移,脚本需租户感知并记录状态 ✓ 正确答案 D 无需记录租户状态
# 28. Hibernate Reactive 的 Mutiny 编程模型与 @WithSession/@WithTransaction 的使用边界 A 它在反应式方法上开启事务,通过 Mutiny 上下文传播,替代 @Transactional ✓ 正确答案 B 它与 @Transactional 相同 C 它用于同步方法 D 它无法传播事务
# 30. 生产迁移如何设计灰度放量与回滚演练,迁移的验证指标与回滚触发条件是什么? A 一次全量迁移即可 B 灰度放量逐步扩大,回滚演练验证可逆,指标异常触发回滚 ✓ 正确答案 C 无需回滚演练 D 回滚无需触发条件
# 31. 迁移脚本在多环境(dev/staging/prod)的差异 A 每环境独立脚本 B 多环境使用同一套脚本,差异通过配置(占位符/context)处理 ✓ 正确答案 C 脚本内容必然不同 D 无需统一结构
# 34. R2DBC 对批量插入、存储过程、LOB 的支持现状与限制,哪些传统 JDBC 场景目前仍难以平滑迁移 A 批量插入与 JDBC 相同 B R2DBC 完全覆盖 JDBC 能力 C R2DBC 对批量插入、存储过程、LOB 支持有限,部分 JDBC 场景难以迁移 ✓ 正确答案 D 存储过程完全支持