现代架构模式

共 21 题
#

1. 管道-过滤器架构中过滤器如何通过管道组合,数据转换的粒度与并行性,与责任链/事件流的差异?

A 管道-过滤器与责任链结构完全一致
B 责任链中每个处理器都强制处理所有数据
C 事件流是同步、有状态的数据流管线
D 过滤器通过管道串联,每个过滤器都处理流过它的数据 ✓ 正确答案
#

2. 微服务 vs 单体 vs 模块化单体中业务复杂度、团队结构与部署频率如何影响架构选择?

A 模块化单体仍是单部署单元,但内部模块边界清晰,是微服务的过渡 ✓ 正确答案
B 微服务总是优于单体,任何规模都适用
C 单体适合多团队并行高频率独立部署
D 架构选择与团队结构无关
#

3. 架构评估中 ATAM 如何用质量属性场景(刺激-响应-度量)量化权衡,与架构评审的区别

A ATAM 用刺激-响应-度量场景量化质量属性,并分析权衡与风险 ✓ 正确答案
B 架构评审是基于场景与度量的量化方法
C ATAM 只关注性能,不关注其他质量属性
D ATAM 与架构评审完全相同
#

4. 微前端中应用拆分与集成方式(模块联邦/iframe),样式与状态隔离的边界及共享依赖策略

A 子应用之间必须共享全局状态,无法隔离
B iframe 集成性能最优且通信最方便
C 模块联邦在运行时共享模块,是主流的集成方式 ✓ 正确答案
D 微前端只能拆分成模块,不能独立部署
#

5. Serverless 的约束中函数粒度与冷启动延迟,状态外置(数据库/对象存储)与无状态设计如何影响架构?

A 函数是有状态的,可依赖进程内内存
B 状态应内置于函数,避免外置存储
C 函数粒度越细越好,无需考虑调用开销
D 冷启动延迟指首次调用初始化运行时的开销,可用预留并发缓解 ✓ 正确答案
#

6. Space-Based Architecture 中如何用内存数据网格(Hazelcast/GigaSpaces)实现弹性伸缩,与缓存+数据库架构的差异?

A 内存网格只是缓存层,数据库仍是唯一真相
B 数据分片存储在多个节点内存中,无单一数据库瓶颈,可弹性伸缩 ✓ 正确答案
C 所有数据都集中存储在一个中心节点
D 新增节点不会导致数据分片迁移
#

7. 整洁架构/六边形架构中依赖倒置如何让业务核心不依赖框架与数据库?

A 依赖方向由内层指向外层,外层不依赖内层
B 业务核心直接依赖数据库驱动
C 业务核心定义接口,外部适配器实现接口并依赖注入,核心不依赖框架数据库 ✓ 正确答案
D 框架代码必须被核心直接调用
#

8. 模块化单体与微服务中什么阶段拆分、团队规模与数据边界如何判断?

A 微服务间可共享同一数据库,方便数据访问
B 团队越小越适合微服务,团队越大越适合单体
C 模块化单体内部边界清晰,是拆成微服务前的过渡 ✓ 正确答案
D 应尽早拆成微服务,避免模块化单体
#

9. 整洁架构的依赖规则中依赖只能向内,框架与数据库如何成为可替换的外层?

A 框架与数据库是核心不可替换的部分
B 依赖应由内层指向外层,核心依赖框架
C 实体可以直接依赖 JPA 注解
D 依赖只能向内,内层不依赖外层,框架数据库成为可替换的外层 ✓ 正确答案
#

10. 模块化单体 vs 微服务中团队规模、部署频率与数据边界如何权衡?

A 大团队 + 高独立部署频率 + 数据边界清晰时,微服务更合适 ✓ 正确答案
B 小团队用微服务能降低运维成本
C 微服务间可以共享数据库,无需数据边界
D 部署频率与架构选择无关
#

11. 平台工程中内部开发者平台如何通过自助服务与黄金路径提升交付效率,与 DevOps 的关系

A 平台工程与 DevOps 完全对立
B 平台工程要求每个团队自建 DevOps 工具链
C 黄金路径是让开发者避开最佳实践
D IDP 通过自助服务与黄金路径,让开发者自助交付服务 ✓ 正确答案
#

12. Clean Architecture 的分层中实体、用例(use case)、接口适配器、框架四层的职责与依赖规则,测试如何受益?

A 框架层定义业务规则
B 实体依赖框架,用例依赖数据库
C 依赖方向由内层指向外层
D 依赖只能向内,核心只依赖接口,测试可用 mock 替换外部 ✓ 正确答案
#

13. 六边形(端口-适配器)架构中端口如何定义核心与外部世界的契约,驱动/被驱动适配器的分类与依赖注入的配合?

A 被驱动端口是核心暴露给外部的接口
B 核心直接依赖数据库适配器
C 端口定义核心与外部世界的契约,适配器实现端口,DI 注入实现 ✓ 正确答案
D 六边形架构不依赖注入
#

14. 整洁架构的依赖规则中领域层不能依赖基础设施,端口(interface)如何让数据库与框架可替换,测试如何受益?

A 领域层必须依赖 JPA 注解
B 领域层定义端口,基础设施实现端口,领域不依赖具体数据库 ✓ 正确答案
C 测试领域必须启动真实数据库
D 数据库是领域层不可替换的部分
#

15. 微内核架构的插件机制中核心系统与插件如何通过契约解耦,插件的注册、隔离与版本管理(如 OSGi/Eclipse)?

A 插件通过契约(扩展点)与核心解耦,核心定义接口插件实现 ✓ 正确答案
B 插件直接依赖核心内部实现
C 插件无法隔离,崩溃会拖垮核心
D 插件只能随核心一起编译部署
#

16. SOA 与微服务的演进中 ESB 集中治理 vs 去中心化通信,服务契约(WSDL/OpenAPI)与版本兼容如何管理?

A 微服务必须用 ESB 集中管理
B SOA 用 ESB 集中治理,微服务去中心化直接通信 ✓ 正确答案
C 服务契约演进不需要版本兼容
D 微服务共享单一数据库
#

17. 事件溯源与 CQRS 的组合中写模型与读模型的分离如何解决扩展性,复杂性代价在哪?

A 事件流无法重放重建读模型
B 读模型与写模型共享同一存储,保证强一致
C 读模型与写模型独立分离,读侧可独立扩展,但代价是复杂度与最终一致 ✓ 正确答案
D 该组合复杂度低,适合所有业务
#

18. 六边形/端口-适配器架构中核心领域如何通过端口隔离基础设施依赖?

A 核心领域只依赖端口接口,基础设施作为适配器实现,实现依赖倒置 ✓ 正确答案
B 核心领域直接依赖数据库驱动
C 端口是适配器实现的具体类
D 基础设施必须嵌入核心领域
#

19. 微内核(插件化)架构中核心系统与插件的契约如何设计,为什么插件隔离与版本管理是最大挑战?

A 插件没有版本,无需版本管理
B 核心直接继承插件实现
C 插件无需隔离,可共享所有类
D 核心定义扩展点契约,插件实现并动态加载,插件隔离与版本管理是最大挑战 ✓ 正确答案
#

20. ADR 中架构决策记录何时写、记录哪些内容,如何让决策上下文可追溯

A ADR 只记录结果,不记录原因
B ADR 记录重大架构决策的背景、决策、备选与后果,便于追溯 ✓ 正确答案
C 所有细小代码改动都要写 ADR
D ADR 写完后不可修改状态
#

21. 架构坏味道中循环依赖、上帝服务与分布式单体如何识别,为什么比代码坏味道更难治理

A 上帝服务是指职责单一的小服务
B 循环依赖不影响独立部署
C 架构坏味道可单模块局部重构,很容易治理
D 分布式单体是名义上微服务但实际共享数据库强耦合,难以独立扩展 ✓ 正确答案