# 1. 混沌工程(Chaos Engineering)的五大原则是什么?如何设计一个完整的混沌实验(从假设到结论)? A 稳态假设是实验的对照组,没有稳态就无法量化故障影响 ✓ 正确答案 B 混沌实验必须在生产环境执行,模拟环境永远无法替代 C 混沌实验的目标是制造尽可能大的故障以测试系统极限 D 爆炸半径越大,实验发现的问题越多,因此应扩大范围
# 2. 时钟偏移(Clock Skew)、网络延迟注入、节点宕机三类故障的测试策略有何不同?各自需要哪些专门的注入工具? A 节点宕机只需 kill 进程,无需验证故障转移行为 ✓ 正确答案 B 网络延迟注入可用 Linux tc netem 或 Toxiproxy 实现 C 时钟偏移影响最隐蔽,可能导致分布式锁租约提前过期 D 时钟偏移可通过 NTP 模拟或修改系统时钟实现
# 3. 混沌工程实验的稳态假设(Steady-State Hypothesis)与爆炸半径(Blast Radius)控制如何设计?请以一个微服务调用链为例说明实验设计步骤。 A 不设置 kill switch,让故障自然持续 B 只在单独环境测试,不涉及生产流量 C 对全量生产流量注入故障以测试真实影响 D 只对目标服务的 1% 流量注入并设置自动终止 ✓ 正确答案
# 4. 混沌工程实验的"稳态假设(Steady State)"如何设计?业务核心指标(订单成功率、登录延迟)的基线选取? A 基线无需考虑业务周期性波动 B 应优先使用 CPU/内存等资源指标作为基线 C 应基于历史数据统计(如均值±标准差)并匹配实验时段 ✓ 正确答案 D 基线应取单次瞬时测量值,越精确越好
# 5. RPO(Recovery Point Objective)和 RTO(Recovery Time Objective)的验证方法是什么?灾难恢复演练中如何确保数据一致性检查的完整性? A RTO 验证的是可接受的数据丢失量 B RPO/RTO 只需在文档中声明,无需演练验证 C 数据一致性检查仅需核对条目总数即可 D RPO 验证可通过恢复后数据与写入点的时间差断言完成 ✓ 正确答案
# 6. 错误预算(Error Budget)驱动的发布决策,如何计算错误预算消耗速率并据此调整发布节奏? A 错误预算消耗速率快时应暂停发布并优先修复 ✓ 正确答案 B 错误预算 = SLO 值,SLO 越高预算越多 C 错误预算与发布节奏无关 D 预算耗尽后应继续发布以加快迭代
# 7. 故障注入(Fault Injection)覆盖维度,网络(延迟/丢包/分区)、计算(CPU/内存耗尽)、存储(IO/磁盘)、进程(崩溃/挂起)、时间(时钟偏移/闰秒)的工程实现? A 时钟偏移只影响显示时间,不影响业务逻辑 ✓ 正确答案 B 进程挂起可用 SIGSTOP 暂停进程 C CPU 耗尽可用 stress-ng 注入,验证 OOM 与资源隔离 D 网络丢包可用 tc netem loss 实现
# 8. 混沌实验的"爆炸半径"如何度量,如何用最小化影响集做渐进式注入? A 最小化影响集是指先选影响最小的注入点再逐步扩大 ✓ 正确答案 B 渐进式注入应先从核心服务的大流量开始 C 爆炸半径无需记录在实验报告中 D 爆炸半径只度量受影响的实例数,与用户无关
# 9. Chaos Monkey / LitmusChaos / Gremlin 等工具在测试体系中的定位与集成方式?如何选择适合的工具? A LitmusChaos 只适用于非 Kubernetes 环境 B Chaos Monkey 只适用于验证终止实例的随机可用性 ✓ 正确答案 C Gremlin 是开源免费工具,无需治理 D 所有团队都应选择 Chaos Monkey 作为唯一工具
# 10. 网络分区(Network Partition)测试,如何模拟脑裂(Split-Brain)场景并验证系统的分区容忍行为? A 脑裂测试只需验证分区期间的行为,无需恢复验证 B 分区恢复后无需验证数据合并与收敛 C 网络分区不会影响 leader 选举,无需测试 D 脑裂指集群分成两组各自形成 leader,是最危险的故障之一 ✓ 正确答案
# 11. 降级与限流预案在故障演练中的验证,如何确认降级策略在真实故障下按预期生效? A 降级后核心功能允许完全不可用 B 限流阈值无需验证是否与 SLO 相符 C 应注入下游故障并确认系统自动切换到降级路径 ✓ 正确答案 D 只需验证预案文档存在,无需真实演练
# 12. 爆炸半径(Blast Radius)控制,按业务域/可用区/租户/版本逐步放量的安全实验设计? A 应对所有业务域一次性注入故障以提高效率 B 放量顺序应优先选择核心交易域 C 放量过程无需设置 kill switch D 每级放量后应验证稳态指标,达标的才进入下一级 ✓ 正确答案
# 13. 在 K8s 中注入 Pod/节点/网络/磁盘故障时,各自的典型故障模型与验证目标是什么? A Pod 故障由 Deployment 控制器重建,验证副本恢复 ✓ 正确答案 B 节点故障无需验证 Pod 重新调度 C 磁盘故障不影响 PV 数据持久化 D 网络故障由 CPU 控制器处理
# 14. Game Day 演练与混沌实验有何区别?如何设计一场验证应急预案与人员响应的 Game Day,演练目标、控制者/执行者/观察者角色、时间盒、场景脚本、时间线复盘与行动项闭环如何落地? A Game Day 复效应聚焦改进而非追责 B 混沌实验侧重验证系统韧性的技术假设 C Game Day 完全不需要控制者与时间盒 ✓ 正确答案 D Game Day 侧重演练组织与人员响应
# 15. 混沌实验的自动化编排,如何把故障注入实验纳入 CI/CD 流水线,并保证实验失败不阻断正常发布? A 混沌实验只能在生产环境手动执行 B 混沌实验无需设置超时与失败阈值 C 混沌实验失败应阻断发布以保证质量 D 混沌实验失败应记录告警但不阻断发布 ✓ 正确答案
# 16. 混沌实验的安全终止机制(Rollback/Kill Switch)如何设计?如何防止实验失控影响生产? A 每个实验设置最大时长自动回滚 B Kill Switch 打开后应终止所有注入 C 回滚逻辑应幂等,可多次安全执行 D 健康约束触发时不应自动终止,以免误伤 ✓ 正确答案
# 17. 混沌工程在预生产环境(Staging)与生产环境(Production)实施的差异和注意事项? A 生产环境实验最真实,但风险最高,需严格控爆炸半径 ✓ 正确答案 B 预生产环境实验在任何情况下都完全可信 C 生产环境的实验无需审批与提前沟通 D 预生产环境无需复现生产拓扑
# 18. 混沌工程与常规测试的关系,混沌实验能否替代传统的故障恢复测试?两者的互补方式? A 混沌实验是确定性测试,结果可预测 B 传统测试验证已知故障的恢复路径,混沌实验探索未知韧性缺口 ✓ 正确答案 C 混沌实验可以完全替代传统故障恢复测试 D 混沌工程与故障恢复测试互斥,只能二选一
# 19. 韧性测试的度量指标有哪些?MTTF/MTTR/MTBF 在系统韧性评估中的作用? A MTTF 衡量修复时间,越大韧性越强 B MTBF = MTTF + MTTR ✓ 正确答案 C 三者互不相关,无法评估韧性 D MTTR 衡量故障前时间,越小越可靠
# 20. Chaos Engineering 在 SLO 驱动下的实验选择,基于错误预算消耗速度挑选下一轮实验? A 应对错误预算消耗最快的服务优先注入故障 ✓ 正确答案 B 实验优先级与错误预算消耗速率无关 C 消耗快说明服务很稳定,无需实验 D 应对预算富余的服务完全不做混沌实验
# 21. 如何避免混沌实验被当作"背锅工具",与复盘文化如何衔接? A 混沌实验失败应追责相关责任人 B 混沌实验发现的问题应归因于系统性因素而非个人失误 ✓ 正确答案 C 实验失败意味着团队能力不足,应避免记录 D 混沌实验的目的是找出执行者的问题