Spring Batch 与批处理架构

共 21 题
#

1. Spring Batch 的核心概念,Job/Step/Chunk/ItemReader/ItemProcessor/ItemWriter 的分工

A Job 组织流程、Step 定义步骤、Chunk 定义块、Reader/Processor/Writer 负责读处理写 ✓ 正确答案
B 只有 Job 与 Reader
C Chunk 与事务无关
D Writer 负责读取
#

2. 批处理的 Chunk 模型,commit-interval、事务边界与失败回滚

A commit-interval 越大越好
B 每条记录一个事务
C 失败只回滚单条
D 每 commit-interval 条作为一个 Chunk 事务,失败回滚整个 Chunk,commit-interval 权衡性能与回滚粒度 ✓ 正确答案
#

3. Spring Batch 的 Chunk 式(读-处理-写)与 Tasklet 模型的选择边界

A Chunk 适合大数据量分块处理,Tasklet 适合单步原子任务,按数据流选择 ✓ 正确答案
B 两者等价
C Tasklet 适合大数据量
D Chunk 适合单步任务
#

4. ItemStream 生命周期,open/update/close 如何持久化 reader 位置,使重启从上次失败点继续而非重头读取

A 位置不持久化
B 重启总是从开头读
C ItemStream 通过 update 持久化 reader 位置到 ExecutionContext,重启时恢复实现断点续跑 ✓ 正确答案
D 无断点续跑
#

5. 条件流程与 JobExecutionDecider,根据步骤结果动态选择后续 Step 分支,与固定 flow 的差异

A 条件流程只能按固定顺序执行,无法分支
B 固定 flow 也可分支
C 条件流程按步骤结果分支,JobExecutionDecider 编程式决策,固定 flow 线性执行 ✓ 正确答案
D 无分支机制
#

6. 批处理的扩展,分区(Partitioning)与远程分块(Remote Chunking)如何提升吞吐

A 分区并行处理数据分区,远程分块分布式读写,都通过并行提升吞吐 ✓ 正确答案
B 两者都串行
C 分区用于分布式读写
D 远程分块用于并行计算
#

7. Spring Batch 的元数据表(BATCH_JOB_*)与 JobRepository 的作用

A 元数据只存内存
B BATCH_JOB_* 元数据表持久化执行状态,JobRepository 管理元数据支持重启与续跑 ✓ 正确答案
C JobRepository 无关状态
D 无元数据表
#

8. 批处理的幂等与断点续跑,JobParameters 唯一性约束与 restart 语义

A restart 重头执行
B 相同参数可重复创建
C JobParameters 唯一性防重复执行,restart 从失败点续跑,保障幂等与可重入 ✓ 正确答案
D 无幂等约束
#

9. 批处理失败的重试与跳过(skip)策略配置,skip-limit、retry 与监听器统计

A 无重试机制
B 失败直接终止
C retry 重试临时错误,skip 跳过可跳记录(skip-limit 上限),监听器统计失败 ✓ 正确答案
D skip 无上限
#

10. Spring Batch 与 Spring Integration/Spring Cloud Task 的协作边界

A 三者功能重叠
B Batch 管批处理、Integration 管消息、Cloud Task 管任务生命周期,协作实现消息触发批处理 ✓ 正确答案
C Integration 管批处理
D Cloud Task 管消息
#

11. 大批量数据写入性能,JdbcBatchItemWriter/MyBatis 批处理与 JPA batch 的取舍

A JdbcBatchItemWriter/MyBatis 用 JDBC 批量性能最高,JPA batch 需配 batch_size 与 clear ✓ 正确答案
B JPA 批量无条件最高
C 三者性能相同
D JdbcBatchItemWriter 逐条写
#

12. 批处理与虚拟线程/并行流的并发模型,并行 Step 与异步 Processor

A 并发无成本
B 批处理必须串行
C 异步 Processor 无事务
D 并行 Step 并行步骤、异步 Processor 异步处理,虚拟线程降成本但需控制事务 ✓ 正确答案
#

13. Spring Batch 的监听器(JobExecutionListener/StepExecutionListener)与埋点

A 无监听器机制
B 监听器只用于 Job
C JobExecutionListener/StepExecutionListener 在 Job/Step 前后回调,用于埋点统计与监控 ✓ 正确答案
D 监听器不能统计
#

14. 批处理数据一致性,Reader 游标快照与分页读取在并发修改下的差异

A 游标基于游标滚动、分页依赖 offset 稳定,并发修改下都可能偏移,需结合隔离级别 ✓ 正确答案
B 两者都稳定
C 并发修改无影响
D 分页完全一致
#

15. Spring Batch 与 Quartz/XXL-JOB 等调度器的集成与分布式部署形态

A 无需调度器
B Spring Batch 自带分布式调度
C Quartz/XXL-JOB 定时触发 Job,分布式部署依赖调度器分片与协调配合幂等 ✓ 正确答案
D 只能单机
#

16. JobLauncher 的启动方式,同步 run 与异步 TaskExecutor 的差异、返回时机,以及多次启动同一 Job 的行为

A 同步 run 阻塞返回完成结果,异步立即返回,相同 JobParameters 重复启动被拒绝 ✓ 正确答案
B 异步也阻塞返回
C 相同参数可重复启动
D 无同步异步之分
#

17. FlatFileItemReader 的行映射,LineMapper/FieldSet 如何把文本行绑定到领域对象,定长与分隔符格式的适配

A 行映射与 Tokenizer 无关
B 只支持定长
C FieldSet 不能取字段
D LineTokenizer 切行为 FieldSet(定长/分隔符),FieldSetMapper 绑定到领域对象 ✓ 正确答案
#

18. 批处理的事务边界,Process 阶段读后写前的窗口与持锁问题

A 事务边界无关
B 事务只覆盖写
C 处理阶段无持锁
D Chunk 事务覆盖读处理写,Process 阶段窗口可能持锁,缩短 Chunk 与合理隔离缓解 ✓ 正确答案
#

19. Spring Batch 的异步 ItemProcessor/ItemWriter 与消息中间件集成

A 异步处理器提升吞吐,消息中间件实现远程分块与分布式读写 ✓ 正确答案
B 只能同步处理
C 消息中间件无关
D 无异步能力
#

20. 批处理框架选型,Spring Batch 与自研批量任务、Flink Batch 的边界

A Spring Batch 最重
B 所有场景用 Flink
C Spring Batch 适合企业常规批量,自研适合简单,Flink 适合大规模分布式/流批一体 ✓ 正确答案
D 自研提供断点续跑
#

21. ItemProcessor 返回 null 的过滤语义,被过滤记录如何计数,与 skip 策略和 commit 统计的交互

A 过滤计入 commit
B 过滤即 skip
C 返回 null 正常过滤不写入,与 skip 异常跳过不同,过滤不计 commit 写入数 ✓ 正确答案
D 过滤触发 skip-limit