2024下半年真题 系统架构设计师 案例分析

news2025/3/14 21:42:42

案例一 软件架构
关于人工智能系统的需求分析,给出十几个需求。

a.系统发生业务故障时,3秒内启动 XXX,属于可靠性

b.系统中的数据进行导出,要求在3秒内完成,属于可用性

c.质量属性描述,XXX,属于____

d.质量属性描述,XXX,属于可用性

e.质量属性描述,XXX,属于____

f.系统需要增加新的模块,需要3天完成,属于____

g.系统分为三个不同的国家语言,完成XXXX功能,属于____

h.系统使用了云服务器,要求1分钟以内检测错误和故障,并且1个小时以内恢复

i.系统使用XX检测云服务器故障,需要在2秒切换

【问答题】
1.从质量属性的角度分析填空(14分)

字母

属性

a

功能性

b

可靠性

c

(1)

d

(2)

e

(3)

f

-

g

-

h

可用性

2.针对质量属性可以使用ping/echo和心跳模式实现,分别简述ping/echo和心跳模式的实现原理,张工认为从资源利用率的角度来看采取心跳模式策略比较合适,简述为什么。(11分)

答案:

实现原理:

    ping/echo:通过 ICMP 协议发送一个“Echo Request”消息到目标主机,等待其回复“Echo Reply”。这是一种网络层的连通性测试方法。echo:更广泛地指任何类型的请求-响应模式,用于验证远程服务或组件是否可达和正常工作。这可以是基于HTTP、TCP等协议的简单请求。

    心跳模式:客户端定期向服务器发送心跳信号(如HTTP请求),服务器接收到后立即回应。如果连续几次心跳未得到响应,则认为服务器可能出现故障。心跳信号通常包含少量数据,比如时间戳或简单的健康检查信息,以确保不仅网络连接正常,而且应用程序本身也在正确运行。

采取心跳模式的原因

针对性强,减少不必要的通信开销;

按需调整频率和内容,优化资源使用,比较灵活;

结合健康检查,提高诊断精度;

支持复杂环境下的高效运作。

案例二 数据库Cache-aside架构
关于web架构的题目,主要是涉及到数据库和缓存。

(Cache-aside架构,也称为旁路缓存模式,是一种常见的缓存使用策略。

基本概念:在此架构中,缓存和数据库是两个独立的存储系统,它们之间没有直接的交互。应用程序代码负责管理缓存和数据库之间的数据一致性。

读操作流程:

①应用程序首先尝试从缓存中读取数据;

②如果数据存在于缓存中(缓存命中),则直接将缓存的数据返回给应用程序;

③如果数据不存在于缓存中(缓存未命中)则应用程序从数据库中检索数据,将数据写入缓存,并返回给用户。

写操作流程:

①应用程序更新数据库中的数据;

②应用程序可以选择删除缓存中的旧数据(缓存失效)或更新缓存中的数据;

③为了确保数据一致性,通常推荐在更新数据库后删除或更新缓存中的相关数据。)

【问答题】
1.填空流程图说明缓存读写的过程。(10分)

答:

(1)向缓存请求读取该商品信息

(2)若命中则返回该商品信息

(3)若未命中则访问数据库查询该商品信息

(4)将查询到的数据库数据更新到缓存

(5)将查询到的数据库目标数据返回

2.填空流程图说明写缓存的过程。(6分)

答:

(1)更新数据库中的目标商品信息。

(2)将数据库中更新的商品信息写入到缓存中,确保数据一致性。

3.王工使用了多线程技术进行缓存处理,线程1负责写入,线程2负责读取,可能存在数据一致性问题,请解释其原因,并给出3个以上的解决办法(9分)

答案:原因

竞态条件:如果没有适当的同步机制,两个或多个线程可能同时访问和修改共享资源,导致最终结果取决于线程调度顺序。例如,线程1正在更新缓存中的某个条目,但线程2在同一时间点读取该条目,它可能会读取到部分更新或旧版本的数据。

可见性问题:在多线程环境中,一个线程对共享变量所做的更改不一定立刻被其他线程看到。这是因为现代CPU架构通常会使用寄存器和缓存来加速性能,这可能导致某些更新在一段时间内只对本地线程可见。

原子性破坏:写入操作可能不是一个原子操作,意味着它可以被中断或分段执行。如果线程1在完成整个写入之前就被切换出去,而线程2此时尝试读取,那么它将得到一个不完整的或者错误的数据状态。

解决方法:延时双删、同步删除、加互斥锁(分布式锁)、消息队列、基于缓存更新策略。

案例三 嵌入式

机器人操作系统ROS。

【问题1】(13分)

(1)ROS定义和特点。

(2)ROS2与ROS1相比哪些地方做了改进?

答案:

(1)ROS(Robot Operating System)是一个用于编写机器人软件的框架。它提供了一系列的工具和库,帮助开发者创建复杂的、可以在多种操作系统上运行的机器人应用程序。

ROS的主要特点包括:

·分布式计算能力:ROS提供了一种方式让多个计算机或设备协同工作,通过网络进行通信 ·消息传递:ROS使用了一种进程间通信(IPC)机制,可以在不同的节点之间传递数据。

·包管理:ROS提供了一个包管理系统,允许用户分享和安装软件组件。

·工具和库:ROS提供了一系列工具和库,例如用于3D渲染的RViz,用于模拟机器人的Gazebo,以及用于路径规划的navigation stack等。

(2)ROS2与ROS1的对比,如下表所示:

ROS1

ROS2

所有节点需Master节点管理

所有节点平行分布,基于DDS的Discover

rosbuid、catkin管理项目

ament、colcon管理项目

使用C++03和Python2

使用C++11和Python3

CMake构建系统

支持其他构件系统的选项

基于2009设计的API

全新的用户API

TCPROS/UDPROS通信机制

DDS数据分发服务

Linux系统平台

Linux/Windows/Mac/RTOS系统平台

【问题2】(8分)

3.四种通信服务,选词填空。

答案:1.话题通信:是一种单向通信模型,在通信双方中,发布方发布数据,订阅方订阅数据,数据流单向的由发布方传输到订阅方,。2.服务通信:是一种基于请求响应的通信模型,在通信双方中,客户端发送请求数据到服务端,服务端响应结果给客户端3.动作通信:是一种带有连续反馈的通信模型,在通信双方中,客户端发送请求数据到服务端,服务端响应结果给客户端,但是在服务端接收到请求到产生最终响应的过程中,会发送中间连续的反馈(进度)信息到客户端。4.参数服务:是一种基于共享的通信模型,在通信双方中,服务端可以设置数据,而客户端可以连接服务端并操作服务端数据。

【问题3】(7分)

根据下图,请解释ROS2架构每一层含义。

案例四 web系统

基于Elasticsearch分词的商品推荐系统(微信小程序接入)。

1. 基于Elasticsearch分词,解释下Standard, Simple, Whitespace, Keyword 几种分词器的分词原理。(6分)

答案:Standard:standard分词器通常用于处理多种语言的文本,它会识别并拆分单词、数字、电子邮件地址、网址等,并且能够处理一些标点符号。对于中文、日文、韩文等不使用空格的语言,Standard 分词器可能不是最佳选择,因为它不能很好地理解这些语言的语法规则。例如:“Hello, World!” 分词结果为[“Hello”, “,”, “World”, “!”]。

Simple:simple分词器非常基础,它只是简单地按照非字母字符进行分割,即将所有的非字母字符视为分隔符。因此,所有连续的字母序列都会被视为一个词汇单元,而任何非字母字符(如空格、标点符号、数字)都会被丢弃或用作分隔标志。例如:“Hello, World! How are you?”分词结果为[“Hello,”, “World!”, “How”, “are”, “you?”]

Whitespace:whitespace分词器仅仅根据空白字符(如空格、制表符、换行符)来分割文本,不会去除任何字符,也不会考虑标点符号。这意味着标点符号会被当作独立的词汇单元处理。例如:“Hello, World! How are you?”分词结果为[“Hello,”, " ", “World!”, " ", “How”, " ", “are”, " ", “you?”]

Keyword:keyword分词器并不真正执行分词操作。相反,它会将整个输入文本作为一个单独的词汇单元输出。这意味着输入文本中的所有内容都被认为是一个不可分割的整体。例如:“Hello, World!” 分词结果为 [“Hello, World!”]。

2. 系统架构图填空,从给出的选项中选出对应的选项填入对的位置,8个空。(12分)

分层:接入层、显示层、网络层、应用层、业务逻辑层、控制层、数据层。

技术:Mybatis、Nginx、Flink、Javascript、Node.js、RESTful、Elasticsearch、Kafka

答:

3. RESTful 架构有什么特点,是如何实现前后端分离的。(7分)

答案:

无状态性:每个请求从客户端到服务器都必须包含理解该请求所需的所有信息。服务器不会存储任何客户端的状态或会话数据,这使得前端和后端可以独立扩展,并且任意一个都可以在不影响另一个的情况下进行更新。

统一接口:Restful API 提供了一套标准的操作集(GET、POST、PUT、DELETE 等),这些操作与资源(通常是名词形式的数据实体,如用户、订单等)相关联。这种一致性简化了前端与后端之间的交互,使前端开发者可以更容易地理解和使用API。

资源导向:在 RESTful 设计中,所有的操作都是围绕着资源展开的。资源通过URL标识,并通过HTTP方法来表示对资源的不同操作。这种方式让前端能够以直观的方式与后端资源进行交互。

分层系统:RESTful 架构支持分层系统,这意味着客户端不必直接连接到最终的服务端;相反,它可以经过多个中间层(如负载均衡器、缓存代理等)。这增加了系统的灵活性和安全性,同时也便于前后端各自独立演化。

基于HTTP协议:RESTful 服务通常基于HTTP协议构建,利用HTTP的方法和状态码来传递语义信息。这使得任何能够发起HTTP请求的技术栈都可以作为前端与RESTful后端通信,从而促进了技术选型的多样性。

JSON 或 XML 数据格式:RESTful API 常常使用JSON或XML格式交换数据。这两种格式都是轻量级的、易于解析的文本格式,非常适合跨平台的数据传输。前端可以通过JavaScript轻松处理JSON对象,而后端可以用多种语言和技术生成和解析它们。

前后端分离部署:前端代码(HTML、CSS、JavaScript)可以托管在一个静态文件服务器上,甚至可以直接嵌入到单页应用(SPA)中,而不需要依赖于后端逻辑。后端则专注于提供业务逻辑和服务,两者之间仅通过API进行通信。

案例五 软件系统设计

医用血糖监测系统:题目大体是说有一个打胰岛素泵的系统,首先通过血糖仪测量的数据,然后自动计算出要使用的胰岛素剂量,再通过这个泵系统自动去打胰岛素给病人。

1.危险驱动的安全分析的4个步骤,并简要说明。(10分)

确定系统、识别危险、评估风险、确定风险控制措施、监控和复查。

2.胰岛素系统,填空题(9分)

好像有以下选项,但是不全,填空的地方有些直接用文字表达了①血糖传感器错误 ②传感系统异常 ③血糖计算不准 ④传感器错误 ⑤泵信号失效 ⑥错误时间推送预定的量 ⑦定时器失效 ⑧胰岛素计算错误。

答:

(1)②传感系统异常

(2)⑥错误时间推送预定的量

(3)⑤泵信号失效

(4)⑦定时器失效

(5)⑧胰岛素计算错误

(6)算法错误

(7)计算错误

(8)①血糖传感器错误

(9)③血糖计算不准

3.形式化开发和软件测试技术的特点。(6分)

答案:

形式化开发特点

数学基础:形式化开发方法基于数学原理,使用形式化语言来描述系统需求和设计,使得开发过程更加严谨和精确。

严格性:形式化方法要求对系统行为的每一个细节都进行明确的定义,减少歧义性。

可验证性:由于使用了数学化的描述,形式化开发的结果可以进行逻辑上的证明,确保系统满足预定的规格说明。

抽象层次:形式化方法通常涉及不同层次的抽象,从高级的需求规范到低级的实现细节。

自动化支持:形式化方法可以更容易地与自动化工具结合,例如模型检查器和定理证明器。

高成本:形式化开发通常需要高度专业化的知识和技能,因此成本较高,且不适合所有项目。

软件测试技术特点

验证和确认:软件测试旨在验证软件是否满足规定的需求,并确认软件是否按照预期工作。

多样性:测试技术多样,包括单元测试、集成测试、系统测试、验收测试等,每种测试针对不同层次的问题。

迭代过程:软件测试是一个迭代的过程,随着软件的开发和需求的变更,测试也需要不断进行和调整。

人为因素:测试很大程度上依赖于测试人员的经验、知识和创造力,因此具有一定的主观性。

成本效益:测试可以发现缺陷并指导修复,从而减少软件发布后的问题,具有较好的成本效益。

无法完全保证质量:由于测试的局限性,如测试用例的覆盖率问题,无法保证测试能够发现所有的缺陷。

测试工具:现代测试技术往往依赖于自动化测试工具,这些工具可以提高测试效率和准确性。

持续集成:在敏捷开发实践中,软件测试通常与持续集成相结合,确保代码的持续质量和稳定性。

总结:形式化开发强调的是开发过程的严谨性和可证明性,而软件测试技术则更侧重于通过实际的运行来发现和修正软件中的缺陷。两者可以互补,共同提高软件的质量。

 软考高级系统架构设计师第二版VIP课程:

系统架构设计师第二版VIP课程https://edu.csdn.net/course/detail/40283

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2315087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++介绍智能指针 十二(2)

智能指针share_ptr,与unique_ptr不同&#xff0c;多个shar_ptr对象可以共同管理一个指针&#xff0c;它们通过一个共同的引用计数器来管理指针。当一个智能指针对象销毁时&#xff0c;计数器减一。当计数器为0时&#xff0c;会将所指向的内存对象释放。 #include<memory>…

西门子S7-1200 PLC远程调试技术方案(巨控GRM532模块)

三步快速实现远程调试 硬件部署 准备西门子S7-1200 PLC、巨控GRM552YW-C模块及编程电脑。GRM552YW-C通过网口与PLC连接&#xff0c;支持4G/5G/Wi-Fi/有线网络接入&#xff0c;无需复杂布线。 软件配置 安装GVCOM3配置软件&#xff0c;注册模块&#xff08;输入唯一序列号与密…

Mac上更改默认应用程序

Mac上为某些文件设置默认打开应用的时候&#xff0c;刚开始是通过打开方式&#xff0c;其他里面&#xff0c;勾选始终以此方式打开&#xff0c;但实际上这个功能并不太好用&#xff0c;经常会让人误以为已经设置好了。但是实际上只是在当前目录起作用。真正解决这个问题可以按照…

【开源+代码解读】Search-R1:基于强化学习的检索增强大语言模型框架3小时即可打造个人AI-search

大语言模型(LLMs)在处理复杂推理和实时信息检索时面临两大挑战:知识局限性(无法获取最新外部知识)和检索灵活性不足(传统方法依赖固定检索流程)。现有方法如检索增强生成(RAG)和工具调用(Tool-Use)存在以下问题: RAG:单轮检索导致上下文不足,无法适应多轮交互场景…

贪心算法和遗传算法优劣对比——c#

项目背景&#xff1a;某钢管厂的钢筋原材料为 55米&#xff0c;工作需要需切割 40 米&#xff08;1段&#xff09;、11 米&#xff08;15 段&#xff09;等 4 种规格 &#xff0c;现用贪心算法和遗传算法两种算法进行计算&#xff1a; 第一局&#xff1a;{ 40, 1 }, { 11, 15…

网络安全防护总体架构 网络安全防护工作机制

1 实践内容 1.1 安全防范 为了保障"信息安全金三角"的CIA属性、即机密性、完整性、可用性&#xff0c;信息安全领域提出了一系列安全模型。其中动态可适应网络安全模型基于闭环控制理论&#xff0c;典型的有PDR和P^2DR模型。 1.1.1 PDR模型 信息系统的防御机制能…

SpringCloud带你走进微服务的世界

认识微服务 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 单体架构 单体架构&#xff1a;将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部…

Python设计模式 - 建造者模式

定义 建造者模式是一种创建型设计模式&#xff0c;主要用于构建包含多个组成部分的复杂对象。它将对象的构建过程与表示分离&#xff0c;使得同样的构建过程可以创建不同的对象表示。 结构 抽象建造者&#xff08;Builder&#xff09;&#xff1a;声明创建产品的各个部件的方…

在 Ubuntu 上安装和配置 Docker 的完整指南

Docker 是一个开源的平台&#xff0c;旨在简化应用程序的开发、部署和运行。通过将应用程序及其依赖项打包到容器中&#xff0c;Docker 确保应用程序可以在任何环境中一致地运行。 目录 前言安装前的准备安装 Docker 步骤 1&#xff1a;更新包索引步骤 2&#xff1a;安装必要…

网络安全之数据加密(DES、AES、RSA、MD5)

刚到公司时&#xff0c;我的工作就是为app端提供相应的接口。之前app使用的是PHP接口&#xff0c;对数据加密方面做得比较少。到使用java接口时&#xff0c;老大开始让我们使用DES加密&#xff0c;进行数据传输&#xff0c;但是后来觉得DES是对称加密&#xff0c;密钥存在客户端…

基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 校园周边美食探索及分享平台结构图…

vscode关闭仓库后如何打开

vscode源代码管理->更改->代码 关闭仓库后如何打开。 关闭仓库操作 打开仓库操作 1.按下 Ctrl Shift P&#xff08;Windows/Linux&#xff09;或 Cmd Shift P&#xff08;Mac&#xff09;打开命令面板。 2.在命令面板中输入 Git: Open Repository&#xff0c;然后选…

DeepSeek-R1 论文阅读总结

1. QA问答&#xff08;我的笔记&#xff09; Q1: DeepSeek如何处理可读性问题&#xff1f; 通过构建冷启动数据&#xff08;数千条长CoT数据&#xff09;微调基础模型&#xff0c;结合多阶段训练流程&#xff08;RL训练、拒绝采样生成SFT数据&#xff09;&#xff0c;并优化输…

Linux 》》Ubuntu 18 LTS 之后的版本 修改IP地址 主机名

进入目录 /etc/netplan 修改 50-cloud-init.yaml 》保存文件后&#xff0c;执行以下命令应用更改&#xff1a; sudo netplan apply 》》 DHCP模式 修改主机名 hostnamectl set-hostname xxxx 修改cloud.cfg 防止重启主机名还原 但测试下来 不修改&#xff0c; 重启 也不会还…

泰山派开发之—Ubuntu24.04下Linux开发环境搭建

简介 最近翻到了吃灰已久的泰山派&#xff0c;是刚出来的时候用优惠券买的&#xff0c;当时价格挺便宜的&#xff0c;最近给它翻出来了&#xff0c;打算试试做个项目。买的泰山派容量是2G16G&#xff0c;SOC芯片使用的是RK3566&#xff0c;搭载1TOP算力的NPU&#xff0c;并且具…

哈尔滨算力服务器托管推荐-青蛙云

哈尔滨年平均气温3.5摄氏度&#xff0c;有发展云计算和算力数据中心的天然优势 &#xff0c;今天为哈尔滨算力服务器托管服务商&#xff1a;青蛙云&#xff0c;黑龙江经营17年的老牌IDC服务商。 先来了解下算力服务器&#xff1a; 算力服务器&#xff0c;尤其是那些用于运行人…

openharmony体验

openharmony5 去年已经出来了 如果以前做过android开发的&#xff0c;学起来不难&#xff0c;关键 1&#xff1a;环境 DevEco Studio 5.0.3 Beta2 https://developer.huawei.com/consumer/cn/deveco-studio/ win10_64bit CPU amd64(不是arm的) 2:安装 执行EXE 安装就行&#x…

[Ai 力扣题单] 数组基本操作篇 27/704/344/386

题单分类:DeepSeek刷力扣辅助题单 存留记录-CSDN博客 27 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 这道题就一个点 1.数组在内存上连续 所以要么赋值覆盖,要么移动覆盖,但是它要求了前 k 个元素 所以只能移动覆盖 所以我有了如下思考过程: 3223 , 3举例 如果是…

Linux入门 全面整理终端 Bash、Vim 基础命令速记

Linux入门 2025 超详细全面整理 Bash、Vim 基础命令速记 刚面对高级感满满的 终端窗口是不是有点懵&#xff1f;于是乎&#xff0c;这份手册就是为你准备的高效学习指南&#xff01;我把那些让人头大的系统设置、记不住的命令都整理成了对你更友好的格式&#xff0c;让你快速学…

AI智能代码疫苗技术,赋能数字化应用内生安全自免疫

“DevSecOps市占率持续领先&#xff0c;IAST探针覆盖率十倍增长&#xff0c;代码疫苗技术已成功帮助上千家行业用户成功抵御‘Log4j2.x’等重大未知漏洞的利用攻击。”子芽在腾讯专访中透露。 这是2021年悬镜安全交出的一张成绩单。悬镜安全是DevSecOps敏捷安全先行者&#xf…