# 1. Dead End 在引入难以替换的技术栈的后果。 A Dead End 一定发生在最新技术栈上 B Dead End 指技术栈非常成熟可靠 C Dead End 只影响开发速度不影响迁移 D 在不可替换技术栈上投入大量开发,导致后期迁移成本巨大,是 Dead End 反模式 ✓ 正确答案
# 2. Monolithic Persistence 在关系数据库承担队列、文档、图、时序的滥用。 A 关系数据库适合所有数据形态 B 用关系数据库承受队列、时序、文档、图等所有职责是反模式,应改用多语言持久化按数据形态选存储 ✓ 正确答案 C 用多种数据库是反模式 D 队列消息应存关系库
# 3. Cargo Cult 在不理解原理下照搬实践的工程问题。 A 照搬实践一定正确 B 照搬实践但不懂原理,导致实践不适用与形式主义,是 Cargo Cult 反模式 ✓ 正确答案 C Cargo Cult 只涉及代码,不涉及架构 D Cargo Cult 指代码写得混乱
# 4. Chatty I/O 在远程调用过细粒度的网络往返。 A 细粒度的远程调用越多越好,便于解耦 B Chatty I/O 只影响前端 C 网络往返次数不影响性能 D Chatty I/O 是大量细粒度远程调用造成的网络往返过多,应通过聚合、批量化、粗粒度接口减少往返 ✓ 正确答案
# 5. Extraneous Fetching 在 SELECT * 或一次性读取不必要数据的工程影响。 A SELECT * 读取所有列是高效做法 B Extraneous Fetching 读取不必要数据,浪费 IO 带宽与内存,应只取所需列、分页、避免 SELECT * ✓ 正确答案 C 读取多余数据不影响性能 D 大字段应全量读取
# 6. Improper Instantiation of Instances 在 new 操作在频繁路径上的 GC 压力。 A 热路径上频繁 new 对象会加剧 GC 压力,应对象复用、减少临时对象 ✓ 正确答案 B 热路径上 new 对象无性能影响 C GC 压力与对象创建无关 D 应尽量多 new 对象池化
# 7. Lava Flow 在遗留系统死代码无法删除的反模式。 A Lava Flow 指代码整洁清晰 B 死代码有益于系统健壮性 C 遗留系统的死代码堆积且无人敢删,是 Lava Flow 反模式,应识别后安全清理 ✓ 正确答案 D 死代码应保留以防万一
# 8. Retry Storm 在失败时所有客户端同时重试的反模式。 A 重试越多越稳定 B 所有客户端同时重试有助于恢复 C 所有客户端同时重试会放大故障,应指数退避 + 抖动错开、限制次数、熔断兜底 ✓ 正确答案 D Retry Storm 与重试策略无关
# 9. Spaghetti Code 在 goto、回调地狱、Promise 嵌套的代码可读性。 A 深层嵌套提升可读性 B 回调地狱、深层 Promise 嵌套、goto 导致控制流混乱,是可读性差的 Spaghetti Code,应用 async/await、分层重构 ✓ 正确答案 C Spaghetti Code 指代码非常简洁 D 回调地狱是良好实践
# 10. Vendor Lock-In 在过度依赖云厂商专有服务的迁移代价。 A 专有服务迁移成本低 B 过度依赖云厂商专有服务导致迁移代价巨大,应多用开源/标准技术并预留适配层 ✓ 正确答案 C Vendor Lock-In 指使用开源软件 D 厂商专有服务无需迁移
# 11. Improper Cache Sizing 在缓存过小(频繁失效)与过大(浪费资源)的工程取舍。 A 缓存过小命中率低、频繁失效回源,过大浪费资源,应按访问分布与资源预算平衡容量 ✓ 正确答案 B 缓存越大越好,无需考虑成本 C 缓存容量与命中率无关 D 缓存应越小越好
# 12. Synchronous I/O 在同步阻塞 I/O 在高并发请求下的线程池耗尽。 A 异步 I/O 会降低并发 B 阻塞 I/O 在高并发下无问题 C 线程池耗尽不影响高并发 D 同步阻塞 I/O 在高并发下让线程阻塞等待,导致线程池耗尽,应改用异步/非阻塞 I/O ✓ 正确答案
# 13. Accumulated 技术债在交付压力下的不可逆债务。 A 技术债只在大型系统出现 B 技术债累积越多交付越快 C 技术债无需管理 D 交付压力下不断累积技术债会形成不可逆债务,应识别登记、设上限、定期偿还 ✓ 正确答案
# 14. Big Ball of Mud 在无结构、随意生长系统的识别。 A 无清晰分层、依赖混乱、随意生长的系统是 Big Ball of Mud,应分层模块化并渐进重构 ✓ 正确答案 B 无结构系统易于维护 C Big Ball of Mud 指代码非常结构化 D 依赖越乱越好
# 15. Busy Frontend 在前端加载所有数据、阻塞渲染的反模式。 A Busy Frontend 让前端加载所有数据、阻塞渲染,应后端聚合裁剪、分页懒加载、异步加载 ✓ 正确答案 B 前端应加载所有数据并处理,后端只出接口 C 大体积 JS 阻塞渲染无影响 D 前端逻辑越多越好
# 16. Distributed Monolith 在表面微服务但内部强耦合的反模式。 A Distributed Monolith 是良好的微服务实践 B 共享数据库有利于微服务独立 C 表面微服务但共享数据库、强耦合,既无微服务优势又增复杂度,是 Distributed Monolith ✓ 正确答案 D 微服务应共享领域模型
# 17. Mega Service 在过度聚合的微服务(反向微服务)。 A 微服务应承载所有职责 B 微服务越大越好 C Mega Service 是良好微服务 D 一个微服务承载过多职责、规模巨大,是 Mega Service,应按业务域拆分 ✓ 正确答案
# 18. NIH(Not Invented Here)在拒绝使用成熟库的工程问题。 A 重复造轮子有益 B 自研所有东西质量更高 C NIH 指过度使用第三方库 D 拒绝成熟库、自己造轮子,质量差、维护成本高,是 NIH 反模式,应优先采用成熟库 ✓ 正确答案
# 19. No Caching 在重复读相同数据的性能浪费。 A 重复读相同数据却不缓存,造成 DB 压力与延迟,应加入合理缓存 ✓ 正确答案 B 缓存没有必要 C 每次查库最有效率 D No Caching 指缓存过多
# 20. No-Fault Tolerance 在无重试、熔断、降级的单点故障设计。 A 无需容错机制 B 单点故障不影响系统 C 无重试、熔断、降级、冗余,单点故障导致整体不可用,是 No-Fault Tolerance,应引入超时重试熔断降级隔离与冗余 ✓ 正确答案 D 冗余副本浪费资源应避免