申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址 全文共计10577字,阅读大概需要5分钟
欢迎关注我的个人公众号:不懂开发的程序猿
【案例分析题–题型说明】:五道题,第一题必答题,后面四选二,共三个题,每个案例分析题需回答三个提问,共计9个提问。考试共计90分钟
对后来复习的同学一点儿备考建议:从2022年11月的综合选择题、案例分析以及论文真题可以看出大概的命题热门点:【5G网络的切片技术】【AI】【鸿蒙操作系统】【区块链技术】【边缘计算】【物联网技术】【大数据的湖仓一体架构】,以后的考试往这个上面押题,中的概率大一些。
2022年的案例分析题目是:
必答题:【软件架构设计与评估】
四选二
【软件系统建模】
【嵌入式系统维护】
【数据库设计】–Redis的缓存一致性问题?在使用布隆过滤器解决Redis缓存失效中的缓存雪崩问题时,说说布隆过滤器的工作原理与特点,有什么缺点?
【边缘计算】
2022年的论文选题是:
【CBSD (基于构件的软件设计模式以及应用 Components Based Software Design)】
【系统维护性评估】
【区块链技术】
【湖仓一体化技术】
1,质量属性效用树
性能,可修改性,可用性,安全
2,解释器,管道-过滤,隐式调用 架构风格
解释器风格:输入和输出,构件读取输入的数据流,经过内部处理(计算或增值),产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据流关联。
过滤器就是构件,连接件就是管道。
隐式调用风格是构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。一个事件的触发就导致了另
一个模块中的过程调用。
平台支持初学者和高级用户两种界面操作模式,用户可以根据自己的情况灵活选择合适的模式:
从灵活性上解释器可以通过灵活的自定义规则实现规则的重组。
从可扩展性上解释器可以包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。可以通过新建规则
实现可扩展性。
3,用例
4,协作图,顺序图
序列图强调交互的消息时间顺序。
协作图强调接受和发送消息的对象的结构组织,强调通信的方式。
5,对象模型,动态模型,功能模型,请说说它们之间的关联和需求分析?
对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现。
动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现。
功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用用例图来实现。
功能模型指发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。
对象设计建立基于分析模型的设计模型并考虑实现细节,以上3个模型均可用于需求分析。
6,反规范化设计
(1)增加冗余列:增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。例如:以规范化设计的理念,学生成绩表中不需要字段“姓名”,因为“姓名”字段可以通过学号查询到,但在反规范化设
计中,会将“姓名”字段加入表中。这样查询一个学生的成绩时,不需要与学生表进行连接操作,便可得到对应的“姓名”。
(2) 增加派生列:增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。例如:订单表中,有商品号、商品单价、采购数量,我们需要订单总价时,可以通过计算得到总价,所以规范化设计的理念是无须在订单表中设计“订单总价”字段。但反规范化则不这样考虑,由于订单总价在每次查询都需要计算,这样会占用系统大量资源,所以在此表中增加派生列“订单总价”
以提高查询效率。
(3) 重新组表:重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
(4)分割表
有时对表做分割可以提高性能。表分割有两种方式。
水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。水平分割通常在下面的情况下使用。
情况 1:表很大,分割后可以降低在查询时需要读的数据和索引1的页数,同时也降低了索引的层数,提高查询效率。
情况 2:表中的数据本来就有独立性,例如表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
情況 3:需要把数据存放到多个介质上。
垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直分割,另外垂直分割可以使得数据行变小,一个数据页就能存放更多的数据,在查询时就会减少 I/O 次数。其缺点是需要管理冗余列,查询所有数据需要连接操作。
本题中用到了重新组表得方式。
7,数据不一致的问题的三种常用方法
参考答案
批处理维护、应用逻辑和触发器
8,Redis MySQL数据实时同步的常见方案
①引用Mysql的事务,因为事务有一致性保证,事务提交成功后再更新缓存
②在缓存里面引用一些访问控制位,数据库数据变化后,同步变更对应的访问控制位,然后从缓存查询时,率先判断该访问控制位,有变化就从数据库查,无变化直接从缓存返回数据
③通过数据库中间件产品保证缓存和数据库数据时时同步
9,基于云平台的好处
参考答案
在网关管理方面,基于云平台的智能家居管理系统可以将分散的智能家居网关数据集中起来,实现对智能家居网关的远程高效管理。
在数据处理方面,云端服务器对智能家居网数据进行备份存储,当家庭网关由于故障等原因导致数据丢失时,可以通过云端管理系统对网关数据进行恢复,从而提高数据的容灾性。
在系统性能方面,基于云服务平台的智能家居管理系统将数据信息存储在云端,减少了数据请求时间,提高了通信效率。
10,补充系统架构设计方案
11,比较TCP 、UDP 通信协议的不同,采用哪种?
TCP | UDP |
---|---|
面向连接 | 无连接 |
面向字节流 | 面向报文 |
无差错,不丢失,不重复,按序到达 | 尽最大努力交付 |
可靠的 | 不可靠连接 |
全双工 | |
差错检验 | |
拥塞控制 | |
滑动窗口机制 |
【问题1】
创建型模式主要用于创建对象,为设计类实例化新对象提供指南。
结构型模式主要用于处理类或对象的组合,对类如何设计以形成更大的结构提供指南。
行为型模式主要用于描述类或对象的交互以及职责的分配,对类之间交互以及分配责任的方式提供指南。
【问题2】 设计模式分类
创建型模式:构造器模式、原型模式。
结构型模式:适配器模式、外观模式、代理模式。
行为型模式:命令模式、中介模式、状态模式和策略模式。
【问题3】
(1)策略模式
解決方案:在具有公共接口的独立类中定义每个计算。可以利用该模式创建各种促销类,它们从同一个超类继承。每个类都有相同名称的标准接口方法,用手根据订单编号计算将要折扣的金额总数。计算每个
促销的内部代码对促销类来说完全不同。
(②)适配器模式
解決方案:增加一个类作为适配器,转换类的接口到客户端类期望的另一个接口。实现一个适配器类,这个类为系统的其他部分提供了一个不变的方法供调用,为了集成不同商品供应商提供的税率计算类,编写一个适配器类的子类,包含调用购买类所需的代码。该子类将系统的调用映射到某个供应商的税率计算类。如果要更换供应商,那么只需要写一个新的适配器子类,其他保持不变。
质量属性效用树:
性能,可修改性,可用性,安全
风险点:系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
(i)现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性;【描述的是风险点】
敏感点:是为了实现某种特定质量属性,一个或多个系统组件所具有的特性。
(g)对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计;【描述的是敏感点】
权衡点:是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。
(f)系统拟采用新的加密算法,这会提高系统安全性,但同时会降低系统的性能;【描述的是权衡点】
【问题1】
软件架构风格是指描述特定软件系统组织方式的惯用模式。组织方式描述了系统的组成构件和这些构件的组织方式,惯用模式则反映众多系统共有的结构和语义
以数据集成为中心的架构风格的好处:(对比以管道-过滤器的架构风格)
从集成开发环境与用户的交互方式看,用户通常采用交互式的方式对脚本语言进行编辑、解释执行与调试。在这种情况下,采用以数据存储为中心的架构风格能够很好地支持交互式数据处理,而管道一过滤器架构风格则对用户的交互式数据处理支持有限。
从集成开发环境的扩展性来看,系统核心需求要求实现各种编辑、语法检查、解释执行等多种功能的灵活组织、配置与替换。在这种情况下,采用以数据存储为中心的架构风格,以数据格式解耦各种功能之间的依赖关系,并可以灵活定义功能之问的逻辑顺序。管道一过滤器架构风格同样以数据格式解耦数据处理过程之问的依赖关系,但其在数据处理逻辑关系的灵活定义方面较差。
从集成开发环境的数据管理来看,集成开发环境需要支持脚本语言、语法树(用于检查语法错误)、可视化模型、调试信息等多种数据类型,并需要支持数据格式的转换。以数据存储为中心的架构将数据存储在统一的中心存储器中,中心存储器能够表示多种数据格式,并能够为数据格式转换提供各种支持。管道一过滤器架构风格通常只能支持有限度的数据格式,并且在数据格式转换方面的灵活性较差。
面对需求采用各种架构风格?描述后续的设计过程?
【问题2】
为了满足需求(2),应该采用解釋器架构风格。
具体来说,需要:
①为可视化编程元素及其拖拽关系定义某种语言,并描述其语法与语义;
②编写解釋器对该语言进行解释;
③)生成对应的脚本语言程序。
为了满足需求(3),应该采用隐式调用架构风格。
具体来说,首先需要定义"断点在调试过程中命中”这一事件,并实现当断点命中后的屏幕定位函数。集成开发环境维护—个事件注册表结构,将该事件与屏幕定位函数关联起来形成注册表中的一个记录项。在调试过程中,集成开发环境负责监听各种事件,当“断点在调试过程中命中”这一事件发生时,集成开发环境查找事件注册表,找到并调用屏幕定位函数,从而实现脚本语言编辑界面与调试代码的自动定位。
遗留系统的继承策略
(1) 淘汰策略:遗留系统的技术含量低,具有较低的业务价值,因此需要全面重新开发新系统以替代遗留系统;一般是企业的业务发生了根本变化,遗留系统已经基本上不再适应企业运作的需要;或者是遗留系统的维护人员流失,维护文档资料丢失。评价后发现,开发新系统比维护与改造1日系统从成本上更经济合算。
(2) 继承策略:遗留系统技术含量低,已经满足企业运作的功能或性能要求,但有较高的业务价值,目前企业的业务尚需依赖该還留系统。因此,开发系统替代遷留系统时,需要完全兼容遗留系统的功能模型和数据模型。
数据迁移准备工作的内容
【问题2】(5分)
(1) 待迁移数据源的详细说明,包括数据的存放方式、数据量和数据的时间跨度。
(2) 建立新旧系统数据库的数据字典,对现有系统的历史数据进行质量分析,以及新旧系统数据结构的差异分析。
(3) 新旧系统代码数据的差异分析。
(4) 建立新旧系统数据库表的映射关系,对无法映射字段的处理方法。
(5) 开发或购买、部署ETL工具。
(6) 编写数据转换的测试计划和校验程序。
(7) 制定数据转换的应急措施。
REST风格设计原则(对比RPC设计原则)
REST风格的5条关键原则包括:
嵌入式系统的主要特点
【问题2】(5分)
该系统投入使用后,初期用户数量少,系统运行平稳。6个月后,用户数出现了爆炸式增长,系统暴露出诸多问题,集中表现在:
1.用户执行读写操作时,响应时问均变得很慢;
2.随着系统功能的扩充,原有数据格式发生变化,又出现新的数据格式,维护困难;
3.数据容量很快超过系统原有的设计上限,数据库扩容困难;
4.软件系统不断出现宕机,整个系统可用性较差。
分析问题产生的原因:
其原因主要是:
解决办法:NoSQL数据库
【问题2】 答案:
该系统采用NOSQL数据库时可能存在的问题有:
【问题3】答案:
分布式中间件优点:
分布式对象调用的详细步骤:
【问题3】答案:
(1)存根/桩 (2)框架
或(1)代理 (2)存根
一次远程调用的过程如下:
GOA(General Opened Architecture)
通用开放架构开放架构应具有以下4个基本特点:
MVC模式的作用:
【问题2】
从设计模式的角度来说,整个XML表现层解析的机制是一种策路模式。在调用显示GUI时,不是直接调用特定的表现技术的API,而是装载GUI对应的XML配置文件,然后根据特定的表现技术的解析器解析XML,得到GUI视图实例对象。
对于GUI开发人员来说,GUI视图只需要维护一套XML文件即可
【问题1】
对称加密?流加密?
【问题2】
答案:
应采用流加密方式。因为需求中提及“单个敏感数据文件可能会达到数百兆的规模”,文件数据量较大,使用流加密方式可以获得更高的加解密效率。
数据加密与解密过程如下:
其加密过程为:首先生成一个对称密钥,使用用户公钥加密这个对称密钥后存储在文件头,然后用生成的对称密钥加密文件数据存储;
其解密过程为:用户首先使用自己的私钥解密被加密的对称密钥,再用该对称密钥解密出数据原文。
【问题3】
目前数据库管理系统提供的基本数据加密支持主要有以下两种:
数据流图和流程图的区别
数据流图作为一种图形化工具,用来说明业务处理过程、 系统边界内所包含的功能和系统中的数据流。
流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程,描述处理过程的控制流。
两者的区别主要包括:
1. 数据流图中的处理过程可并行;流程图在某个时间点只能处于一个处理过程。
2. 数据流图展现系统的数据流;流程图展现系统的控制流。
3. 数据流图展现全局的处理过程,过程之问遵循不同的计时标准;流程图中处理过程遵循一致的计时标准。
4. 数据流图适用于系统分析中的逻辑建模阶段;流程图适用于系统设计中的物理建模阶段
高质量数据流图设计时应考虑的三个原则:
Java企业级应用框架一般被划分为3个层次,请用150字以内的文字说明都有哪3个层次?功能分别是什么?
请用200字以内的文字叙述Struts、Spring和Hibernate开源框架特点和结合方式。
请用200字以内的文字说明基于Struts、Spring和Hibernate的轻量级框架与基于EJB的重量级框架解决问题的侧重点有什么不同?
结合你的系统架构经验,请用400字以内的文字简要讨论C/S和B/S两种架构风格各自的优点和缺点。
【问题1](8分)
C/S架构风格的优点:
C/S架构风格的缺点:
B/S架构风格的优点:
B/S架构风格的缺点:
结合你的系统架构经验,请用600字内的文字简要说明该工程项目采用C/S和B/S相结合的混合架构风格的设计要点及其优点。
【问题2】(7分)
采用C/S和B/S混合架构的优点如下(包含但不限于以下内容):
为保证各分支机构可靠、高效地向数据中心汇总业务数据,避免单点故障,对该企业总部数据中心架构设计时,应该采用哪些相关的技术?
【问题3】(9分)
包含但不限于以下内容:
–end–