Reactor 核心 API

共 18 题
#

1. Flux.fromIterable/fromStream/fromFuture 的工程应用

A 可以多次订阅同一个 Stream
B fromStream 用于把异步任务结果桥接为响应式流
C fromStream 返回 Mono 类型
D Stream 只能消费一次,多次订阅会抛异常,通常配合 defer 使用 ✓ 正确答案
#

2. Flux.window/buffer/groupBy 的批处理

A buffer 产出子 Flux,window 产出 List
B window 按数量聚合为 List 发射
C 三者作用完全相同,可互换
D groupBy 按键分组,每组产生一个子 Flux ✓ 正确答案
#

3. CombineLatest/merge/concat/zip 的差异

A merge 强调顺序,先完成一个流再订阅下一个
B zip 会等待各源对齐的元素同时到达才发射 ✓ 正确答案
C combineLatest 只取第一个源的值
D concat 并发订阅所有源并交错发射
#

4. ConnectableFlux 与 share/refCount 的取舍

A share() 需要手动调用 connect() 才开始
B share() 等价于 publish().refCount(1),最后一个订阅者取消时自动断开 ✓ 正确答案
C autoConnect 在订阅者全部取消后会断开
D refCount 不会因为订阅者消失而断开连接
#

5. Flux.cache/replay 的热订阅

A replay(n) 缓存全部历史元素
B cache 无法限制缓存条数
C 两者都完全不缓存,只转发实时数据
D cache 默认缓存全部元素,replay 可配置缓存条数与时间窗口 ✓ 正确答案
#

6. Flux.create/Flux.generate 的差异与取舍

A generate 可用于跨线程异步发射
B create 每次只能发射一个元素,无法异步
C create 适合桥接异步事件源,generate 适合由状态驱动同步生成 ✓ 正确答案
D generate 天然多线程并发发射
#

7. Flux.defer/using/usingWhen 的资源管理

A defer 负责在流结束时释放资源
B usingWhen 无法处理取消信号
C using 用于同步资源创建与释放,usingWhen 用于异步资源生命周期管理 ✓ 正确答案
D using 与 defer 作用完全相同
#

8. Flux.interval/Mono.delay 的定时器

A interval 延迟一次后发射一个信号
B delay 会周期性发射无限递增的值
C interval 按固定周期周期性发射递增值,delay 延迟后发射一次 ✓ 正确答案
D 两者都无法取消
#

9. Flux.map/flatMap/concatMap/switchMap/merge/zip 的语义

A concatMap ✓ 正确答案
B switchMap
C flatMap
D merge
#

10. Flux.retry/retryWhen/repeat 的重试边界

A retry 在 onComplete 后重新订阅,repeat 在 onError 后重新订阅
B repeat 用于失败重试
C 两者完全等价
D retry 在 onError 后重新订阅,repeat 在 onComplete 后重新订阅 ✓ 正确答案
#

11. Flux.take/takeWhile/skip/takeUntil 在截断与取消语义上的差异,takeUntil 触发后如何取消上游

A takeUntil 会包含触发条件为真的那个元素,takeWhile 不包含首个不满足条件的元素 ✓ 正确答案
B 两者都包含触发条件为真的元素
C takeUntil 在条件为假时截断
D 两者都不会取消上游
#

12. Flux.transform/transformDeferred 的可重用

A transform 每次订阅都重新执行转换函数
B transformDeferred 立即装配一次
C 两者完全等价
D transformDeferred 延迟到订阅时应用转换函数,适合依赖订阅上下文的转换 ✓ 正确答案
#

13. Mono.just/Mono.empty/Mono.error 的语义

A empty 表示发射一个空值
B empty 表示没有结果但正常完成,error 表示立即失败 ✓ 正确答案
C error 发射一个空值并完成
D just 用于表示无结果
#

14. Mono.then/when 与多源编排

A Mono.then
B Mono.just
C Mono.when ✓ 正确答案
D Mono.empty
#

15. ParallelFlux 的并行处理

A 保证元素处理顺序
B 与 flatMap 的并发订阅语义完全相同
C 通过 runOn 把数据分发到多个线程并行处理,适合 CPU 密集任务 ✓ 正确答案
D 只能在单线程上运行
#

16. Schedulers.parallel()/single()/immediate() 的工程应用

A Schedulers.single()
B Schedulers.immediate()
C Schedulers.parallel() ✓ 正确答案
D Schedulers.boundedElastic()
#

17. Sinks(Sinks.Many/Sinks.One)作为热发布者

A Sinks.Many 只支持单值推送
B Sinks 用于从外部代码程序化地向响应式流推送数据,替代已废弃的 Processor ✓ 正确答案
C Sinks.One 支持多元素推送
D Sinks 无法处理背压
#

18. 错误处理(onErrorReturn/onErrorResume/onErrorContinue)

A onErrorContinue ✓ 正确答案
B onErrorResume
C onErrorReturn
D onErrorMap