马上就要进行今年的软考了,大家都准备得怎么样了呢,2024上半年的软考架构得分点你知道了吗?
目标不光是把历年母题的考点规律吃透,还要规划好各类题型的做题时间,除了纸质版还要上机模拟,更好的适应机考,所以计算器、公式、打字这些,要提前练习好!今天给大家分享软考架构考试《考前重点冲刺20问》,临时抱佛脚,来一个救一个!
一、问:Kappa架构与Lambda架构有什么区别?
答: Kappa架构与Lambda架构的对比
二、问:电子政务有哪些类型?对应的具体的应用有哪些?
答:
类型 | 应用 |
G2G | 基础信息的采集、处理和利用,如:人口信息、地理信息。及政府间:计划管理、财务管理、通信系统、各级政府决策支持。 |
G2B | 政府给企业单位颁发【各种营业执照、许可证、合格证、质量认证】 |
B2G | 企业向政府缴税企业向政府供应各种商品和服务【含竞/投标】企业向政府提建议,申诉 |
G2C | 社区公安和水、火、天灾等与公共安全有关的信息户口、各种证件和牌照的管理 |
C2G | 个人应向政府缴纳的各种税款和费用个人向政府反馈民意【征求群众意见】报警服务(盗贼、医疗、急救、火警等) |
G2E | 政府内部管理系统 |
三、问:面向信息集成、面向过程集成、面向服务集成与界面集成、数据集成、应用集成、过程集成有什么区别和联系?
答:按照集成的层次进行分类的,所以将企业内的集成分为:界面集成、平台集成、数据集成、应用集成、过程集成等。
按照集成技术来分为:面向信息的集成、面向过程的集成和面向服务的集成。
对于二者的联系: 一般而言,界面集成、平台集成、数据集成、应用集成一般可通过面向信息的集成技术实现,过程集成一般可通过面向过程的集成技术可实现,但其中又常包含接口集成等面向信息的集成技术。当然,应用集成和过程集成也可以通过面向服务的集成技术来实现。
四、问:演化模型跟螺旋模型,增量模型,原型法开发的关系?
答:首先是原型化,原型化又可以分为两种,抛弃式原型和演化式原型,其中最终演化成一个产品的就演变成为演化模型。螺旋模型式是通过演化模型和瀑布模型的结合所产生的,并且螺旋模型强调了风险管理。增量模型是原型模型和瀑布模型所结合而产生的。其中螺旋模型和增量模型的区别:螺旋模型他是一直旋下去,旋到最后才是一个产品,而增量模型每一个增量都发布了一个可操作的产品,这是它的一个细微的区别。
五、问:传统五大类风格有哪些?是怎么分类的?
答:
五大架构风格 | 子风格 |
数据流风格 | 批处理、管道-过滤器 |
调用/返回风格 | 主程序/子程序、面向对象、层次结构 |
独立构件风格 | 进程通信、事件驱动系统(隐式调用) |
虚拟机风格 | 解释器、规则系统 |
仓库风格 | 数据库系统、黑板系统、超文本系统 |
六、问:虚拟机架构风格解释器和规则系统之间的差异点在哪里?
答:他们都是虚拟机风格,两者都可以灵活应对自定义场景。
解释器风格是一个用来执行其它程序的程序。解释器可针对不同的硬件平台实现一个虚拟机,将高抽象层次的程序翻译为低抽象层次所能理解的指令,以消除在程序语言与硬件之间存在的语义差异。适用于需要“自定义规则”的场合。
基于规则的系统是以规则为中心的虚拟机系统。而规则系统是适合于专家系统和DSS的。
七、问:微服务的优势是什么?
答:微服务之所以能盛行,必然是有它独特优势的,微服务的优势如下:
(1)技术异构性:在微服务架构中,每个服务都是一个相对独立的个体,每个服务都可以选择适合于自身的技术来实现。如,要开发一个社交平台,此时,我们可能使用文档型数据库来存储帖子的内容,使用图数据来存储朋友圈的这些关系等,这样可以把每一块的性能都充分发挥出来。同时,在应用新技术时,微服务架构也提供了更好的试验场。因为对于单块的系统而言,采用一个新的语言、数据库或者框架都会对整个系统产生巨大的影响,这样导致我们想尝试新技术时,望而却步。但微服务不同,我们完全可以只在一个微服务中采用新技术,待技术使用熟练之后,再推广到其它服务。
(2)弹性:弹性主要讲的是系统中一部分出现故障会引起多大问题。在单块系统中,一个部分出现问题,可能导致整体系统的问题。而微服务架构中,每个服务可以内置可用性的解决方案与功能降级方案,所以比单块系统强。
(3)扩展:单块系统中,我们要做扩展,往往是整体进行扩展。而在微服务架构中,可以针对单个服务进行扩展。
(4)简化部署:在大型单块系统中,即使修改一行代码,也需要重新部署整个应用系统。这种部署的影响很大、风险很高,因此不敢轻易的重新部署。而微服务架构中,每个服务的部署都是独立的,这样就可以更快地对特定部分的代码进行部署。
(5)与组织结构相匹配:我们都知道,团队越大越难管理,同时团队越大也代表系统规模越大代码库越大,这样容易引起一系列的问题。且当团队是分布式的时候,问题更严重。微服务架构就能很好的解决这个问题,微服务架构可以将架构与组织结构相匹配,避免出现过大的代码库,从而获得理想的团队大小及生产力。服务的所有权也可以在团队之间迁移,从而避免异地团队的出现。
(6)可组合性:在微服务架构中,系统会开放很多接口供外部使用。当情况发生改变时,可以使用不同的方式构建应用,而整体化应用程序只能提供一个非常粗粒度的接口供外部使用。
(7)对可替代性的优化:在单块系统中如果删除系统中的上百行代码,也许不知道会发生什么,引起什么样的问题,因为单块系统中关联性很强。但在微服务架构中,我们可以在需要时轻易的重写服务,或者删除不再使用的服务。
八、问:微服务与SOA的对比
答:
微服务 | SOA |
能拆分的就拆分 | 是整体的,服务能放一起的都放一起 |
纵向业务划分 | 是水平分多层 |
由单一组织负责 | 按层级划分不同部门的组织负责 |
细粒度 | 粗粒度 |
两句话可以解释明白 | 几百字只相当于SOA的目录 |
独立的子公司 | 类似大公司里面划分了一些业务单元(BU) |
组件小 | 存在较复杂的组件 |
业务逻辑存在于每一个服务中 | 业务逻辑横跨多个业务领域 |
使用轻量级的通信方式,如HTTP | 企业服务总线(ESB)充当了服务之间通信的角色 |
微服务架构实现 | SOA实现 |
团队级,自底向上开展实施 | 企业级,自顶向下开展实施 |
一个系统被拆分成多个服务,粒度细 | 服务由多个子系统组成,粒度大 |
无集中式总线,松散的服务架构 | 企业服务总线,集中式的服务架构 |
集成方式简单(HTTP/REST/JSON) | 集成方式复杂(ESB/WS/SOAP) |
服务能独立部署 | 单块架构系统,相互依赖,部署复杂 |
九、问:JWT是什么?他跟Cookie以及API Key三者有什么区别?
答:1、JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。
它是一种轻量级的、基于JSON的令牌,可以在客户端和服务器之间传递信息。
JWT由三部分组成:
【头部】包含令牌类型和所使用的算法
【载荷】包含用户信息和其他元数据
【签名】用于验证令牌的完整性和真实性
JWT的应用场景:【信息交换】【授权】
不需要服务器端存储状态,安全地传递【非敏感信息】
2、JWT、Cookie以及API Key对比如下:
JWT | Cookie | API Key | |
是否有状态 | 无 | 无 | 无 |
应用场景 | 前后端、后端服务之间 | 前后端 | 一般后端服务之间 |
认证对象 | 主要针对用户 | 针对用户 | 主要针对系统、应用 |
可撤销 | 不方便 | 方便 | 方便 |
生成方式 | 认证过程中动态生成 | 认证过程中动态生成 | 预先分配 |
十、问:常考的质量属性以及相关设计策略有哪些?
答:(1)性能
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。例如:1.同时支持1000并发;2.响应时间小于1s;3.显示分辨率达到4K。
代表参数:响应时间、吞吐量 设计策略:优先级队列、资源调度
(2)可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。例如:1.主服务器故障,1分钟内切换至备用服务器;2.系统故障,1小时内修复;3.系统支持7╳24小时工作。
代表参数:故障间隔时间 设计策略:冗余、心跳线
(3)安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。例如:1.可抵御SQL注入攻击;2.对计算机的操作都有完整记录;3.用户信息数据库授权必须保证99.9%可用。
设计策略:追踪审计
(4)可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。(可扩展性与之相近)例如:1.更改系统报表模块,必须在2人周内完成;2.对Web界面风格进行修改,修改必须在4人月内完成。
主要策略:信息隐藏(二义性:良好的封装能够做到信息隐藏,一般归于可修改性策略;信息隐藏也能够体现在安全性当中)
十一、问:SysML是什么?SysML中的需求关系有哪些?
答:1、对象管理组织OMG在对UML 2.0 的子集进行重用和扩展的基础上,提出了一种新的系统建模语言SysML(Systems Modeling Language),作为系统工程的标准建模语言。SysML的目的是统一系统工程中使用的建模语言。
2、SysML中的需求关系:包含、跟踪、继承需求、改善、满足、验证和复制。
包含(Include):需求可以且只能包含其他需求。
跟踪(Trace):对提供方元素(位于箭头端)的修改可能会导致对客户端元素(位于尾端)修改的需要。
继承(deriveReqt):一个需求可以继承另一个需求的属性。
改善(refine):表示一个需求改进了另一个需求的满足程度。
满足(satisfy):一般是模块满足某种需求。
验证(verify ):表示一个需求验证了另一个需求的正确性。
复制(Copy):表示一个需求复制了另一个需求的特性。
十二、问:云原生架构的设计原则和架构模式分别有哪些?
答:云原生架构设计原则:
(1)服务化原则:使用微服务
(2)弹性原则:可根据业务变化自动伸缩
(3)可观测原则:通过日志、链路跟踪和度量
(4)韧性原则:面对异常的抵御能力
(5)所有过程自动化原则:自动化交付工具
(6)零信任原则:默认不信任网络内部和外部的任何人/设备/系统
(7)架构持续演进原则:业务高速迭代情况下的架构与业务平衡
云原生架构模式:
(1)服务化架构模式:典型代表【微服务】,服务拆分使维护压力大增。
(2)Mesh化架构模式:把中间件框架(RPC、缓存、异步消息)从业务进程中分离,由Mesh进程完成。
(3)Serverless模式:非常适合于事件驱动的数据计算任务。
(4)存储计算分离模式:各类暂态数据(如session)用云服务保存。
(5)分布式事务模式:解决微服务模式中多数据源事务问题。
(6)可观测架构:包括Logging、Tracing、Metrics三个方面。
(7)事件驱动架构:本质上是一种应用/组件间的集成架构模式。
十三、问:被动攻击和主动攻击分别有哪些?
答:被动攻击:收集信息为主,破坏保密性。
攻击类型 | 攻击名称 | 描述 |
被动攻击 | 窃听(网络监听) | 用各种可能的合法或非法的手段窃取系统中的信息资源和敏感信息。 |
业务流分析 | 通过对系统进行长期监听,利用统计分析方法对诸如通信频度、通信的信息流向、通信总量的变化等参数进行研究,从而发现有价值的信息和规律。 | |
非法登录 | 有些资料将这种方式归为被动攻击方式。 |
主动攻击:主动攻击的类别主要有:中断(破坏可用性),篡改(破坏完整性),伪造(破坏真实性)
攻击类型 | 攻击名称 | 描述 |
主动攻击 | 假冒身份 | 通过欺骗通信系统(或用户)达到非法用户冒充成为合法用户,或者特权小的用户冒充成为特权大的用户的目的。黑客大多是采用假冒进行攻击。 |
抵赖 | 这是一种来自用户的攻击,比如:否认自己曾经发布过的某条消息、伪造一份对方来信等。 | |
旁路控制【旁路攻击】 | 密码学中是指绕过对加密算法的繁琐分析,利用密码算法的硬件实现的运算中泄漏的信息。如执行时间、功耗、电磁辐射等,结合统计理论快速的破解密码系统。 | |
重放攻击 | 所截获的某次合法的通信数据拷贝,出于非法的目的而被重新发送。加时间戳能识别并应对重放攻击。 | |
拒绝服务(DOS) | 对信息或其它资源的合法访问被无条件地阻止。 |
十四、问:恢复块方法与N版本程序设计有什么区别?
答:
恢复块方法 | N版本程序设计 | |
硬件运行环境 | 单机 | 多机 |
错误检测方法 | 验证测试程序 | 表决 |
恢复策略 | 后向恢复 | 前向恢复 |
实时性 | 差 | 好 |
其中:
前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。
后向恢复:系统恢复到前一个正确状态,继续执行。
十五、问:总时差和自由时差分别是什么,怎么进行计算?
答:总时差(松弛时间):
在不延误总工期的前提下,该活动的机动时间。活动的总时差等于该活动最迟完成时间与最早完成时间之差,或该活动最迟开始时间与最早开始时间之差。
自由时差:
在不影响紧后活动的最早开始时间前提下,该活动的机动时间。
对于有紧后活动的活动,其自由时差等于所有紧后活动最早开始时间减本活动最早完成时间所得之差的最小值。
对于没有紧后活动的活动,也就是以网络计划终点节点为完成节点的活动,其自由时差等于计划工期与本活动最早完成时间之差。
对于网络计划中以终点节点为完成节点的活动,其自由时差与总时差相等。此外,由于活动的自由时差是其总时差的构成部分,所以,当活动的总时差为零时,其自由时差必然为零,可不必进行专门计算。
十六、问:嵌入式软件的开发与传统的软件开发方法存在比较大的差异,主要表现在哪些方面?
答:(1)嵌入式软件开发是在宿主机(PC机或工作站)上使用专门的嵌入式工具开发,生成二进制代码后,需要使用工具卸载到目标机或固化在目标机储存器上运行。
(2)嵌入式软件开发时更强调软/硬件协同工作的效率和稳定性。
(3)嵌入式软件开发的结果通常需要固化在目标系统的储存器或处理器内部储存器资源中。
(4)嵌入式软件的开发一般需要专门的开发工具、目标系统和测试设备。
(5)嵌入式软件对实时性的要求更高。
(6)嵌入式软件对安全性和可靠性的要求较高。
(7)嵌入式软件开发是要充分考虑代码规模。
(8)在安全攸关系统中的嵌入式软件,其开发还应满足某些领域对设计和代码审定。
(9)模块化设计即将一个较大的程序按功能划分成若干程序模块,每个模块实现特定的功能。
十七、问:嵌入式数据库有哪些分类?
答:按照数据库存储位置的不同而进行分类是目前广泛采用的分类方法,它可以划分为三类:
定义 | 特点 | |
基于内存的数据库MMDB | 基于内存的数据库系统是实时系统和数据库系统的有机结合。 | 内存数据库是支持实时事务的最佳技术,其本质特征是以其“主拷贝”或“工作版本”常驻内存,即活动事务只与实时内存数据库的内存拷贝打交道。 |
基于文件的数据库FDB | 基于文件的数据库系统就是以文件方式存储数据库数据,即数据按照一定格式储存在磁盘中。使用时由应用程序通过相应的驱动程序甚至直接对数据文件进行读写。 | 这种数据库的访问方式是被动式的,只要了解其文件格式,任何程序都可以直接读取,因此它的安全性很低。虽然文件数据库存在诸多弊端,但是,可以满足嵌入式系统在空间、时间等方面的特殊要求。 |
基于网络的数据库NDB | 基于网络的数据库系统是基于手机4G/5G的移动通信基础之上的数据库系统,在逻辑上可以把嵌入式设备看作远程服务器的一个客户端。 | 嵌入式网络数据库系统的特点是:无需解析SQL语句;支持更多的SQL操作;客户端小、无需支持可剪裁性;有利于代码重用。 |
其中嵌入式网络数据库主要由三部分组成:客户端、通信协议和远程服务器。客户端主要负责提供接口给嵌入式程序,通信协议负责规范客户端与远程服务器之间的通信,还需要解决多客户端的并发问题,远程服务器负责维护服务器上的数据库数据。
十八、问:鸿蒙操作系统整体架构大致是什么样的?
答: Harmony OS系统架构整体上遵从分层设计,从下向上分为内核层、系统服务层、框架层和应用层。Harmony OS系统功能按照“系统->子系统->功能/模块”逐步逐级展开,在多设备部署场景下,支持根据实际需求裁剪或增加子系统或功能/模块。
(1)内核层:鸿蒙系统分为内核子系统和驱动子系统。在内核子系统中鸿蒙系统采用多内核设计,支持针对不同资源受限设备选用合适的OS内核;鸿蒙系统驱动框架是鸿蒙系统硬件生态开放的基础,它提供统一外设访问能力和驱动开发、管理框架。
(2)系统服务层:系统服务层是鸿蒙系统的核心能力集合,通过框架层对应用程序提供服务。包含了系统基本能力子系统集、基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统四个部分。
框架层:框架层为鸿蒙系统应用程序提供Java/C/C++/JS等多语言用户程序框架和Ability框架,及各种软硬件服务对外开放的多语言框架API,也为搭载鸿蒙系统的电子设备提供C/C++/JS等多语言框架API。
应用层:应用层包括系统应用和第三方非系统应用,鸿蒙系统应用由一个或多个FA或PA组成。
添加图片注释,不超过 140 字(可选)
此外,Harmony OS架构的系统安全性主要体现在搭载Harmony OS的分布式终端上,可以保证“正确的人,通过正确的设备,正确地使用数据”。这里通过“分布式多端协同身份认证”来保证“正确的人”,通过“在分布式终端上构筑可信运行环境”来保证“正确的设备”,通过“分布式数据在跨终端流动的过程中,对数据进行分类分级管理”来保证“正确地使用数据”。
十九、问:冷备份和热备份的优缺点分别是什么?
答:
优缺点备份方式 | 优点 | 缺点 |
冷备份 | 非常快速的备份方法(只需复制文件);容易归档(简单复制即可);容易恢复到某个时间点上(只需将文件再复制回去);能与归档方法相结合,做数据库“最佳状态”的恢复 ;低度维护,高度安全 | 单独使用时,只能提供到某一时间点上的恢复;在实施备份的全过程中,数据库必须要作备份而不能做其他工作;若磁盘空间有限,只能复制到磁带等其他外部存储设备上,速度会很慢;不能按表或按用户恢复 |
热备份 | 可在表空间或数据库文件级备份,备份的时间短;备份时数据库仍可使用;可达到秒级恢复(恢复到某一时间点上);可对几乎所有数据库实体做恢复;恢复是快速的 | 不能出错,否则后果严重;若热备份不成功,所得结果不可用于时间点的恢复;因难于维护,所以要特别小心,不允许“以失败告终” |
(1)冷备份也称为静态备份,是将数据库正常关闭,在停止状态下,将数据库的文件全部备份(复制)下来。
(2)热备份也称为动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
(3)完全备份:备份所有数据
(4)差量备份:仅备份上一次完全备份之后变化的数据
(5)增量备份:备份上一次备份之后变化的数据
(6)日志文件 :事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。
二十、问:分区和分表有什么区别和联系?分区有什么策略?
答:1、分区与分表的区别与联系:
两者都针对数据表,将数据做到分布式,提高数据检索的效率,降低数据库的频繁I/O压力值。
分表是真正的生成数据表,是将一张大数据量的表分成多个小表实现数据均衡。
分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介质中,实际上还是一张表。
2、分区的优点:
相对于单个文件系统或是硬盘,分区可以存储更多的数据。
数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。
精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率。
可跨多个分区磁盘查询,来提高查询的吞吐量。
在涉及聚合函数查询时,可以很容易进行数据的合并。
3、分区的策略:
(1)范围分区(RANGE):就是根据数据库表中某一字段的值的范围来划分分区。如:年份小于2016的分成一个区,其它分成另一个区。
(2)散列分区(HASH):散列分区是根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。
(3)列表分区(LIST):列表分区明确指定了根据某字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。如:长沙、武汉分成一个区,北京一个区。
篇幅有限,有需要系统架构考前更多资源的朋友,可以自行领取↓↓↓
添加图片注释,不超过 140 字(可选)