# 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