R2DBC 与响应式数据库与 RSocket 与响应式网络

共 24 题
#

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 无法启动数据库