软件设计师高频真题-1

本文详细解释了CPU的控制单元、算术逻辑单元和寄存器的作用,介绍了多态的不同形式,包括编译时和运行时多态,以及中断处理机制。同时,涉及内存地址计算和图的深度优先遍历与广度优先遍历示例。
摘要由CSDN通过智能技术生成

在这里插入图片描述
解析: CPU的三个主要部分——控制单元、算术逻辑单元和寄存器,在计算机系统中发挥着重要的作用。这三个部分相互配合,共同完成计算机的各种计算、控制和存储任务。控制单元负责指令的管理和运行,算术逻辑单元负责进行各种数学和逻辑运算,寄存器则用于存储和传输数据。

控制单元是CPU的大脑,负责从内存中读取指令,并按照指令的要求来控制整个计算机系统的操作。 它将指令解码并根据指令的种类和操作码来执行相应的操作,如算术运算、逻辑运算、数据传输等。控制单元还负责管理指令的顺序和流程,并确保计算机的各个部件按照正确的顺序和时序进行工作。

算术逻辑单元(ALU) 负责进行各种数学运算和逻辑运算操作。 它可以进行加法、减法、乘法和除法等基本的算术运算,以及逻辑运算,如与、或、非等。ALU 通过使用各种逻辑门电路来实现这些基本运算,并且能够根据指令的要求对内存中的数据进行操作。

寄存器是位于CPU内部的一组快速存储器单元,用于存储和传输数据。 寄存器分为通用寄存器和专用寄存器。通用寄存器用于存储临时数据和中间结果,并且可以随时被运算单元使用。专用寄存器用于存储特定类型的数据,如程序计数器(PC)用于存储下一条指令的地址,指令寄存器(IR)用于存储当前执行的指令等。


在这里插入图片描述
解析: 本题主要考查从磁盘读取数据的过程。从磁盘存取数据,主要包括三个部分的时间,其分别是寻道时间、定位时间(旋转延迟)和传输时间,其中后两个又统称为等待时间。
寻道时间也称为查找时间,为磁头移动到目标磁道所需的时间。
定位时间为等待读写的扇区旋转到磁头下方所用的时间。
传输时间就是读写数据所需要的时间。

在本题中,题目把每个数据都交代得很清楚了,只需根据其原理计算就能得出结论。由于逻辑上相邻数据块的平均距离为5个磁道,且磁头从一个磁道移至另一个磁道需要2ms,所以当磁头读完一个数据块再读另一个时,需要10ms的时间才能将磁头定位到目标磁道,定位到磁道后,需要旋转盘片,以查找需要的数据块。题目已给出每块的旋转延迟时间及传输时间分别为10ms和1ms,所以读取100块的文件需要时间为(2*5+10+1)*100=2100ms,所以此题应选C。


在这里插入图片描述
解析: 多态总体上分为:编译时的多态(静态多态)和运行时的多态(动态多态)。

参数多态: 采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。如 C++语言中的函数模板和类模板属于参数多态。 参数多态又叫静态多态,它的执行速度快,异常少,调用在编译时已经确定。参数多态是应用比较广泛的一种多态,被称为最纯的多态。

包含多态:在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。一般需要进行运行时的类型检查,属于动态多态。包含多态的基础是虚函数。 虚函数是引入了派生概念后用来表现基类和派生类的成员函数之间的一种关系。

过载多态: 同一个名字在不同的上下文中所代表的含义不同。典型的例子是运算符重载和函数重载,属于静态多态。

强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。 程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,编译程序一般都会进行强制多态。程序员也可以显示地进行强制多态的操作。如 int+double,编译系统一般会把 int 转换为 double,然后执行 double+double 运算,这个int->double 的转换,就实现了强制多态,即可是隐式的,也可显式转换。强制多态属于静态多态。

多态性不仅增加了面向对象软件系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。

参考:多态的四种不同形式


在这里插入图片描述

解析: 立即寻址肯定是最快的,因为直接从指令中取操作数。 而对比寄存器寻找和直接寻址哪个快很容易, 寄存器的速度肯定比磁盘快,所以本题选A

在这里插入图片描述
在这里插入图片描述
解析: 中断是这样一个过程:在CPU执行程序的过程中,由于某一个外部的或CPU内部事件的发生,使CPU暂时中止正在执行的程序,转去处理这一事件(即执行中断服务程序),当事件处理完毕后又回到原先被中止的程序,接着中止前的状态继续向下执行。这一过程就称为中断,中断服务程序入口地址称为中断向量。

在这里插入图片描述
解析: 本题考查NFA有限自动机相关问题。
针对这类问题,可以采取找出对应反例的形式表示。
S0是初态,S3是终态,识别出从S0为初态到S3为终态的路径。
可以看到无论如何到达S3终态都需要经过S1-S2,即末尾必须存在”101“结尾的。
对于A和B选项不能包含连续字符的”0“和“1”,我们可以看到在S0初态中,有1个字符串0和1自循环,是可以包含连续的”0“和”1“的,所以错误。
对于C选项必须以“101”开头,说法错误,可以任意10的字符开头。

参考:2021年下半年软件设计师上午真题答案及解析


解析:依题意,图1-1所示的软件项目活动图中共有8条路径。
其中,路径A一B→D→I→J→L的工期历时为3+5+2+2+8=20个单位时间;
路径A→B→D→I→J→K→L的工期历时为3+5+2+2+2+3=17个单位时间;
路径A→B→I→J→L的工期历时为3+6+2+8=19个单位时间;
路径A一B→I→J→K→L的工期历时为3+6+2+2+3=16个单位时间;
路径A一E→G一J→L的工期历时为4+3+2+8=17个单位时间;
路径A→E→C→J→K→L的工期历时为4+3+2+2+3=14个单位时间;
路径A一E→C→H→K→L的工期历时为4+3+3+4+3=17个单位时间;
路径A→C一F→H→K→L的工期历时为5+341+4+3=16个单位时间。
关犍路径是一个相关任务序列,该序列的工期具有最大总和的特性。由于20>19>17>16>14,因此该工程项目的关键路径为A→B→D→I→J→L,关键路径长度为20个单位时间,即项目总工期为20个单位时间。

关键路径是图中从起点到终点长度最长的那条路径,而关键路径的长度则是整个项目的工期。
在本题中,路径START-D-F-H-FINISH的长度为48,是最长的一条路径,因此其是关键路径,因此D点是关键路径上的里程碑。
要求活动的松弛时间,就要求出活动的最早开始时间和最晚开始时间,其最晚开始时间减去最早开始时间,就是活动的松弛时间。 对于活动FG,其最早开始时间是108=18,而最晚开始时间48-7-3=38,因此该活动的松弛时间是20。

在这里插入图片描述
在这里插入图片描述

解析: 关键路径是图中从起点到终点长度最长的那条路径,而关键路径的长度则是整个项目的工期。
图中共有9条路径,包含2条关键路径:
第1条关键路径:A-B-F-J-L,3+6+5+8=22
第2条关键路径:A-D-G-I-J-L,5+3+2+4+8=22
关键路径和松弛时间的计算方法,这篇文章写得很清楚=>网络规划和设计-关键路径法 CPM


在这里插入图片描述
解析: 我们平时写a+b,这是中缀表达式,写成后缀表达式就是:ab+
例子:
(a+b)c-(a+b)/e的后缀表达式为:
(a+b)c-(a+b)/e
→((a+b)c)((a+b)/e)-
→((a+b)c
)((a+b)e/)-
→(ab+c
)(ab+e/)-
→ab+c
ab+e/-

在这里插入图片描述
解析:
值传递:形参不能改变实参。
地址传递:形参改变实参。
引用传递:形参改变实参。
详解C++ 参数的三种传递方式和应用场景


在这里插入图片描述

解析: 本题根据函数依赖,首先找到入度为0的属性集合A,又根据A→BC,这里根据amstrong公理中的分解规则,可以得到A→B,A→C,同时存在B→D,此时有传递函数依赖A→D,可以通过A遍历全图,因此候选键为A。本题选择C选项。

在这里插入图片描述
解析:
深度优先遍历(Depth First Search)的主要思想是:
A:首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点。
B:当没有未访问过的顶点时则回到上一个顶点,继续试探别的顶点,直至所有的顶点都被访问过。

有向图的深优先遍历图解: 访问顺序是:A -> B -> F -> H -> G -> C -> D -> E
在这里插入图片描述
广度优先遍历(Depth First Search)的主要思想是:类似于树的层序遍历
A:广度优先搜索是按层来处理顶点
B:距离开始点最近的那些顶点首先被访问
C:而最远的那些顶点则最后被访问

对无向图的广度优先遍历图解
在这里插入图片描述

A:从A开始,有4个邻接点,“B,C,D,F”,这是第二层;
B:在分别从B,C,D,F开始找他们的邻接点,为第三层。以此类推。
在这里插入图片描述
因此访问顺序是:A -> B -> C -> D -> F -> G -> E -> H

对有向图的广度优先遍历图解
在这里插入图片描述
因此访问顺序是:A -> B -> C -> F -> D -> H -> G -> E

参考:数据结构——图的两种遍历【深度优先遍历-广度优先遍历】的区别用法


在这里插入图片描述
在这里插入图片描述
解析: H为16进制标识

地址为CFFFFH-A0000H+1=30000H,
转换十进制3 * 10000H = 3 * 1 6 4 16^4 164 = 3 * 2 6 2^6 26 * 2 10 2 ^{10} 210 = 64 * 3 * 1024 字节(Byte) = 192KB

1Byte=8bit
1KB=1024Byte

所以需要芯片为 ( 64 * 3 * 1024)/ 64*1024=3 片

参考:内存以字节编址,地址范围为A0000H~CFFFFH的内存容量?

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值