软考系统架构师——真题错题整理
目录
选择
模拟卷
- Flash(闪存)用来代替ROM,而不是代替RAM(主存)。
- 数据库完整性约束
- 参照完整性:外键
- 实体完整性:主键
- 用户定义完整性:数据满足语义要求。
- MySQL中,“Not in” 是一个条件运算符,“Not Exist” 是一个子查询的条件。
- 传输层提供的是端口寻址能力。
- 在嵌入式系统开发中,当宿主机与目标机的机器指令不同时,需要在宿主机上用交叉编译器来生成目标机的可执行代码。
- 在结构化分析方法中,
- 功能模型——DFD
- 行为模型——状态转换图
- 数据模型——E-R图
- 可行性分析不包括分析现有系统存在的问题,评价项目的无形收益属于经济可行性分析。
- 逆向工程(Reverse Engineering):可以将软件某种形式的描述转换为更高级的抽象表现形式。
- 高水平低价值——集成(提升整体水平),低水平高价值——继承(子类提高水平)。
- 桥接模式(结构型):将类的抽象部分和实现部分分离,使它们可以独立变化。
- 某人持有盗版软件,但不知道软件是盗版的,软件提供者不能证明软件有合法来源,那么提供者应承担法律责任,持有者不承担。
2018年
- 在客户机上运行 nslookup 查询某服务器名称时能解析出 IP 地址,查询 IP 地址时却不能解析出服务器名称,解决这一问题的方法是:为该服务器创建PTR记录(反向记录,通过IP查询域名)。
- 系统工程利用计算机作为工具,对系统结构、元素、信息和反馈等进行分析,以达到最优规划、最优设计、最优管理和最优控制的目的。霍尔三维结构以时间维、逻辑维、知识维组成。在时间维上的研制阶段会做出研制方案及生产计划。
- 软件开发环境应支持多种集成机制。其中,环境信息库用于存储与系统开发有关的信息;过程控制与消息服务器是实现过程集成和控制集成的基础。
- 软件结构设计的主要目标是开发一个模块化的程序结构,并表示出模块间的控制关系。
- 软化水平式重用的典型:标准函数库。
- 构件组装成软件系统的过程分为三个层次:定制、集成和扩展。
- ATAM四个活动领域:场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中。
- SAAM的主要输入是:问题描述、需求声明和体系结构描述。
- 在仓库风格中,中央数据结构说明当前状态,独立构件在中央数据存储上执行。
- 解释器风格:e.g. 玩家自行创建地图,定义游戏对象的行为和对象之间的关系。
- 数字签名生成消息摘要的目的是防止篡改,对摘要进行加密的目的是防止抵赖
- Legacy database 遗留数据库
- Hierarchical database 层次数据库(通过指针相互关联的记录的集合)
- referential integrity 引用完整性
2019年
- 数据库的安全机制中,通过提供存储过程供第三方开发人员调用进行数据更新,从而保证数据库的关系模式不被第三方所获取。
- 全局概念模式:定义分布式数据库中数据的整体逻辑结构,使得数据使用方便,如同没有分布一样。
- 软件概要设计将软件需求转化为软件设计的数据结构和软件的系统结构。
- 软件结构化设计包括架构设计、接口设计、数据设计、过程设计等任务。
- 基于构件等软件开发中,构件分类方法有三类:
- 关键字分类法:根据领域分析的结果将应用领域的概念按照从抽象到具体的顺序逐次分解为树型或有向无回路图结构。
- 刻面分类法:利用Facet(刻面),描述构件执行的功能、被操作的数据、构件应用的语境或任意其他特征。
- 超文本方法:基于全文检索技术,使得检索者在阅读文档过程中可以按照人类的联想思维方式任意跳转到包含相关概念或构件的文档。
- 在逆向工程导出信息的四个抽象层次中
- 实现级
- 结构级包括反映程序各部分之间相互依赖关系的信息;
- 功能级包括反映程序功能及程序段之间关系的信息;
- 领域级
- 软件性能测试中,强度测试用于测试在限定的系统资源下考察软件系统极限运行的情况,容量测试可用于测试系统同时处理的在线最大用户数量。
- MIME:扩展了电子邮件标准,但是不能保障安全性。
- Normalization 规范化
- third normal form 第三范式
2020年
- 实时操作系统中,对于来自外部的事件必须在被控对象允许的时间范围内进行处理。
- 微内核有统一的接口,在用户态和核心态之间无需进程识别,可伸缩性、可移植性、实时性好,可靠性高,支持分布式系统,但是进程间通信的开销大,性能不高。
- 🌟
/etc/resolv.conf
是DNS的配置文件路径。 - 可视化监控工具有:Windows的Perfmon
- 软件设计包括4个活动:数据设计、软件结构设计、人机界面设计、过程设计
- 信息隐蔽可以提高软件的可修改性、可测试性和可移植性。
- 可修改的构件是指可以进行版本替换并增加构件新功能,适应性构件是指处理了不兼容性、资源冲突等。
- 中间件的基本功能包括:
- 为客户端和服务器之间提供连接和通信
- 提供交易管理机制保证交易的一致性
- 提供应用的负载均衡和高可用性
- 螺旋模型将整个开发流程分为目标设定、风险分析、开发和有效性验证、评审四个部分。
- 关于自动化测试脚本分为5种结构
- 线性脚本:手动测试
- 结构化脚本:具有函数调用功能
- 共享脚本:可以被多个测试用例使用
- 数据驱动脚本:将测试输入存储在独立的数据文件中,而不是脚本中
- 关键字驱动脚本:提供测试用例的描述,即可生成测试用例
- 展示功能组织的静态视角能判断质量特性,展示并发行为的动态视角能判断系统的行为特性。选择特定的视角或视图也就是逻辑视图(记录设计元素的功能和概念接口)、进程视图、实现视图和配置视图。
- 提高加密级别可以提高安全性,但是会影响性能,如果某个机密消息的处理有严格的时间要求,则加密级别可能就会成为一个权衡点。
- 三层C/S架构相比二层C/S架构,增加了一个应用服务器,应用功能分成3部分:表示层、功能层、数据层。
- 设计模式按目的可以分为创建型、结构型和行为型,按范围可以分为类设计模式和对象设计模式。
- 建造者模式(Builder)将复杂对象的构建与其表示相分离,这样相同的构造过程可以创建不同的对象。
- 原型模式(Prototype)允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象。
- Kerberos是一个用于鉴定身份的协议,采取对称密钥加密,不需要向CA申请票据。
- proposal 建议
2021年
- 同一实体在不同ER图中属性个数和排列次数不同属于结构冲突。
- AI芯片的关键特征有:新型的计算范式、训练和推断、大数据处理能力、可重构的能力
- SDN的网络架构包括应用层、控制层、转发层,不包含逻辑层
- 企业数字化转型的五个发展阶段依次是:初始级、单元级、流程级、网络级、生态级。
- 信息化需求三个层次:战略需求、运作需求和技术需求。
- 开发软件不需要国家正式批准。
- 产品配置是文档、计算机程序、部件及数据的集合
- 需求管理的主要活动包括:变更控制、版本控制、需求跟踪、需求状态跟踪。
- 需求跟踪:目的是建立与维护“需求-设计-编程-测试”之间的一致性。
- 传统的软件生命周期方法学把软件生命周期划分为:定义、开发、运行、维护。
- 功能内聚的内聚性最强。
- PAD图:问题分析图,用二维树型结构来表示程序的控制流,常用作详细设计工具,不属于UML模型。
- 构件的封装比类更为严格,构件仅向外部开放接口,其中的任何属性都不对外开放,我们只对构件有使用权而没有修改权。
- 物联网属于层次型结构,分为感知层、网络层和应用层。
- 在架构评估中,场景是从利益相关者的角度对与系统交互的描述。
- 改编、翻译、注释、整理作品的著作权属于改编、翻译、注释、整理人。
- presentation 表示层
2022年
- 最短移臂调度查看顺序:柱面、扇区、磁头
- AI芯片的技术架构包括:GPU、FGPA、ASIC
- 邮件接收协议 POP3 ,端口号 110;邮件发送协议 SMTP,端口号 25;交互式邮件存取协议IMAP,端口号143。
- 数据管理能力成熟度评估模型(DCMM)划分了8个能力域:数据战略、数据治理、数据架构、数据标准、数据质量、数据安全、数据应用和数据生存周期。
- 信息安全系统包含3类措施:技术方面的安全措施、管理方面的安全措施、相应的政策法律。
- CMMI软件过程四个层次自上而下为:顶层方针、过程文件、规程文件、模板类文件(checklist)
- 信息建模的基本工具是ER图(实体联系图)
- 需求抽取(获取)通常是一个迭代过程。
- 软件配置管理工具的常见功能包括版本控制、变更管理、配置状态管理、访问控制和安全控制。
- 在UML2.0中,顺序图用来描述对象之间的消息交互,其中循环、选择等复杂交互使用序列片段表示,对象之间的消息类型包括:同步消息、异步消息、返回消息、参与者创建消息、参与者销毁消息。
- 在构件的定义中,接口是一个已命名的一组操作的集合。
- EJB、COM+适用于应用服务器,ASP、JSP、PHP、Servlet适用于Web服务器。
- EJB是企业级Java应用容器,COM+是微软公司的应用容器
- 在黑盒测试中,判定表方法最适合描述在多个逻辑条件取值组合锁构成的复杂情况下,分别要执行哪些不同的动作。
- 技术集成,业务继承。
- “4+1”模型体现了关注点分离。
- ABSD自顶向下、递归细化,直到能产生类和软件代码。
- 基于规则的系统包括规则集、规则解释器、规则/数据选择器、工作内存,一般用在人工智能领域和决策支持系统(DSS)中。
- 在软件架构复用中,资产复用是指在开发中,只要发现有可复用的资产,就对其进行复用。
- 软件复用过程的主要阶段包括:构造/获取可复用的软件资产、管理可复用资产和使用可复用资产。
- 质量属性场景的六部分:刺激源、刺激(易用性)、环境、制品、响应和响应度量。
- 效用树ATAM从根部到叶子结点依次为树根、质量属性、属性分类、质量属性场景。
- 在系统安全性分析时,可控性保证对信息的传播及内容具有控制的能力。
- Wifi认证方式的安全性排序从低到高:
- WEP:RSA加密
- WPA:TKIP加密
- WPA2:AES加密
- maintain 维护
案例
架构评估
- 风险点:架构设计中潜在的、存在问题的架构决策所带来的隐患;
- 敏感点:为了实现某种特定的质量属性,一个或多个系统组件所具有的特性;
- 权衡点:影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
过分服务化拆分的问题
- 发布与维护问题:强行拆分耦合度高、代码量少的模块,造成一次性的发布需要拆分为多个模块来发布和维护。
- 数据依赖问题:多个服务的数据库是共享的,数据的变化就会被扇出到多个服务中。
- 性能问题:本地调用变成了分布式调用,响应时间变长,整个服务器链路性能下降。
- 维护问题:过小的拆分粒度会导致过多的微服务数量,导致微服务之间的关系变得复杂而庞大,让维护变得复杂。
TCP和UDP比较
- TCP在IP协议提供的不可靠服务的基础上,采用重发技术,为应用程序提供了可靠、面向连接、全双工的数据传输服务。TCP协议一般用于传输数据量比较少,且对可靠性要求高的场合。
- UDP是一种不可靠、无连接的协议,可以保证应用程序进程间的通信,它的错误检测功能较弱,适合于实时性要求高的场景。
瘦客户端C/S能满足什么需求?
操作性需求、文化需求。
分布式数据库缓存
指的是在高并发环境下,为了减轻数据库压力和提高系统响应时间,在数据库系统和应用系统之间增加的独立缓存系统。
Redis数据同步方案
- 读:读Redis,如果数据不存在,从MySQL中读,并将读区后的数据值写入Redis
- 写:先写MySQL,写成功后,更新Redis缓存
Redis 切片方案
- 客户端分片:分区逻辑在客户端实现,采用一致性哈希
- 中间件分片
- 客户端服务器协作分片:客户端采用一致性哈希,服务端提供错误节点的重定向服务
SOA架构简介
面向服务的体系架构(SOA)是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通信。它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。SOA能帮助企业系统架构设计者以更迅速、更可靠、更高重用性设计整个业务系统架构,基于SOA的系统能够更加从容地面对业务的急剧变化。
企业服务总线(ESB)是由中间件技术实现的全面支持面向服务架构的基础软件平台,支持异构环境中的服务以及基于消息和事件驱动模式的交互,并且具有适当的服务质量和可管理性。
SQL注入及其抵御措施
SQL注入攻击:通过把SQL命令插入到Web表单提交,最终达到欺骗服务器执行恶意的SQL命令。
抵御方式:
- 使用 PreparedStatement
- 使用存储过程
- 验证、过滤输入
- 专业的安全产品
软件架构风格比较
管道-过滤器风格
- 数据驱动机制,处理流程事先确定,编写复杂,交互性差
- 容易添加新的过滤器,可扩展性好。
- 需要格式转换,降低性能;支持过滤器并发调用,提升性能
仓库风格
- 数据统一保存在中央数据仓库,数据处理流程相对独立,支持交互式处理
- 数据与处理解耦合,可动态添加和删除处理组件
- 不支持并行,但是容错性和健壮性好。
隐式调用
- 基于事件触发的思想,支持软件重用,改进系统方便。
- 放弃了对系统计算的控制,事件传递中的数据交换存在问题,语义依赖于被触发事件的上下文约束。
解释器风格
- 核心是“解释”,针对不同的与法规则,只需对解释器进行扩展。
- 会增加系统复杂度,导致性能下降。
比较Redis的RDB和AOF持久化机制
- 磁盘更新频率:RDB更新频率更低
- 数据安全:AOF可以保证数据不丢失,比RDB安全
- 数据一致性:RDB间隔一段时间存储,可能发生数据丢失和不一致;AOF增量写,及时宕机也可以通过 redis-check-aof 工具解决数据一致性问题
- 重启性能:RDB性能更好
- 数据文件大小:RDB文件比AOF小
综上,如果想要数据恢复更快、在最短时间内重新建立服务,选择RDB;如果要保证数据不丢失和强一致性,选择AOF。
为什么采用标准的数据访问机制?
- 屏蔽了不同通信协议之间的差异,为上层应用程序提供统一的访问接口。
- 确保来自多个厂商的设备之间的信息无缝传输,具有语言无关性、代码重用性、易于集成性等优点。
反规范化设计方法
- 增加冗余列
- 增加派生列:保存计算生成的列
- 重新组表:减少表连接
- 分割表:水平分割用于大数据,垂直分割用于分离冷热数据
如何解决数据不一致问题
- 批处理维护:适用于对实时性要求不高的情况
- 应用逻辑:在同一事务中实现,缺点是容易遗漏
- 触发器:实时性好,且易于维护。
Redis和MySQL的数据同步方案
- 引用MySQL事务,事务提交成功后再更新缓存。
- 缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位,然后从缓存崇训时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据。
- 通过数据库中间件产品保证缓存和数据库数据的实时同步。
基于云平台的智能家居系统的优点
- 可以将分散的智能家居网关数据集中起来,实现远程高效管理。
- 云端服务器可以备份存储,在故障时通过云端管理系统进行数据恢复,提高容灾性。
- 数据信息存储在云端,减少了数据请求时间
同步更新和异步更新对比
- 同步更新方案的基本思路是,把每个“订单反馈”作为一个事务,只有缓存与数据库中的数据同时完成更新(同步)后事务才算提交成功。
- 异步准实时更新方案的基本思路是,更新数据时,在同一事务哪通过消息队列发布待更新数据的消息,缓存通过订阅消息队列异步更新,但数据库采用同步更新。适用于对性能要求高的场景。
哈希算法和一致性哈希算法对比
- 哈希算法:把任意长的输入通过哈希函数变换成哈希值,不同的输入可能会得出相同的哈希结果,所以不能根据哈希值倒推输入值。
- 一致性哈希算法:是特殊的哈希算法,将整个哈希值空间映射成一个按顺时针方向组织的虚拟圆环,使用哈希算法算出哈希值,然后根据哈希值的位置沿圆环顺时针查找,将数据分配到第一个遇到的集群节点进行缓存。一致性哈希能尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系,解决了简单哈希算法在分布式哈希表中存在的动态伸缩问题。
- 优点:可扩展性强,能更好地适应数据的快速增长。
布隆过滤器
- 原理:当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,置为1。检索时,查看这些点是否都为1,如果存在0,则元素不存在,如果都是1,则大概率存在。
- 优点:占用内存小;增加和查询元素的时间复杂度为O(K),K为哈希函数的个数,与数据量无关;哈希函数之间没有关系,方便硬件并行计算;布隆过滤器不存储元素本身,安全性强
- 缺点:存在误判情况;不能获取元素本身;一般情况下不能从布隆过滤器中删除元素。
MQTT协议
Message Queuing Telemetry Transport,消息队列遥测传输协议,它是一个专门针对物联网开发的轻量级传输协议,旨在为位于不稳定的网络环境中的低算能、低带宽的边缘物联网设备提供可靠的网络服务。
传统云计算模型中引入边缘计算模型的优势?
- 数据通信方面,很多计算在边缘数据中心或边缘设备本身进行处理,数据无需传输回中央服务器,可极大减小网络负载;
- 安全方面,边缘计算将在不同数据中心和设备之间分配数据处理工作,黑客无法通过攻击一台设备来影响整个网络;
- 系统性能方面,由于很多功能(如人脸识别)直接由边缘设备完成而不需依赖于中央服务器,因此系统性能更高。
论文
押题:
微服务架构
- “分而治之”的原则
- 独立交付和部署服务
软件架构评估的主要方法
- 基于问卷调查:依赖人员的主观判断
- 基于场景
- ATAM 架构权衡分析法,在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。包含四个阶段
- 需求收集
- 架构视图描述
- 属性模型构造和分析
- 架构决策与折中
- SAAM 软件架构分析方法,是最早形成文档并得到广泛应用的架构分析方法
- ATAM 架构权衡分析法,在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。包含四个阶段
- 基于度量:代码行数等
做题记录
试卷 | 选择 75' | 案例 75' |
---|---|---|
模拟卷 | 54‘ | - |
2018 | 56’ | 35‘ |
2019 | 47‘ | 51‘ |
2020 | 49’ | 45‘ |
2021 | 53‘ | 42’ |
2022 | 50‘ | 44‘ |
成绩
2023.12.07 出成绩,通过啦~