Flink 实时计算测试

共 18 题
#

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 对齐机制不影响吞吐