# 1. Flink 测试中如何利用 Flink MiniCluster 与 TestHarness 做算子级单元测试? A 算子级测试必须启动完整集群 B TestHarness 不能测试状态与计时器 C TestHarness 可在 JVM 内直接驱动单个算子,注入元素、控制时间水位并断言输出,MiniCluster 用于任务级集成测试 ✓ 正确答案 D MiniCluster 只是单元测试框架
# 2. 如何测试 Flink 的 Exactly-Once 语义,模拟故障重放后验证输出无重复无丢失? A 只要开 checkpoint 就自动 Exactly-Once B 重放后必然重复 C 应通过故障注入、重放输入并用唯一 ID 对账,验证输出无重复无丢失,且与无故障基线一致 ✓ 正确答案 D Exactly-Once 与 Sink 无关
# 3. Flink 作业的背压测试与告警验证,背压指标、Task 吞吐下降如何构造并验证 A 背压只影响延迟不影响吞吐 B 背压无法通过指标观测 C 背压告警与吞吐无关 D 通过构造慢下游触发背压,观察 backPressure 指标与吞吐下降,并验证告警阈值能正确触发和定位瓶颈 ✓ 正确答案
# 4. Flink 窗口测试中 Event Time、Processing Time 与乱序数据的用例如何设计? A Event Time 与 Processing Time 的窗口行为相同 B 应分别设计 Event Time 与 Processing Time 用例,覆盖乱序数据归窗、迟到触发与侧输出,用控制时间确定性验证 ✓ 正确答案 C 乱序数据无需考虑 D 迟到数据总是被丢弃
# 5. 如何验证 Flink 状态后端(RocksDB)的恢复与扩容后状态一致性? A 扩容后状态会自动重新分布且无需验证 B 扩容不影响状态分布 C RocksDB 无法做 checkpoint D 应通过 checkpoint 恢复与并行度扩容,验证 key 级状态在恢复与重分配后保持一致、无丢失错位 ✓ 正确答案
# 6. 实时数仓的"流表关联"测试,维表更新延迟如何影响关联结果,如何断言? A 应控制维表更新延迟与流事件到达时间,验证更新前/后关联旧值/新值、缓存 TTL 与兜底策略,按口径断言结果 ✓ 正确答案 B 维表更新延迟不影响结果 C 流表关联总是关联到最新维表值 D 关联不上无需处理
# 7. Flink 作业的测试层次,单元测试(算子)、集成测试(MiniCluster)、端到端测试(真实数据源)如何分层? A 只需做端到端测试即可 B 单元测试无法验证算子逻辑 C 单元测试用 TestHarness 验证算子、集成测试用 MiniCluster 验证运行时协同、端到端测试对接真实数据源,形成分层金字塔 ✓ 正确答案 D MiniCluster 就是真实集群
# 8. Flink 状态 TTL 与过期清理的测试,状态过期策略、清理机制与恢复后行为如何验证 A TTL 只影响清理不影响可见性 B TTL 过期后状态立即且必然被删除 C 应验证 TTL 到期判定、过期状态可见性配置与恢复后过期清理行为,确保 TTL 有效且不破坏正确性 ✓ 正确答案 D 恢复后 TTL 计时器会丢失
# 9. Flink 状态大小的监控与测试,状态膨胀、TTL 清理与 RocksDB 存储如何压测? A 应压测状态随规模增长、TTL 清理是否使状态回落、RocksDB 在高吞吐下的内存/磁盘/延迟,验证状态可控且无 OOM ✓ 正确答案 B 状态膨胀无需监控 C TTL 清理无法压测 D RocksDB 不会状态膨胀
# 10. Flink 重启策略的故障恢复测试,固定延迟、失败率与无重启策略下任务失败后的恢复行为与数据丢失如何验证? A 所有重启策略的行为相同 B 重启策略不影响数据丢失 C 无重启策略也会自动重启 D 应分别验证固定延迟、失败率与无重启策略下的重启次数、失败行为,并结合 checkpoint 重放验证数据无丢失无重复 ✓ 正确答案
# 11. 算子链与并行度对作业行为的影响,chain 拆分与并行度调整如何改变吞吐、延迟与状态分布,如何断言优化效果? A 算子链与并行度不影响性能 B 并行度不影响状态分布 C 提升并行度必然降低延迟 D 应对比 chain 拆分与并行度调整前后的吞吐、延迟与状态分布均衡性,断言优化效果并确认结果正确性不变 ✓ 正确答案
# 12. Flink CDC 任务的测试如何覆盖 DDL 变更、全量+增量切换与断点续传? A 全量与增量切换无需验证 B CDC 任务只需验证增量数据 C 应覆盖 DDL 变更的 schema 演进、全量+增量切换点无重复无丢失、断点续传从断点继续消费,用主键对账验证一致性 ✓ 正确答案 D 断点续传会丢失数据
# 13. Flink 的状态与容错测试,Checkpoint/Restore、Exactly-Once 语义如何验证,故障注入怎么做? A 开 checkpoint 后故障注入不影响结果 B 故障注入时机不影响测试 C 应验证 Checkpoint/Restore 后状态与输出一致,通过多种故障注入时机与重放对账验证 Exactly-Once,确保无重复无丢失 ✓ 正确答案 D Restore 后无需验证状态
# 14. Flink SQL 任务的测试,动态表、维表 JOIN 与 DDL 变更对作业的影响如何验证? A Flink SQL 与批处理 SQL 行为完全一致 B 维表 JOIN 无需验证时间语义 C 应验证动态表随流更新的输出变化、维表 JOIN 的时间语义与缓存、DDL 变更的 schema 兼容,用 StreamTableEnvironment 执行 SQL 断言 ✓ 正确答案 D DDL 变更不影响 SQL 作业
# 15. Flink 作业升级的状态兼容测试,Savepoint 恢复、算子变更与状态 Schema 演进? A 作业升级后状态必然丢失 B 算子变更不影响状态恢复 C 应验证 Savepoint 恢复到新版本、算子变更与状态 Schema 演进下的状态迁移,确保状态正确保留、输出无重复无丢失 ✓ 正确答案 D Schema 演进无需验证
# 16. Flink 端到端一致性测试,Source/Sink 对接 Kafka 的 Exactly-Once 如何验证? A 应验证 Source 的 offset 与 checkpoint 绑定、Sink 的 Kafka 事务两阶段提交,在故障重放下用唯一 ID 对账验证消费与生产整体一致 ✓ 正确答案 B 只要 Sink 用事务就自动 Exactly-Once C Source 端无需验证 D 端到端一致性只需验证单端
# 17. Flink 作业的 Watermark 空闲源(idle source)与迟到数据丢弃策略的测试如何设计? A 空闲源会一直阻塞 watermark,无法处理 B 空闲源无需处理 C 迟到数据总是进入主输出 D 应设置 withIdleness 验证空闲 source 不阻塞 watermark 触发,并构造迟到数据验证 allowedLateness 与侧输出丢弃策略 ✓ 正确答案
# 18. Flink Checkpoint 对齐机制测试,barrier 对齐、超时与非对齐检查点对一致性的影响如何验证? A 对齐超时不会影响 checkpoint B 非对齐检查点与对齐完全一致 C 应验证 barrier 对齐的等待行为、对齐超时与失败、非对齐检查点的取舍,在故障重放下确认一致性符合所选模式 ✓ 正确答案 D 对齐机制不影响吞吐