# 1. R2DBC 的事务(TransactionalDatabaseClient)边界 A R2DBC 事务限定在同一连接上,事务内操作绑定该连接,跨连接/跨服务需分布式事务 ✓ 正确答案 B 事务可跨多个连接 C 事务操作可任意切换线程 D 无需管理连接
# 2. RSocket 与 gRPC 在传输、流控、背压与多路复用上的对比,各自更适合什么微服务通信场景 A gRPC 提供应用层背压,RSocket 基于 HTTP/2 B RSocket 不支持多路复用 C 两者完全等价 D RSocket 提供应用层背压与四种交互模型,gRPC 基于 HTTP/2 多路复用,适合强类型 RPC ✓ 正确答案
# 3. Spring Data R2DBC 的 DatabaseClient 使用 A DatabaseClient 是阻塞式 JDBC 操作 API B DatabaseClient 无法绑定参数 C DatabaseClient 提供响应式 SQL 操作(sql/bind/map/fetch),返回 Mono/Flux,非阻塞 ✓ 正确答案 D DatabaseClient 只能执行查询
# 4. R2DBC 的批处理与多语句执行(execute 多条 SQL)与 JDBC 批处理的差异 A R2DBC 批处理与 JDBC 批处理完全相同 B R2DBC 用 Statement.add() 累积参数、execute() 响应式执行,返回 Flux,而非 JDBC 的同步 addBatch/executeBatch ✓ 正确答案 C R2DBC 不支持批量 D R2DBC 批处理是同步阻塞的
# 5. MySQL/PostgreSQL 的 R2DBC 驱动 A 所有数据库共用同一个 R2DBC 驱动 B PostgreSQL 用 r2dbc-postgresql,MySQL 常用 r2dbc-mysql,通过 spring.r2dbc.url 配置 ✓ 正确答案 C MySQL 没有 R2DBC 驱动 D R2DBC 驱动是阻塞式的
# 6. R2DBC 1.0 规范(ConnectionFactory/Connection/Statement) A ConnectionFactory.create() 返回同步 Connection B ConnectionFactory 创建连接、Connection 管理事务与 Statement、Statement 绑定参数并执行,均返回 Mono/Flux ✓ 正确答案 C Statement 无法绑定参数 D R2DBC 无事务支持
# 7. R2DBC 与 JDBC 的本质差异(同步/响应式) A JDBC 是响应式非阻塞,R2DBC 是同步阻塞 B JDBC 同步阻塞占线程,R2DBC 响应式返回 Mono/Flux 非阻塞 ✓ 正确答案 C 两者返回值类型相同 D 两者线程模型相同
# 8. R2DBC 的 BLOB/CLOB 处理 A Blob/Clob 一次性载入内存 B BLOB 只能同步读取 C R2DBC 不支持 BLOB D R2DBC 用 Blob/Clob 抽象,提供流式读取(Flux<ByteBuffer>/Flux<String>)避免大对象占内存 ✓ 正确答案
# 9. R2DBC 的 Statement 绑定(bind/bindNull) A bindNull 无需指定类型 B bind 按索引/名称绑定值,bindNull 需显式指定类型绑定空值 ✓ 正确答案 C null 值无需绑定 D 参数绑定无法防止注入
# 10. R2DBC 的 execute/query/update 边界 A 查询用 rowsUpdated,更新用 map B 三者无区别 C 查询用 Result.map 取行数据,更新用 rowsUpdated 取影响行数,execute 是通用执行入口 ✓ 正确答案 D execute 只能执行查询
# 11. R2DBC 的连接池(r2dbc-pool) A r2dbc-pool 通过 ConnectionPoolConfiguration 配置最大连接、超时等,连接获取/释放是响应式的 ✓ 正确答案 B r2dbc-pool 是阻塞式连接池 C 连接池大小任意 D 连接池无法释放连接
# 12. R2dbcEntityTemplate 的 Fluent API A R2dbcEntityTemplate 只能手写 SQL B R2dbcEntityTemplate 提供实体级 Fluent API(select/insert/update/delete + Criteria),自动处理实体-表映射 ✓ 正确答案 C R2dbcEntityTemplate 是阻塞式 D 它不能用于 CRUD
# 13. R2dbcRepository 的工程应用 A R2dbcRepository 是同步阻塞仓库 B 它无法定义自定义查询 C R2dbcRepository 继承 ReactiveCrudRepository,提供响应式 CRUD 与派生查询,返回 Mono/Flux ✓ 正确答案 D 它只能用于 MVC
# 14. RSocket 在 Service Mesh 与 API 网关场景的定位是什么,相比 HTTP/REST 它解决了哪些响应式通信痛点 A HTTP/REST 原生支持应用层背压 B RSocket 与 HTTP/REST 完全一样 C RSocket 无法多路复用 D RSocket 提供应用层背压、双向流与单向推送、多路复用,解决 HTTP/REST 在响应式通信的痛点 ✓ 正确答案
# 15. RSocket 如何在应用层实现背压,request-stream/channel 中的 request(n) 信用机制与 TCP 流控有何区别 A TCP 流控是应用层消息级背压 B request(n) 无法控制数据流 C RSocket 无背压 D RSocket request(n) 是应用层消息级信用背压,TCP 流控是网络字节级拥塞控制,两者互补 ✓ 正确答案
# 16. RSocket 的四种交互模型(request-response、request-stream、fire-and-forget、channel)分别对应什么通信语义 A 四种模型完全相同 B fire-and-forget 即发即弃不等待响应,channel 是双向流,request-stream 是单请求多响应 ✓ 正确答案 C request-stream 是单响应 D request-response 是双向流
# 17. RSocket 的帧(Frame)格式与连接建立(SETUP 帧)、lease 限流机制如何工作 A SETUP 帧用于限流,LEASE 帧用于连接建立 B 客户端发送 SETUP 帧建立连接,服务端通过 LEASE 帧发放租约实现限流 ✓ 正确答案 C 帧格式与限流无关 D lease 是客户端限流
# 18. R2DBC 连接的 Micrometer 指标(r2dbc.*)与慢 SQL 观测 A r2dbc.* 指标覆盖连接池与 SQL 执行时间,通过 Actuator/Micrometer 暴露,配合慢查询日志观测慢 SQL ✓ 正确答案 B R2DBC 无法暴露指标 C 指标只能用于连接 D 慢 SQL 无法观测
# 19. Flyway 在 R2DBC 场景下的迁移支持(r2dbc migration)与限制 A Flyway 通过响应式 API 与 R2DBC 连接工厂执行迁移,但与 JDBC 迁移在驱动支持与 API 上有差异 ✓ 正确答案 B Flyway 不支持 R2DBC 迁移 C R2DBC 迁移与 JDBC 迁移完全相同 D Flyway 迁移无法用 R2DBC 驱动
# 20. RSocket 与 WebSocket 的定位差异是什么,为什么 RSocket 常构建在 WebSocket/TCP 之上而非替代它 A RSocket 替代 WebSocket B 两者定位相同 C RSocket 不依赖传输层 D WebSocket 是传输层提供全双工连接,RSocket 是构建其上的应用层协议,提供背压与交互模型,二者是层叠关系 ✓ 正确答案
# 21. RSocket 的断线重连(resume)与会话恢复机制如何保证流式交互的连续性 A 断线后必须从头重发所有帧 B resume 无法恢复会话 C resume 通过 Resume Token 与帧缓存从恢复点重放帧,保证断线后流式交互连续性 ✓ 正确答案 D resume 与会话恢复无关
# 22. Spring 中如何用 @MessageMapping 暴露 RSocket 端点并用 RSocketRequester 发起调用,与 WebFlux 如何整合 A RSocket 不支持 @MessageMapping B 服务端用 @MessageMapping 暴露端点,客户端用 RSocketRequester 调用,共享 Reactor 模型与 WebFlux 整合 ✓ 正确答案 C RSocketRequester 无法发起调用 D RSocket 与 WebFlux 无整合
# 23. RSocket Routing(routing extension)如何与负载均衡、服务发现结合,在 Spring Cloud 中的集成现状 A RSocket Routing 做连接级路由与负载均衡,需结合服务发现,Spring Cloud 集成尚不成熟,需自定义 ✓ 正确答案 B Spring Cloud 已完全成熟地支持 RSocket 负载均衡 C RSocket 无需服务发现 D RSocket 与 HTTP 负载均衡完全一致
# 24. 使用 r2dbc-h2 与 Testcontainers 进行响应式数据层测试 A 只能用真实数据库测试 B r2dbc-h2 提供轻量内存测试,Testcontainers 启动真实数据库容器,配合 StepVerifier 验证响应式数据层 ✓ 正确答案 C r2dbc-h2 无法用于测试 D Testcontainers 无法启动数据库