ARTICLE · 1112927
系统架构师模拟题-综合知识预测-上篇:软件架构设计与架构评估
长时间对着电脑刷真题,确实挺累的,学一会就想玩一玩手机,工作之后确实不如上学期间自控力强。
根据我自己之前的学习自律经验来看,通过手机来刷软考真题与模拟题,也是能够静下心学习的,可以窝在沙发中舒服的看下面的题目了。
先认真读懂题目,给出自己的答案,再看解析。有时间可以多看几次,掌握解析里给的是判断依据。
01
第 1 题
在软件架构的描述中,用于描述系统在运行时的组织结构、进程与线程交互、并发与同步关系的视图是( )。
A. 逻辑视图
B. 开发视图
C. 进程视图
D. 物理视图
答案:C
解析:4+1 视图模型是架构描述的基础考点,五个视图的分工必须能一一对应。逻辑视图描述功能需求,即系统提供哪些服务,通常用类图、对象图表达;进程视图也叫运行视图,关注并发、同步、进程与线程的组织,以及性能与可用性这类运行期质量属性;开发视图面向程序员,描述代码的模块划分与包结构,关注可维护性与可复用性;物理视图描述软件到硬件的映射与部署拓扑,关注可伸缩性与吞吐量;场景视图用用例把前四个视图串起来,验证架构是否满足需求。题干中的运行时、进程线程、并发同步三个词都指向进程视图,故选 C。
第 2 题
质量属性场景由六个要素构成,其中用于说明响应结果的度量方式的要素是( )。
A. 刺激源
B. 响应度量
C. 环境
D. 制品
答案:B
解析:质量属性场景的六要素是刺激源、刺激、环境、制品、响应、响应度量。刺激源是产生刺激的实体,比如用户或系统部件;刺激是到达系统时需要考虑的条件;环境是刺激发生的条件,比如系统过载或正常运行;制品是被刺激的部分,比如整个系统或某个模块;响应是刺激到达后所采取的行动;响应度量是对响应的量化描述,例如响应时间不超过 2 秒、可用性达到百分之九十九点九九。题干问度量方式,只能落在响应度量,答案 B。最容易混的是响应与响应度量:响应是做了什么,响应度量是做到什么程度,考试常把两者互换来设干扰项。
第 3 题
以下架构风格中,构件之间通过显式调用并等待返回结果进行交互,且不允许构件主动向调用者推送数据的是( )。
A. 隐式调用风格
B. 管道过滤器风格
C. 显式调用风格
D. 独立构件风格
答案:C
解析:Garlan 与 Shaw 把架构风格分为五类:数据流风格,含批处理与管道过滤器;调用返回风格,含主程序子程序、面向对象、层次结构;独立构件风格,含进程通信与事件驱动;虚拟机风格,含解释器与规则系统;仓库风格,含数据库系统、超文本、黑板系统。其中调用返回风格的特征就是显式调用、同步等待返回,调用者必须知道被调用者的身份,被调用者无法反向推送,故选 C。隐式调用也称事件驱动,构件不直接调用,而是发布事件、由注册者异步响应,与题干显式调用并等待返回相反,故排除 A。
第 4 题
管道过滤器风格的两个显著优点是( )。
A. 支持交互式应用,便于维护
B. 良好的隐蔽性与高可复用性
C. 便于进行功能扩展与性能优化
D. 支持并发执行与事务处理
答案:B
解析:管道过滤器的核心特征是每个过滤器独立处理数据、通过管道传递,过滤器之间不共享状态、不互相知晓。由此带来的两个经典优点是隐蔽性,即过滤器是黑盒、不关心上下游是谁,以及高可复用性,即同一个过滤器可组合进不同流程。它的缺点同样固定:不适合交互式应用,因为数据要一次处理完才输出;性能受管道传输与数据转换拖累;难以支持事务性。C 项便于功能扩展属于面向对象与插件式风格的优势,D 项支持并发与事务更是与管道过滤器的短板相反,故排除。这类题考的是风格与优缺点的对应,答题时先锁定风格特征,再判断选项是否与之相符。
第 5 题
在 ATAM 架构评估方法中,用于描述多个质量属性之间相互影响的分析活动是( )。
A. 场景生成
B. 属性模型构造
C. 敏感点与权衡点分析
D. 风险与非风险识别
答案:C
解析:ATAM 的四个分析步骤是场景与需求收集、架构视图与场景描述、属性模型构造与分析、敏感点与权衡点分析。敏感点是影响单个质量属性的决策;权衡点是同时影响多个质量属性、且属性之间此消彼长的决策,例如加密强度提升会同时提高安全性、降低性能。题干明确问多个质量属性之间的相互影响,指向权衡点,故选 C。影响一个属性叫敏感点,影响多个且有冲突叫权衡点,这个区分是高频考点。A 项场景生成是把需求转成可分析场景;B 项属性模型构造是建立质量属性与架构决策的映射模型;D 项风险识别是对决策可能带来的负面影响归类,都与相互影响这一表述无关。
第 6 题
某系统需要在运行期动态替换数据库连接池实现而不重新编译,最适合采用的架构策略是( )。
A. 抽象接口,把实现类名写入配置文件
B. 引入继承层次,由子类覆写方法
C. 使用静态链接库替换实现
D. 用条件编译开关控制实现分支
答案:A
解析:题干的关键约束是运行期动态替换且不重新编译。要实现这一点,必须做到依赖倒置:上层模块依赖抽象接口,具体实现通过反射或工厂在运行时根据配置加载,也就是 A 项描述的做法。B 项继承在编译期就绑定了父子关系,换实现仍需改代码并重新编译;C 项静态库意味着链接期绑定;D 项条件编译更是在编译期决定,换实现必须重编。这三项都违反不重新编译这一前提。这类题判断方法很简单:凡是题干出现运行期、不重新编译、动态替换,答案必然指向配置化加反射或插件化机制。
第 7 题
下列关于分层架构的叙述中,正确的是( )。
A. 每层只能调用相邻的下一层,不能跨层调用
B. 分层的主要目的是提高系统的运行效率
C. 上层可以直接访问数据库,以提升响应速度
D. 层内高耦合、层间低耦合是分层设计的目标
答案:A
解析:严格分层架构中,每层只能与相邻的下一层交互、不能跨层,这是分层的核心规则,也是它带来可替换性的前提,A 正确。B 项错误,分层带来的是可维护性与可替换性提升,代价恰恰是性能下降,因为数据要逐层传递、多次转换。C 项错误,上层跳过中间层直接访问数据库会破坏层的封装,使中间层失去意义。D 项表述反了,正确说法是层内高内聚、层间低耦合,题干把内聚偷换成了耦合,这是常见的文字陷阱。答这类题要逐词核对,尤其当选项读起来很顺时。
第 8 题
黑板系统架构风格最适用于( )。
A. 数据处理流程固定的批处理任务
B. 无确定求解算法的问题,如信号处理与模式识别
C. 实时性要求极高的控制系统
D. 以数据持久化为核心的事务系统
答案:B
解析:黑板风格由三部分组成:黑板是共享数据区,存放当前状态;知识源是各自独立的求解模块;控制决定下一步激活哪个知识源。它适用于问题没有确定解法、需要多领域知识协作逐步逼近答案的场景,典型应用是信号处理、模式识别、语音识别、图像理解。A 项流程固定属于批处理或管道过滤器;C 项实时控制系统更适合事件驱动或实时调度架构;D 项事务系统属于数据库仓库风格。判断黑板风格只需记住一点:求解过程不确定,依赖共享状态逐步推进。
第 9 题
软件架构评估中,SAAM 方法与 ATAM 方法的主要区别是( )。
A. SAAM 只关注可修改性,ATAM 关注所有质量属性
B. SAAM 面向已有架构的描述,ATAM 面向架构的度量
C. SAAM 用于架构评审,ATAM 用于架构设计
D. SAAM 不需要场景,ATAM 必须构造场景
答案:A
解析:SAAM 是最早的架构评估方法,最初只针对可修改性,后来才扩展到其他属性,它以场景为核心手段来评价架构。ATAM 在 SAAM 基础上发展而来,最大进步是把评估范围扩展到多个质量属性,并引入敏感点、权衡点、风险与非风险等概念,能揭示属性之间的取舍关系,A 正确。B 项的描述与度量不是两种方法的实质差异;C 项两者都既可用于评审也可用于设计阶段的评估;D 项错误,SAAM 同样以场景为基础。答这类对比题要抓住方法演进的主线:SAAM 单属性、ATAM 多属性加重权衡、CBAM 再加成本效益。
第 10 题
在架构设计中,提高可用性常采用的冗余策略是( )。
A. 主动冗余与被动冗余
B. 引入缓存与索引
C. 分层与模块化
D. 使用消息队列异步解耦
答案:A
解析:可用性的核心战术分三类:错误检测,含心跳、Ping 与 Echo、异常监控;错误恢复,含冗余、备件、检查点回滚、降级;错误预防,含移除故障源、事务、进程监控。冗余是恢复战术的主力,按备用组件的工作状态分为主动冗余,即双机热备、备用件同步运行、切换快但成本高,以及被动冗余,即冷备或温备、切换慢但成本低,A 正确。B 项缓存与索引提高的是性能;C 项分层模块化提高的是可修改性;D 项异步解耦提高的是可伸缩性与性能。答质量属性战术题的方法是先锁定题干问的属性,再筛选选项,每个选项往往对应一个不同属性,这是命题的固定套路。

第 11 题
某电商系统在大促期间需要支撑平时 10 倍的并发量,且在流量下降后能快速缩容以节省成本,这主要体现的质量属性是( )。
A. 可用性
B. 可伸缩性
C. 互操作性
D. 安全性
答案:B
解析:可伸缩性刻画的是系统在负载增长时通过增加资源维持服务质量的能力,包含两个方向:向上扩容即增加单机资源,向外扩展即增加节点,此外还有缩容能力。题干中 10 倍并发与快速缩容都是伸缩性的典型指标,故选 B。可用性关注的是系统不中断运行的能力,指标是正常运行时间比例;互操作性关注两个系统交换信息与协同工作的能力;安全性关注抵御攻击与数据保护。注意伸缩性与性能容易被混淆:性能是相同资源下的响应水平,伸缩性是资源增加后能否线性提升吞吐。题干强调支撑 10 倍并发,讲的是随规模变化的适应能力,属伸缩性。
第 12 题
面向服务的架构与微服务架构的主要区别是( )。
A. 前者使用总线通信,后者强调轻量级通信与独立部署
B. 前者不支持服务复用,后者支持
C. 前者只能用于企业内部,后者只能用于互联网
D. 前者的服务粒度比后者更细
答案:A
解析:面向服务的架构典型实现是企业服务总线,总线承担协议转换、路由、编排等职责,服务通常粒度较粗、共享企业级基础设施,部署上往往仍为集中式。微服务架构主张去中心化的治理,服务粒度细、围绕业务能力划分、每个服务独立部署与独立数据存储、通过轻量协议通信,A 正确。B 项错误,服务复用是两者共同追求;C 项用适用领域来区分是伪标准;D 项把粒度关系说反了,微服务的粒度更细。答对比题优先找技术实现层面的实质差异,凡是只能用于某领域、谁比谁更先进这类表述,基本可判为干扰项。
第 13 题
在微服务架构中,用于解决跨服务数据一致性问题的常用方案是( )。
A. 两阶段提交
B. 本地事务加锁
C. 事件驱动的最终一致性,如 Saga 或事务消息
D. 提高数据库隔离级别
答案:C
解析:微服务要求每个服务独立拥有数据存储,跨服务的强一致事务难以实现且代价高。主流做法是放弃强一致、转向最终一致:Saga 把长事务拆成一串本地事务,每步配一个补偿操作,失败时逆序补偿;事务消息通过消息中间件保证事件可靠投递,下游消费后达到一致。两者都属事件驱动的最终一致性方案,C 正确。A 项两阶段提交是强一致方案,存在同步阻塞、协调者单点、性能差的问题,在微服务跨库场景中很少采用;B 项本地事务只能保证单库范围;D 项提高隔离级别解决的是同库内的并发问题,与跨服务无关。
第 14 题
某系统要求在新增业务功能时不修改已有代码,仅通过增加新模块实现,这符合的设计原则是( )。
A. 里氏替换原则
B. 开闭原则
C. 接口隔离原则
D. 依赖倒置原则
答案:B
解析:开闭原则的定义是软件实体应对扩展开放、对修改关闭,手段是抽象化与多态,题干的两个条件完全对应,故选 B。里氏替换原则说的是子类型必须能够替换掉父类型且不改变程序正确性,关注继承的正确使用;接口隔离原则要求客户端不应依赖它不需要的接口,主张把臃肿接口拆小;依赖倒置原则要求高层模块不依赖低层模块,两者都依赖抽象。这四个原则都出自面向对象设计原则,但各自的约束点不同。复习时可以把每个原则压缩成一句话记:开闭管扩展、里氏管继承、隔离管接口、倒置管依赖。
第 15 题
某系统需要一个既能作为整体调用、又能组合成树形结构来表示部分与整体层次的设计模式是( )。
A. 组合模式
B. 装饰器模式
C. 外观模式
D. 桥接模式
答案:A
解析:组合模式把对象组合成树形结构以表示部分与整体的层次,客户端对单个对象和组合对象的调用方式一致,典型例子是文件系统的目录与文件。装饰器模式用于动态给对象添加职责,强调功能叠加,不改变接口;外观模式为子系统提供统一的高层接口,简化调用;桥接模式把抽象部分与实现部分分离,使它们可以独立变化。四个选项都是结构型模式,区分点在于意图:组合管树形结构,装饰管动态增强,外观管简化接口,桥接管多维度独立变化。

第 16 题
下列关于负载均衡算法的描述,错误的是( )。
A. 轮询算法适合各服务器性能相近的场景
B. 最少连接算法把请求发给当前连接数最少的服务器
C. 源地址哈希算法可以保证同一用户的会话落到同一服务器
D. 加权轮询算法中各服务器的权重必须相同
答案:D
解析:加权轮询的意义恰恰在于权重可以不同,通过给性能强的机器分配更大权重来提高整体吞吐,D 的表述与加权二字直接矛盾,为错误项。A 项正确,轮询假设各节点性能接近,否则会让慢节点积压。B 项是最少连接算法的准确定义,它按当前活动连接数分配,适应请求耗时差异大的场景。C 项正确,源地址哈希把请求源的 IP 或会话标识映射到固定节点,能实现会话保持,代价是节点增减时会有映射迁移。该题考的是哪一项说反了,答题时优先找与算法名称字面矛盾的选项。
第 17 题
在云原生架构中,用于把应用及其依赖打包成标准化单元、实现一次构建到处运行的技术是( )。
A. 虚拟机
B. 容器
C. 中间件
D. 虚拟桌面
答案:B
解析:容器把应用代码与运行时依赖一起打包成镜像,共享宿主机内核,因此启动快、体积小、环境一致性好,一次构建到处运行是它的标志性口号,B 正确。虚拟机虽然也能隔离环境,但它需要完整的客户操作系统,资源开销大、启动慢、镜像体积以 GB 计,不被称为标准化单元。中间件是提供通用服务的软件层,不是打包单元。虚拟桌面是桌面交付方案,与应用打包无关。补充一个高频考点:容器共享宿主内核,隔离性弱于虚拟机,安全性也相对低,这是两者核心区别。
第 18 题
在容器编排系统中,用于保证一组容器副本数始终符合期望值的对象是( )。
A. 服务对象
B. 副本集对象
C. 配置映射对象
D. 入口对象
答案:B
解析:副本集对象的职责就是维持副本数量,它通过控制器循环不断对比期望状态与实际状态,发现副本少于期望值就创建,多于就删除,B 正确。服务对象为一组容器提供固定的访问入口与负载均衡,解决容器地址变化的问题;配置映射对象用于存放配置数据,实现配置与镜像分离;入口对象是集群的七层入口,负责 HTTP 路由与域名转发。这四个对象的职责是容器编排部分的固定考点,可以按副本数、访问入口、配置、外网路由四个关键词一一对应记忆。更高一层的部署对象管理副本集,提供滚动更新与回滚能力。
第 19 题
领域驱动设计中,用于承载业务规则、保证领域概念一致性的核心对象是( )。
A. 数据传输对象
B. 聚合根
C. 视图模型
D. 数据访问对象
答案:B
解析:领域驱动设计的核心概念包括实体、值对象、聚合与聚合根、领域服务、仓储、限界上下文。聚合是一组相关对象的集合,聚合根是这个集合的入口,外部只能通过聚合根访问内部对象,由它负责保证聚合内的业务规则与数据一致性,B 正确。A 项数据传输对象与 C 项视图模型都只用于跨层或跨服务传递数据,不含业务规则;D 项数据访问对象封装持久化操作,属于基础设施层。题干中的承载业务规则与保证一致性是聚合根的定义性表述,据此可直接锁定答案。
第 20 题
在系统性能优化中,缓存带来的一致性问题最典型的解决方案是( )。
A. 先更新数据库再删除缓存,并对删除失败做补偿重试
B. 先删除缓存再更新数据库
C. 每次写入同时更新缓存与数据库,且不设过期时间
D. 关闭缓存以保证强一致
答案:A
解析:缓存与数据库双写的一致性问题,主流方案是先更新数据库、再删除缓存而不是更新缓存,并为删除失败设置补偿重试或借助消息队列保证最终删除成功,必要时再加一次延迟删除以覆盖并发读回填的旧值,A 正确。B 项先删缓存再更新数据库存在窗口期:删除后、更新前的并发读会把旧值重新塞回缓存,导致长期不一致,这是被反复考的反例。C 项不设过期时间会让不一致永久存在。D 项牺牲性能换取强一致,对高并发场景不可取。记住一个判断标准:缓存写操作应当删缓存而不是更新缓存。