# 1. 熔断器的状态机中 Closed/Open/Half-Open 的转换条件,与超时、重试的组合策略? A Closed 状态直接拒绝所有请求 B Closed→Open 由失败率/失败次数阈值触发,Open→Half-Open 由冷却时间触发,Half-Open 探测成功恢复 Closed ✓ 正确答案 C Half-Open 允许放行全部请求 D 熔断打开时仍应无限重试
# 2. 重试与超时的组合中指数退避+抖动如何避免重试风暴? A 重试间隔应固定以保持简单 B 抖动会加重重试风暴 C 指数退避让重试间隔递增,抖动让不同请求重试时刻错开,避免重试风暴 ✓ 正确答案 D 超时与重试无关
# 3. 发布策略中金丝雀、蓝绿与滚动发布的流量切换与回滚方式,各自对版本兼容的要求 A 滚动发布逐步替换实例,新旧并存,要求新老版本兼容;金丝雀先小流量灰度再放量,回滚靠降低流量 ✓ 正确答案 B 蓝绿发布让新旧版本在同一实例上并存 C 金丝雀发布一次性切换全部流量 D 蓝绿发布回滚最慢
# 4. 契约测试中消费者驱动契约如何让服务间接口变更在 CI 阶段暴露,与端到端测试的分工 A 契约测试需要完整部署所有服务 B 消费者驱动契约让消费者定义契约,提供方在 CI 验证,接口变更在 CI 阶段暴露;E2E 验证完整业务链路,两者分工互补 ✓ 正确答案 C 契约测试与 E2E 测试完全相同 D 契约测试只能在运行时发现集成问题
# 5. Tenant Test 在多租户隔离测试用例设计。 A Tenant Test 只验证单租户功能 B Tenant Test 只测数据库,不测权限 C 多租户系统无需隔离测试 D Tenant Test 验证多租户间数据、权限、配置的隔离边界,防止跨租户数据泄漏与越权 ✓ 正确答案
# 6. 重试与幂等的配合中指数退避、抖动(jitter)与重试风暴的防护? A 重试不需要幂等,失败就重试即可 B 被重试的操作必须幂等,配合指数退避 + 抖动 + 熔断 + 最大重试次数防护重试风暴 ✓ 正确答案 C 抖动会加剧重试风暴 D 重试次数应无限大以保证成功率
# 7. 熔断器的状态转换中 CLOSED→OPEN→HALF-OPEN 的判定参数(阈值/冷却/探测)? A CLOSED→OPEN 由失败率阈值与最小请求数触发,OPEN→HALF-OPEN 由冷却时间触发,HALF-OPEN 探测成功回 CLOSED ✓ 正确答案 B 熔断器只有两态,无 HALF-OPEN C 冷却时间越短越好,无需权衡 D 探测请求失败也不会回到 OPEN
# 8. 服务降级与兜底中降级开关、默认值/缓存兜底如何设计,避免雪崩? A 依赖故障时直接报错,不降级 B 降级会放大故障 C 降级开关配合默认值/缓存兜底,依赖不可用时返回有限可用响应,配合熔断限流隔离避免雪崩 ✓ 正确答案 D 降级只用于核心功能
# 9. 超时预算(Deadline Propagation)与重试中如何避免重试放大超时并造成级联故障? A 每个服务独立设置超时并重试即可,无需传播 B 超时预算沿调用链传播,重试必须在剩余预算内进行,避免重试放大超时造成级联故障 ✓ 正确答案 C 重试次数与超时预算无关 D 超时预算会放大重试
# 10. 限流与熔断的协作中入口限流保护自身、熔断保护下游,两者如何避免“双重惩罚”与参数冲突? A 限流保护下游,熔断保护自身 B 两者应共享同一失败统计 C 限流守自身容量、熔断守下游健康,职责分离,避免把被限流误判为下游故障、避免双重惩罚 ✓ 正确答案 D 熔断打开时继续放大限流重试
# 11. 优雅停机中摘流量、排空在途请求与等待事务提交的顺序,如何配合就绪探针 A 停机时直接 kill 进程,无需排空 B 优雅停机顺序是摘流量、排空在途请求、等待事务提交、释放资源,就绪探针失败配合先摘流量再排空 ✓ 正确答案 C 就绪探针用于启动后立即可用 D 停机时无需等待事务提交
# 12. 数据库迁移与代码发布的顺序中先向后兼容再切换、回滚时如何避免数据不一致 A 先删除旧字段再发布新代码 B 先做向后兼容的迁移(新增可空字段),再发布新代码,最后做破坏性清理;回滚时 schema 需兼容旧代码避免数据不一致 ✓ 正确答案 C 迁移与发布完全无关 D 回滚无需考虑 schema 兼容
# 13. Bulkhead 在线程池、连接池、进程级隔离的实现差异。 A 线程池/连接池/进程级隔离把资源划分为独立池,隔离程度递增但资源开销也递增,某依赖故障不影响其他 ✓ 正确答案 B 线程池隔离是全局共享一个线程池 C 进程级隔离开销最小 D Bulkhead 与故障隔离无关
# 14. Shared Database 在微服务边界的反模式与适用场景。 A 共享数据库有利于服务独立演进 B Shared Database 让服务通过数据库强耦合、破坏服务边界,宜避免;只读/报表共享等少数场景可接受 ✓ 正确答案 C 共享数据库能提升服务隔离 D 微服务必须共享数据库
# 15. Shared Nothing 在云原生微服务的资源隔离与扩展优势。 A 各节点共享内存与存储 B Shared Nothing 让每个服务/节点拥有独立资源与数据边界,实现资源隔离与独立水平扩展 ✓ 正确答案 C Shared Nothing 无法故障隔离 D Shared Nothing 只能纵向扩展
# 16. 熔断器与超时的分工中超时只能限制等待而不能阻止后续请求,熔断如何实现快速失败保护下游? A 超时能阻止后续请求 B 二者职责完全相同 C 熔断只能限制单次等待 D 超时只限制单次等待,熔断在高失败率下断开后续请求并快速失败,保护下游 ✓ 正确答案
# 17. 舱壁隔离(Bulkhead)的粒度中线程池/信号量/进程级隔离各适合什么场景? A 信号量隔离会占用线程池线程 B 线程池隔离不能排队 C 信号量限并发、线程池独立线程支持排队、进程级强隔离,开销递增,按依赖耗时与隔离需求选择 ✓ 正确答案 D 进程级隔离开销最小
# 18. 韧性测试方法中故障注入(Chaos)、延迟注入与流量回放如何验证系统韧性? A 故障注入(Chaos)主动制造故障验证恢复,延迟注入验证慢依赖隔离,流量回放验证真实负载下的韧性 ✓ 正确答案 B 韧性测试只测正常路径 C 延迟注入无法验证熔断 D 流量回放只能在测试环境用假数据
# 19. 慢依赖的级联传播模型中一个慢接口会拖垮整个线程池,如何用“独立线程池+快速失败”隔离? A 共享线程池让慢依赖只影响自身 B 独立线程池无法隔离慢依赖 C 慢依赖不会拖垮线程池 D 一个慢依赖占满共享线程池会导致整个服务不可用,用独立线程池 + 超时熔断快速失败隔离 ✓ 正确答案
# 20. liveness 与 readiness 探针中两者分别决定重启与流量摘除,误配如何导致滚动发布卡死 A liveness 决定是否重启容器,readiness 决定是否把流量路由到 Pod;readiness 过严会让新 Pod 不得就绪导致滚动发布卡死 ✓ 正确答案 B liveness 决定摘流量,readiness 决定重启 C 两者完全相同 D readiness 失败会重启容器
# 21. 弹性伸缩与冷却期中扩容与缩容的指标选择、冷却时间如何避免抖动 A 扩容与缩容用同一指标且无冷却期 B 冷却期会加剧伸缩抖动 C 扩容用敏感指标、缩容用保守指标,冷却期防止刚扩又缩的抖动,配合滞回阈值稳定 ✓ 正确答案 D 缩容应比扩容更激进