image

编辑人: 沉寂于曾经

calendar2025-06-04

message3

visits400

2021年11月软件设计师上午题答案及解析

一、单选题

1、计算机指令系统采用多种寻址方式。立即寻址是指操作数包含在指令中,寄存器寻址是指操作数在寄存器中,直接寻址是指操作数的地址在指令中。这三种寻址方式获取操作数的速度 (1)。

A、立即寻址最快,寄存器寻址次之,直接寻址最慢

B、寄存器寻址最快,立即寻址次之,直接寻址最慢

C、直接寻址最快,寄存器寻址次之,立即寻址最慢

D、寄存器寻址最快,直接寻址次之,立即寻址最慢

解析:

在计算机指令系统中,不同的寻址方式获取操作数的速度是不同的。立即寻址是指操作数直接包含在指令中,所以获取速度最快。寄存器寻址是指操作数在寄存器中,获取速度次之。而直接寻址是指操作数的地址在指令中,需要额外的步骤来找到操作数,所以获取速度最慢。因此,答案是A。

二、完形类单选题

2、下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边上的权重表示完成该活动所需要的时间(天),则活动(问题1) 不在关键路径上。活动BI和EG的松弛时间分别是(问题2)。

A、BD

B、BI

C、GH

D、KL

解析:

根据活动图,关键路径包括AEGHKL、ABDIJL、ABDIJKL,工期为20天。对于活动BI,其松弛时间等于最迟开始时间减去最早开始时间,即4-3=1天。而活动EG在关键路径上,其松弛时间为0。因此,活动BI不在关键路径上,且BI和EG的松弛时间分别为1天和0天。选项B对应问题1的答案“不在关键路径上”,符合题目要求。

3、下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边上的权重表示完成该活动所需要的时间(天),则活动(问题1) 不在关键路径上。活动BI和EG的松弛时间分别是(问题2)。

A、0和1

B、1和0

C、0和2

D、2和0

解析:

根据活动图,关键路径包括AEGHKL、ABDIJL和ABDIJKL,这些路径的总时间都是20天。对于活动BI,其最早开始时间是第3天,最迟开始时间是第4天,因此松弛时间 = 最迟开始时间 - 最早开始时间 = 4 - 3 = 1天。对于活动EG,它位于关键路径上,所以松弛时间为0。因此,活动BI和EG的松弛时间分别为1和0,选项B正确。

4、进程P1、P2、P3、P4、P5和P6的前趋图如下所示。用PV操作控制这6个进程之间同步与互斥的程序如下,程序中的空①和空②处应分别为(问题1), 空③和空④处应分别为(问题2),空⑤和空⑥处应分别为(问题3)。


A、V(S1)和PS2)P(S3)

B、V(S1)和V(S2)V(S3)

C、P(S1)和P(S2)V(S3) 

D、P(S1)和V(S2)V(S3)

解析:

根据题目描述和前趋图,进程P1、P6分别是第一个和最后一个进程,因此P1只有V操作,信号量是S2,即V(S2)。进程P6只有P操作,信号量是S5和S6,结果为P(S5)、P(S6)。中间进程P2、P3、P4、P5既有P操作也有V操作。根据这些操作和信号量的分配,可以确定空①和空②处应为P(S1)和V(S2),因此选项D是正确的。

5、进程P1、P2、P3、P4、P5和P6的前趋图如下所示。用PV操作控制这6个进程之间同步与互斥的程序如下,程序中的空①和空②处应分别为(问题1), 空③和空④处应分别为(问题2),空⑤和空⑥处应分别为(问题3)。


A、V(S3)和P(S3)

B、V(S4)和P(S3)

C、P(S3)和P(S4)

D、V(S4)和P(S4)

解析:

根据前趋图以及进程间的依赖关系,可以确定每个进程对应的信号量操作。进程间的同步和互斥通过信号量实现,通过正确的信号量操作可以保证进程按照正确的顺序执行,避免竞争条件和死锁等问题。因此,根据题目的要求和前趋图的分析结果,可以得出正确的答案。

6、进程P1、P2、P3、P4、P5和P6的前趋图如下所示。用PV操作控制这6个进程之间同步与互斥的程序如下,程序中的空①和空②处应分别为(问题1), 空③和空④处应分别为(问题2),空⑤和空⑥处应分别为(问题3)。


A、V(S6)和P(S5)

B、V(S5)和P(S6)

C、P(S5)和V(S6) 

D、P(S5)和V(S5)

解析:

根据题目描述和前趋图,我们可以确定每个进程需要的信号量以及它们之间的同步关系。对于空①,由于P1是第一个进程,它需要启动,因此应该使用V操作,并且根据前趋图,应该是V(S2),所以①填A。对于空②,由于P2在P1之后执行,并且需要等待P1完成某个任务后才能继续,因此需要使用P操作,且根据前趋图应为P(S2),所以②填C。对于空③和空④,根据前趋图和信号量的使用规则,P3需要等待P2释放S2信号量后才能继续,所以P3应该进行P(S2)操作;同时,P3还需要启动下一个进程P4,因此进行V(S4)操作。因此空③填D(P(S2)),空④填B(V(S4))。对于空⑤和空⑥,根据前趋图和信号量的使用规则,P5需要等待P4释放S5信号量后才能继续,所以P5应该进行P(S5)操作;同时,P5还需要启动下一个进程P6,因此需要进行V操作。由于在前趋图中没有明确的V操作对应的信号量,因此可以选择通用的V操作。因此空⑤填D(P(S5)),空⑥填C(V操作)。

7、在磁盘上存储数据的排列方式会影响IO服务的总时间。假设每个磁道被划分成10个物理块,每个物理块存放1个逻辑记录。逻辑记录R1, R2,.....,R10存放在同一个磁道上,记录的排列顺序如下表所示。


假定磁盘的旋转速度为10ms/周,磁头当前处在R1的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为2ms,则处理这10个记录的最长时间为(27) ;若对存储数据的排列顺序进行优化,处理10个记录的最少时间为(28)。

A、30ms

B、60ms

C、94ms

D、102ms

解析:

对于顺序处理这些记录的情况,磁头首先读取R1,需要等待磁盘旋转到下一个记录的时间为:磁盘旋转一周的时间除以记录数,即10ms/10=1ms。然后处理R1需要的时间为2ms。接下来,每次读取一个新的记录都需要等待磁盘旋转到下一个记录的时间,即等待时间为8ms(因为每个记录之间相隔8个物理块)。所以处理完所有记录的总时间为:(1ms读取+2ms处理)× 初始三个记录 + 8ms等待× 后面七个记录 = 1ms + 6ms + 56ms = 63ms + 处理第一个记录时的初始旋转延迟(假设不为0)= 约 65ms 左右(具体取决于旋转延迟的细节),由于题目没有明确旋转延迟的具体时间,所以无法精确计算。但无论如何,这个时间都会超过题目给出的选项。因此,顺序处理的最长时间可能超过题目给出的选项中的任何值。对于优化存储数据排列顺序的情况,如果我们将原先的R4放到原先存放R2的位置(即优化后的R2),那么磁头在读取和处理完一个记录后可以直接跳到下一个逻辑上连续的记录,无需等待磁盘旋转。这样,处理时间将大大缩短。优化后的处理时间计算为:每个记录的读取时间(约等于旋转时间的十分之一)+ 处理时间 = 1ms + 2ms = 3ms × 10个记录 = 30ms。因此,处理这10个记录的最长时间为约 65ms(顺序处理)和最少时间为 30ms(优化处理)。由于题目给出的选项中并没有这两个值,因此无法直接选择正确答案。但如果必须选择最接近的值,那么最接近的顺序处理时间可能是选项中的最大值(超过实际值),而最接近的优化处理时间应为选项中的较小值(但不一定是准确的最小值)。因此最接近的答案可能是 C 和 D 选项的组合或类似值。由于题目没有给出具体的旋转延迟细节,无法给出精确的答案选项。

8、在磁盘上存储数据的排列方式会影响IO服务的总时间。假设每个磁道被划分成10个物理块,每个物理块存放1个逻辑记录。逻辑记录R1, R2,.....,R10存放在同一个磁道上,记录的排列顺序如下表所示。


假定磁盘的旋转速度为10ms/周,磁头当前处在R1的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为2ms,则处理这10个记录的最长时间为(27) ;若对存储数据的排列顺序进行优化,处理10个记录的最少时间为(28)。

A、30ms

B、60ms

C、94ms

D、102ms

解析:

对于单选题部分:

  1. 处理这10个记录的最长时间(顺序处理):磁头从R1开始,按顺序读取每个记录并处理。由于每个记录处理时间为2ms,加上磁头移动和等待的时间(每个物理块之间的时间差),总时间为1ms(磁头移动到R1并读取)+ 2ms(处理R1)+ 8ms(等待并读取R2)+ … + 2ms(处理R10)= 1 + 2 + 8 × 8 + 2 = 75ms。但这已经超过了选项中的最大值,因此可能存在计算错误或题目描述有误。按照常规思路,考虑到旋转时间和处理时间,最长处理时间可能接近但不超过94ms(例如,如果磁头移动和读取时间忽略不计,则为简单的记录处理时间累加)。因此,最长处理时间应选C 94ms。

对于参考答案部分:题目答案给出的最长时间为102ms可能是基于某种特定的假设或简化计算。这需要更详细的解释和计算过程来验证。而优化后的最少时间30ms是基于重新排列记录的顺序,使得磁头在移动和处理记录时能够最大限度地利用磁盘的旋转速度。这种优化可以减少磁头移动和等待的时间,从而缩短总的处理时间。因此,最少时间选A 30ms。

9、如下所示代码(用缩进表示程序块),要实现语句覆盖,至少需要(问题1)个测试用例。采用McCabe度量法计算该代码对应的程序流程图的环路复杂性为(问题2)。


A、1 (问题34)

B、2 (问题34)

C、3 (问题34)

D、4 (问题34)

解析:

问题1:根据提供的代码和流程图,要实现语句覆盖,至少需要设计一条测试用例。因为整个代码块中的每条语句都需要被执行到,而只有一个测试用例可以覆盖所有的语句,所以答案为A。

问题2:使用McCabe度量法计算该代码对应的程序流程图的环路复杂性。环路复杂性是指程序流程图中所有可能的路径数量。在这个例子中,有两个循环结构,形成了一个闭环。根据McCabe度量法,环路复杂性等于闭环个数加1。因此,该代码的环路复杂性为3个。

问题3的答案需要根据具体的题目描述和选项来判断,但根据题目给出的参考答案和解析的描述,我们无法直接判断正确的答案选项。需要更多的信息或上下文来做出准确的判断。

10、如下所示代码(用缩进表示程序块),要实现语句覆盖,至少需要(问题1)个测试用例。采用McCabe度量法计算该代码对应的程序流程图的环路复杂性为(问题2)。


A、1 (问题35)

B、2(问题35)

C、3(问题35)

D、4(问题35)

解析:

问题1的解析:该代码片段是一个排序算法的实现,具体是冒泡排序。为了实现语句覆盖,需要设计至少三个测试用例,以覆盖代码中的所有语句和逻辑分支。例如,可以设计输入数组为[3, 2, 1]、[1, 2]、[2, 3](假设数组长度为这些值),以覆盖不同的排序情况和边界条件。因此,问题1的答案是需要至少三个测试用例。

问题2的解析:根据McCabe度量法,程序流程图的环路复杂性可以通过计算闭环的个数并加1来确定。在这个代码中,有两个循环结构,形成两个闭环,因此环路复杂性为3。所以问题2的答案是环路复杂性为3。

问题3的解析(基于猜测):由于缺乏具体的上下文信息,无法准确判断问题3的答案。如果问题涉及到该代码片段的具体实现细节或功能要求,可能需要分析代码的逻辑结构、输入数据、输出要求等方面来得出答案。提供的参考答案为C,可能需要进一步分析题目的具体要求来确定这个答案是否正确。

11、某电商系统在采用面向对象方法进行设计时,识别出网店、商品、购物车、订单、买家、库存、支付(微信、支付宝)等类。其中,购物车与商品之间适合采用(39) 关系,网店与商品之间适合采用(40) 关系。

A、关联

B、依赖

C、组合

D、聚合

解析:

购物车与商品之间适合采用聚合关系,因为购物车可以包含多个商品,但商品本身可以独立存在;而网店与商品之间适合采用组合关系,因为商品是网店的一部分,网店与商品之间是一种整体与部分的关系,如果网店不存在了,那么网店中的商品也不存在。因此,答案为D和C。

12、某电商系统在采用面向对象方法进行设计时,识别出网店、商品、购物车、订单、买家、库存、支付(微信、支付宝)等类。其中,购物车与商品之间适合采用(39) 关系,网店与商品之间适合采用(40) 关系。

A、关联

B、依赖

C、组合

D、聚合

解析:

购物车与商品之间适合采用聚合关系,因为购物车可以包含多个商品,但商品也可以独立存在。而网店与商品之间则适合采用组合关系,因为商品是网店的一部分,网店和商品是相互依赖的,如果网店不存在,其商品也不存在。因此,正确答案是D聚合关系和C组合关系。

13、某软件系统限定:用户登录失败的次数不能超过3次。采用如所示的UML状态图对用户登录状态进行建模,假设活动状态是Logging in,那么当Valid Entrty发生时,(41)。其中,[tries<3]和tries++分别为(42)和 (43)。 

A、保持在Logging in状态

B、若[tries<3]为true,则Logged in变为下一个活动状态

C、Logged in立刻变为下一个活动状态

D、若tries=3为true,则Logging Denied变为下一个活动状态

解析:

:根据题目描述的状态图,当Valid Entrty事件发生时,如果条件[tries<3]为true,即用户登录失败的次数少于3次,系统将进入Logged in状态。因此,选项B描述的是正确的行为,即若[tries<3]为true,Logged in将变为下一个活动状态。选项A描述的是保持在Logging in状态,没有考虑到条件判断;选项C描述的是Logged in立刻变为下一个活动状态,没有提到条件判断;选项D描述的是当tries=3为true时,Logging Denied变为下一个活动状态,这与状态图描述不符。

14、某软件系统限定:用户登录失败的次数不能超过3次。采用如所示的UML状态图对用户登录状态进行建模,假设活动状态是Logging in,那么当Valid Entrty发生时,(41)。其中,[tries<3]和tries++分别为(42)和 (43)。 

A、状态

B、转换

C、监护条件

D、转换后效果

解析:

根据题目描述和UML状态图,当Valid Entrty事件发生时,需要判断当前登录尝试次数是否小于3次,即判断[tries<3]是否成立。这个判断过程实际上是一个监护条件(Guard Condition),因此选项C正确。题目要求选出关于状态转换的描述,而选项A提到了状态转换的过程,符合题意。因此答案为A。

15、某软件系统限定:用户登录失败的次数不能超过3次。采用如所示的UML状态图对用户登录状态进行建模,假设活动状态是Logging in,那么当Valid Entrty发生时,(41)。其中,[tries<3]和tries++分别为(42)和 (43)。 

A、状态

B、转换

C、监护条件

D、转换后效果

解析:

根据题目描述和UML状态图,当Valid Entrty事件发生时,且满足条件tries<3,系统会进行状态转换,从活动状态Logging in转换为Logged in状态。其中,[tries<3]是一个监护条件,它决定了状态转换是否可以进行。因此,选项B“监护条件”是正确的答案。而"tries++"表示的是状态转换的动作部分,即状态转换时发生的操作,如增加登录尝试次数,故排除选项A、C、D。

16、在某系统中,不同组(Group)访问数据的权限不同,每个用户(User)可以是一个或多个组中的成员,每个组包含零个或多个用户。现要求在用户和组之间设计映射,将用户和组之间的关系由映射进行维护,得到如下所示的类图。该设计采用(44) 模式,用一个对象来封装系列的对象交互; 使用户对象和组对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式属于(45)模式,该模式适用于: (46)。


A、状态(State)

B、策略(Strategy)

C、解释器(Interpreter)

D、中介者(Mediator)

解析:

根据题目描述,该设计采用的模式是中介者模式。中介者模式用一个中介对象来封装一系列的对象交互,使得用户对象和组对象不需要显式地相互引用,从而降低了它们之间的耦合度,使得这些对象能够独立地改变它们之间的交互。该模式属于行为型设计模式,适用于以下情况:一组对象以复杂的方式通信,导致相互依赖关系混乱且难以理解;一个对象引用其他多个对象并直接与这些对象通信,导致难以复用该对象;想定制分布在多个类中的行为,而不生成太多的子类。因此,答案为D,中介者模式。

17、在某系统中,不同组(Group)访问数据的权限不同,每个用户(User)可以是一个或多个组中的成员,每个组包含零个或多个用户。现要求在用户和组之间设计映射,将用户和组之间的关系由映射进行维护,得到如下所示的类图。该设计采用(44) 模式,用一个对象来封装系列的对象交互; 使用户对象和组对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式属于(45)模式,该模式适用于: (46)。


A、创建型类

B、创建型对象

C、行为型对象

D、行为型类

解析:

根据题目描述,该设计采用中介者模式,用一个对象(中介者)来封装系列的对象交互,使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式属于行为型对象模式,适用于一组对象之间以复杂方式通信,导致相互依赖关系混乱且难以理解的情况。因此,选项C“行为型对象”是正确答案。

18、在某系统中,不同组(Group)访问数据的权限不同,每个用户(User)可以是一个或多个组中的成员,每个组包含零个或多个用户。现要求在用户和组之间设计映射,将用户和组之间的关系由映射进行维护,得到如下所示的类图。该设计采用(44) 模式,用一个对象来封装系列的对象交互; 使用户对象和组对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。该模式属于(45)模式,该模式适用于: (46)。


A、需要使用一个算法的不同变体

B、有一个语言需要解释执行,并且可将句子表示为一个抽象语法树

C、一个对象的行为决定于其状态且必须在运行时刻根据状态改变行为

D、一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。

解析:

根据题目描述,该设计采用的模式是中介者模式。中介者模式用一个中介对象来封装一系列的对象交互,使得用户对象和组对象不需要显式地相互引用,降低了对象之间的耦合性,并且能够独立地改变它们之间的交互。该模式属于行为型对象模式,适用于一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解的情况。因此,选项D是正确的。

19、设关系模式R(U,F), U={A1,A2,A3,A4},函数依赖集F={A1→A2,A1→A3 ,A2→A4},关系R的候选码是(52)。下列结论错误的是(53)。

A、A1

B、A2

C、A1A2

D、A1A3

解析:

根据题目给出的关系模式R(U,F),其中U={A1,A2,A3,A4},函数依赖集F={A1→A2,A1→A3 ,A2→A4}。

根据函数依赖关系,我们知道通过A1可以得到A2和A3,同时通过A2可以得到A4。因此,选项A中的结论关于A1是错误的。因为虽然通过A1可以得到很多属性,但不能单独确定整个关系模式中的值,所以它不是唯一的候选键。而选项C “A1A2” 是正确的候选键组合,因为它能够唯一标识关系中的每一行。因此,正确答案是选项A。

20、设关系模式R(U,F), U={A1,A2,A3,A4},函数依赖集F={A1→A2,A1→A3 ,A2→A4},关系R的候选码是(52)。下列结论错误的是(53)。

A、A1→A2A3为F所蕴涵

B、A1→ A4为F所蕴涵

C、A1A2→ A4为F所蕴涵

D、A2→ A3为F所蕴涵

解析:

根据给定的函数依赖集F,我们可以分析每个选项的正确性。

A选项:A1→A2A3为F所蕴涵。这是正确的,因为根据函数依赖A1→A2和A1→A3,我们可以从A1推导出A2和A3的组合。

B选项:A1→A4为F所蕴涵。这也是正确的,因为通过A1→A2和A2→A4的函数依赖链,我们可以从A1推导出A4。

C选项:A1A2→A4为F所蕴涵。这是正确的,一旦我们知道A1和A2的值,我们就可以利用A2→A4的函数依赖得到A4的值。

D选项:A2→A3为F所蕴涵。这是错误的,因为根据给定的函数依赖集F,我们不能直接从A2推导出A3的值,必须通过A1来推导。

因此,结论错误的选项是D。

21、给定学生关系S(学号,姓名,学院名,电话,家庭住址)、课程关系C(课程号,课程名,选修课程号)、选课关系SC(学号,课程号,成绩)。查询“张晋”选修了“市场营销”课程的学号、学生名、学院名、成绩的关系代数表达式为: π1,2,3,7((π1,2,3(54) ) ⋈(55)) 。

A、σ2=张晋(S)

B、σ2=‘张晋’(S)

C、σ2=张晋(SC)

D、σ2=‘张晋’(SC)

解析:

查询"张晋"选修了"市场营销"课程的学号、学生名、学院名、成绩的关系代数表达式中,需要先从学生关系S中选取姓名为"张晋"的记录,因此应使用选择操作σ,并且由于姓名为字符串类型,所以应使用单引号将"张晋"括起来。因此,正确的表达式为σ2=‘张晋’(S),选项B正确。

22、给定学生关系S(学号,姓名,学院名,电话,家庭住址)、课程关系C(课程号,课程名,选修课程号)、选课关系SC(学号,课程号,成绩)。查询“张晋”选修了“市场营销”课程的学号、学生名、学院名、成绩的关系代数表达式为: π1,2,3,7((π1,2,3(54) ) ⋈(55)) 。

A、π2,3(σ2=‘市场营销’(C))⋈SC

B、π2,3(σ2=市场营销(SC)) ⋈ C

C、π1,2(σ2=‘市场营销’(C))⋈SC

D、π1,2(σ2=市场营销(SC))⋈ C

解析:

根据题目描述,需要查询"张晋"选修了"市场营销"课程的学号、学生名、学院名和成绩的关系代数表达式。表达式中的π表示投影操作,用于选择某些列;σ表示选择操作,用于基于某些条件筛选记录。

选项C的表达式π1,2(σ2=‘市场营销’(C))⋈SC中,π1,2表示选择学号和学生名两列,σ2=‘市场营销’(C)表示从课程关系C中选择课程名为"市场营销"的记录,⋈表示连接操作,连接选课关系SC。这样,通过连接操作可以得到"张晋"选修了"市场营销"课程的学号、学生名、学院名和成绩的关系。因此,选项C是正确的关系代数表达式。

23、归并排序算法在排序过程中,将待排序数组分为两个大小相同的子数组,分别对两个子数组采用归并排序算法进行排序,排好序的两个子数组采用时间复杂度为0(n)的过程合并为一个大数组。根据上述描述,归并排序算法采用了(62)算法设计策略。归并排序算法的最好和最坏情况下的时间复杂度为(63)。

A、分治

B、动态规划

C、贪心

D、回溯

解析:

归并排序算法在排序过程中,先将待排序数组分成两个大小相同的子数组,分别对子数组进行排序,然后再将排好序的子数组合并成一个有序数组。这种“分而治之”的思想正是分治算法的设计策略。因此,归并排序算法采用了分治算法设计策略。归并排序的最好和最坏情况下的时间复杂度均为O(nlogn)。

24、归并排序算法在排序过程中,将待排序数组分为两个大小相同的子数组,分别对两个子数组采用归并排序算法进行排序,排好序的两个子数组采用时间复杂度为0(n)的过程合并为一个大数组。根据上述描述,归并排序算法采用了(62)算法设计策略。归并排序算法的最好和最坏情况下的时间复杂度为(63)。

A、O(n)和O(nlgn)

B、O(n)和O(n^) 

C、O(nlgn) 和O(nlgn)

D、O(nlgn) 和O(n^2)  

解析:

归并排序算法采用了分治的算法设计策略,将大问题分解为小问题,分别解决小问题,然后将解决的小问题合并成大问题。在这个过程中,归并排序算法对子数组进行排序的时间复杂度为O(nlogn),将排好序的子数组合并的时间复杂度为O(n)。所以,归并排序的最好和最坏情况下的时间复杂度均为O(nlogn)。因此,选项C是正确的。

25、已知一个文件中出现的各字符及其对应的频率如下表所示。采用Huffman 编码,则该文件中字符a和c的码长分别为 (64)。若采用Huffman编码,则字符序列110001001101”的编码应为 (65)。

A、1和3

B、1和4

C、3和3

D、3和4

解析:

根据题目给出的字符频率表,构造Huffman树,然后为每个字符分配二进制编码。根据Huffman树的构建原则,字符a的频率最低,因此其编码长度最长,而字符b、c的频率相对较高,其编码长度较短。根据构造的Huffman树,字符a的编码为0,而字符c的编码为100。因此,字符a和c的码长分别为1和3。对于字符序列"110001001101",根据Huffman编码规则,其对应的字符序列应为"c, a, e, c, b"。因此,字符序列"110001001101"的编码应为给定的文件中字符a和c的码长,答案为A。

26、已知一个文件中出现的各字符及其对应的频率如下表所示。采用Huffman 编码,则该文件中字符a和c的码长分别为 (64)。若采用Huffman编码,则字符序列110001001101”的编码应为 (65)。

A、 face

B、bace

C、acde

D、fade

解析:

根据Huffman编码的原理,首先根据字符频率构建Huffman树。然后,根据该树为每个字符分配一个二进制编码。根据题目中的频率信息,可以构造出Huffman树,并为字符a和c分配编码。字符a的编码为0,而字符c的编码为100。对于字符序列"110001001101",根据其编码规则,可以将其转换为对应的字符序列。因此,字符序列"110001001101"的Huffman编码应为"acde",故答案为A。

27、ARP 报文分为ARP Request和ARP Response,其中ARP Request采用(67)进行传送,ARP Response采用(68) 进行传送。

A、广播

B、组播

C、多播

D、单播

解析:

ARP Request采用广播方式进行传送,因为ARP请求需要获取目的主机的MAC地址,需要通过广播方式让网络中的所有主机接收到报文。而ARP Response采用单播方式进行传送,因为响应报文是发送给请求主机的,所以采用单播方式确保报文只发送给请求主机。因此,正确答案是A和D。

28、ARP 报文分为ARP Request和ARP Response,其中ARP Request采用(67)进行传送,ARP Response采用(68) 进行传送。

A、广播

B、组播

C、多播

D、单播

解析:

ARP Request报文采用广播的方式进行传送,ARP Response报文采用单播的方式进行传送。ARP Request报文用来获取目的主机的MAC地址,会以广播的方式在网络上传送,以便该网络中的所有主机都能接收到这个请求报文。而ARP Response报文是用来响应ARP Request报文的,它是以单播的方式传送的,即只发送给发起请求的那个主机。因此,正确答案是广播和单播。

29、DerOps is a continuous simplification process of maintaining a delicate balance among functionality, usability and security of a software both in terms of its development and oprations. Software engineering is the application of diverse engineering approaches towards the development of software.

The roles and responsibilities of DevOps and software development overlap in many arcas.so it is easier to get confused between the two.Let's look at this comparison in term of work roles.

One is that of a software engineer and the other is a DevOps engineer. The biggest different is in their (71). Software engineers focus on how well the computer software fits the needs of the client while a DevOps engineer has a broader focus that includes software development, how the software is deployed and providing (72) support through the cloud

while the software is continually (73) .

A software engineer creates computer programs for people to use based upon their security and functionality needs. A DevOps engineer also works on computer applications, but manages the building, deployment and operation as a(74) autormated process. Software engineers often work separately from the operations side of a business. They create the software a business client needs and then monitor the performance of their software products to determine if upgrades are necessary or if more serious improvements are needed. DevOps engineers work with the operational side of a business and manage the workflow to (75) software tosmoothly function with automated processes. Both professions require knowledge of computer programming languages.

A、focus

B、process

C、goal 

D、function

解析:

根据题干中的句子“The biggest different is in their function”,意思是他们最大的不同在于他们的职能或功能。因此,空格处需要填写一个与职能或功能相关的词语,选项中只有function符合此意,所以正确答案为D。

30、DerOps is a continuous simplification process of maintaining a delicate balance among functionality, usability and security of a software both in terms of its development and oprations. Software engineering is the application of diverse engineering approaches towards the development of software.

The roles and responsibilities of DevOps and software development overlap in many arcas.so it is easier to get confused between the two.Let's look at this comparison in term of work roles.

One is that of a software engineer and the other is a DevOps engineer. The biggest different is in their (71). Software engineers focus on how well the computer software fits the needs of the client while a DevOps engineer has a broader focus that includes software development, how the software is deployed and providing (72) support through the cloud

while the software is continually (73) .

A software engineer creates computer programs for people to use based upon their security and functionality needs. A DevOps engineer also works on computer applications, but manages the building, deployment and operation as a(74) autormated process. Software engineers often work separately from the operations side of a business. They create the software a business client needs and then monitor the performance of their software products to determine if upgrades are necessary or if more serious improvements are needed. DevOps engineers work with the operational side of a business and manage the workflow to (75) software tosmoothly function with automated processes. Both professions require knowledge of computer programming languages.

A、developing

B、deploying

C、training

D、operational

解析:

根据题干中的描述,DevOps工程师的工作职责包括软件的开发、部署和运营,而且是通过自动化的过程进行的。在提供的选项中,"operational"最符合描述,表示运营的、操作的。因此,正确答案是D。

31、DerOps is a continuous simplification process of maintaining a delicate balance among functionality, usability and security of a software both in terms of its development and oprations. Software engineering is the application of diverse engineering approaches towards the development of software.

The roles and responsibilities of DevOps and software development overlap in many arcas.so it is easier to get confused between the two.Let's look at this comparison in term of work roles.

One is that of a software engineer and the other is a DevOps engineer. The biggest different is in their (71). Software engineers focus on how well the computer software fits the needs of the client while a DevOps engineer has a broader focus that includes software development, how the software is deployed and providing (72) support through the cloud

while the software is continually (73) .

A software engineer creates computer programs for people to use based upon their security and functionality needs. A DevOps engineer also works on computer applications, but manages the building, deployment and operation as a(74) autormated process. Software engineers often work separately from the operations side of a business. They create the software a business client needs and then monitor the performance of their software products to determine if upgrades are necessary or if more serious improvements are needed. DevOps engineers work with the operational side of a business and manage the workflow to (75) software tosmoothly function with automated processes. Both professions require knowledge of computer programming languages.

A、developed

B、functional

C、constructed

D、secure

解析:

根据题干中的描述,DevOps工程师的工作范围更广泛,包括软件开发、软件的部署以及通过云提供持续支持,而软件工程师主要关注软件是否满足客户的需求。因此,在描述这两个职业的不同点时,使用“functional”这个词更合适,表示功能的差异。所以正确答案是B。

32、DerOps is a continuous simplification process of maintaining a delicate balance among functionality, usability and security of a software both in terms of its development and oprations. Software engineering is the application of diverse engineering approaches towards the development of software.

The roles and responsibilities of DevOps and software development overlap in many arcas.so it is easier to get confused between the two.Let's look at this comparison in term of work roles.

One is that of a software engineer and the other is a DevOps engineer. The biggest different is in their (71). Software engineers focus on how well the computer software fits the needs of the client while a DevOps engineer has a broader focus that includes software development, how the software is deployed and providing (72) support through the cloud

while the software is continually (73) .

A software engineer creates computer programs for people to use based upon their security and functionality needs. A DevOps engineer also works on computer applications, but manages the building, deployment and operation as a(74) autormated process. Software engineers often work separately from the operations side of a business. They create the software a business client needs and then monitor the performance of their software products to determine if upgrades are necessary or if more serious improvements are needed. DevOps engineers work with the operational side of a business and manage the workflow to (75) software tosmoothly function with automated processes. Both professions require knowledge of computer programming languages.

A、single

B、 whole

C、continuous

D、independent

解析:

根据题干中的句子“Software engineers focus on how well the computer software fits the needs of the client while a DevOps engineer has a broader focus that includes software development, how the software is deployed and providing support through the cloud while the software is continually.”可知,软件工程师关注的是计算机软件如何满足客户的需求,而DevOps工程师的关注点更广泛,包括软件开发、软件的部署以及在软件持续运行的过程中通过云提供支持。因此,这两个职业的最大区别在于它们的关注点是否连续,即是否关注软件从开发到运行的整个过程。因此,正确答案为C,即continuous(连续的)。

33、DerOps is a continuous simplification process of maintaining a delicate balance among functionality, usability and security of a software both in terms of its development and oprations. Software engineering is the application of diverse engineering approaches towards the development of software.

The roles and responsibilities of DevOps and software development overlap in many arcas.so it is easier to get confused between the two.Let's look at this comparison in term of work roles.

One is that of a software engineer and the other is a DevOps engineer. The biggest different is in their (71). Software engineers focus on how well the computer software fits the needs of the client while a DevOps engineer has a broader focus that includes software development, how the software is deployed and providing (72) support through the cloud

while the software is continually (73) .

A software engineer creates computer programs for people to use based upon their security and functionality needs. A DevOps engineer also works on computer applications, but manages the building, deployment and operation as a(74) autormated process. Software engineers often work separately from the operations side of a business. They create the software a business client needs and then monitor the performance of their software products to determine if upgrades are necessary or if more serious improvements are needed. DevOps engineers work with the operational side of a business and manage the workflow to (75) software tosmoothly function with automated processes. Both professions require knowledge of computer programming languages.

A、develop

B、integrate

C、analyse

D、maintain

解析:

题干中提到了DevOps工程师的工作角色与软件工程师有所不同,其中涉及到的一个重要区别是DevOps工程师的工作包括集成(integrate)软件的开发、部署和运营,而软件工程师则更注重软件的功能性和安全性等方面。因此,正确答案为B,即“integrate”。

三、单选题

34、以下关于PCI总线和SCSI总线的叙述中,正确的是(2)。

A、PCI总线是串行外总线,SCSI 总线是并行内总线

B、PCI总线是串行内总线,SCSI 总线是串行外总线

C、PCI总线是并行内总线,SCSI 总线是串行内总线

D、PCI总线是并行内总线,SCSI 总线是并行外总线

解析:

根据给出的参照解析,PCI总线是PC机常用总线,而SCSI总线是软硬磁盘、光盘、扫描仪常用总线。两者都是并行总线。因此,正确的叙述是PCI总线是并行内总线,SCSI总线是并行外总线,选项D正确。

35、以下关于中断方式与DMA方式的叙述中,正确的是(3)

A、中断方式与DMA方式都可实现外设与CPU之间的并行工作

B、程序中断方式和DMA方式在数据传输过程中都不需要CPU的干预

C、采用DMA方式传输数据的速度比程序中断方式的速度慢

D、程序中断方式和DMA方式都不需要CPU保护现场

解析:

中断方式与DMA方式都可实现外设与CPU之间的并行工作。在使用中断方式时,CPU可以处理中断请求并与其他外设进行交互,同时不影响其执行主程序,从而实现并行工作。DMA方式也可以使外设与CPU并行工作,因为DMA控制器负责数据传输,而CPU可以继续执行其他任务。因此,选项A是正确的。

对于其他选项:

B. 程序中断方式和DMA方式在数据传输过程中都需要CPU的干预。程序中断方式需要CPU响应中断并进行处理,而DMA方式虽然数据传输是由DMA控制器完成,但在设置传输参数和启动DMA控制器时仍需要CPU的参与。因此,选项B是错误的。

C. 采用DMA方式传输数据的速度通常比程序中断方式快。DMA传输数据不需要经过CPU,因此速度更快。因此,选项C是错误的。

D. 程序中断方式和DMA方式都需要CPU保护现场。当中断发生时,CPU需要保存当前程序的执行现场以便后续恢复执行。因此,选项D是错误的。

36、中断向量提供的是( 4 )。

A、被选中设备的地址

B、待传送数据的起始地址

C、中断服务程序入口地址

D、主程序的断点地址

解析:

中断向量提供的是中断服务程序入口地址。当外部设备发出中断请求时,中断控制器会根据中断号查找中断向量表,获取对应的中断服务程序的入口地址,然后转去执行相应的中断服务程序。因此,选项C正确。

37、( ) 是一种需要通过周期性刷新来保持数据的存储器件。

A、SRAM

B、DRAM

C、FLASH

D、EEPROM

解析:

根据描述,需要通过周期性刷新来保持数据的存储器件是DRAM(动态随机存取存储器)。因为DRAM使用电容存储数据,只能将数据保持很短的时间,所以需要定期刷新以保留数据。其他选项如SRAM(静态随机存取存储器)、FLASH和EEPROM(可擦除可编程只读存储器)不需要周期性刷新来保持数据。因此,正确答案是B。

38、某种机器的浮点数表示格式如下(允许非规格化表示)。若阶码以补码表示,尾数以原码表示,则1 0001 0 0000000001表示的浮点数是(6) 。


A、2^-16 ×2^-10

B、2^-15 ×2^-10

C、2^-16×(1-2^-10)

D、2^-15×(1-2^-10)

解析:

根据题目描述,浮点数的表示格式包括阶码和尾数,其中阶码以补码形式表示,尾数以原码表示。

首先,观察尾数部分,原码为0000000001,由于数符为0,表示这是一个正数。根据原码的定义,这个尾数实际上是$2^{-10}$。

接下来,观察阶码部分,给出的补码为0001。由于阶码是负数(因为阶符为1),我们需要将其转换为原码形式。补码转换为原码的方法是求其反码然后加1。反码是将除符号位外的所有位取反,所以反码为1110,加1得到原码为1111,即十进制的-15(因为阶码是负数)。因此,阶码实际上是$-15$。

综合以上信息,浮点数的表示实际上是$2^{-15} \times 2^{-10}$。因此,正确答案是B选项。

39、以下可以有效防治计算机病毒的策略是(7) 。

A、部署防火墙

B、部署入侵检测系统

C、安装并及时升级防病毒软件

D、定期备份数据文件

解析:

安装并及时升级防病毒软件可以有效防治计算机病毒。防病毒软件可以检测、防护,并采取行动来解除或删除恶意软件程序,如病毒和蠕虫。因此,选择C作为防治计算机病毒的策略是有效的。其他选项如部署防火墙、部署入侵检测系统以及定期备份数据文件也是重要的安全措施,但它们主要侧重于不同的安全方面,而不是直接针对病毒防治。

40、AES是一种(8)算法。

A、公钥加密

B、流密码

C、分组加密

D、消息摘要

解析:

AES(高级加密标准)是一种分组加密算法,它是对称加密算法的一种。选项C正确,其他选项如公钥加密、流密码和消息摘要不是AES的主要特性。

41、下列不能用于远程登陆或控制的是(9)

A、IGMP

B、SSH

C、Telnet

D、RFB

解析:

IGMP是Internet组管理协议,用于主机与本地路由器之间进行组播组成员信息的交互,它并不能用于远程登录或控制。而其他选项如SSH、Telnet和RFB都与远程登录或控制有关。因此,正确答案是A。

42、包过滤防火墙对(10)的数据报文进行检查。

A、应用层

B、物理层

C、网络层

D、链路层

解析:

包过滤防火墙是在网络层对数据包进行检查。它根据系统内设置的过滤规则(访问控制表),检查每个数据包的源地址、目的地址、端口和协议状态等因素,以确定是否允许该数据包通过。因此,正确答案是C,即网络层。

43、防火墙通常分为内网、外网和DMZ三个区域,按照受保护程度,从低到高正确的排列次序为(11)。

A、内网、外网和DMZ

B、外网、DMZ和内网

C、DMZ、内网和外网

D、内网、DMZ和外网

解析:

根据防火墙的安全设计原则,外网被认为是不可信赖的,因此受保护程度最低;DMZ位于内外网之间,作为一个缓冲区,受到一定程度的保护;内网则是安全和可信赖的,受保护程度最高。因此,正确的排列次序是从低到高为外网、DMZ和内网,选项B是正确答案。

44、(12)是构成我国保护计算机软件著作权的两个基本法律文件。

A、《计算机软件保护条例》和《软件法》

B、《中华人民共和国著作权法》和《软件法》

C、《中华人民共和国著作权法》和《计算机软件保护条例》

D、《中华人民共和国版权法》和《中华人民共和国著作权法》

解析:

构成我国保护计算机软件著作权的两个基本法律文件是《中华人民共和国著作权法》和《计算机软件保护条例》。在具体实施时,首先按照《计算机软件保护条例》的适用条款执行,如果条例中没有相关适用条款,再参照《中华人民共和国著作权法》的有关条款执行。因此,正确答案为C。

45、X 公司接受Y公司的委托开发了一款应用软件,双方没有订立任何书面合同。在此情形下,(13) 享有该软件的著作权。

A、X、Y公司共同

B、X公司

C、Y公司

D、X、Y公司均不

解析:

根据题目中的描述,X公司接受Y公司的委托开发了一款应用软件,但双方没有订立任何书面合同。根据著作权法的规定,对于这种情况,软件的著作权应当归属于受托人,即X公司。因此,正确答案是B。

46、广大公司(经销商)擅自复制并销售恭大公司开发的OA软件已构成侵权。鸿达公司在不知情时从广大公司(经销商)处购入该软件并已安装使用。在鸿达公司知道了所使用的软件为侵权复制的情形下,其使用行为(14)。

A、侵权,支付合理费用后可以继续使用该软件

B、侵权,须承担赔偿责任

C、不侵权,可继续使用该软件

D、不侵权,不需承担任何法律责任

解析:

鸿达公司在不知情的情况下从广大公司处购入该软件并安装使用,但在知道所使用的软件为侵权复制的情形下,其继续使用行为构成了侵权行为。虽然鸿达公司可能并不具备恶意侵权的意图,但仍然需要承担侵权责任。然而,在支付合理费用后,鸿达公司可以继续使用该软件。因此,答案为A。

47、绘制分层数据流图 (DFD)时需要注意的问题中,不包括(15)。

A、给图中的每个数据流、加工、数据存储和外部实体命名

B、图中要表示出控制流

C、一个加工不适合有过多的数据流

D、分解尽可能均匀

解析:

绘制分层数据流图(DFD)时,主要目的是描述系统中数据的流动和处理过程。因此,在绘制DFD时,应该关注数据流、加工、数据存储和外部实体的命名,确保每个部分都有明确的标识。一个加工不宜对应过多的数据流,而应该保持适当的数量,以确保图的清晰和易于理解。同时,分解应该尽可能均匀,以便于理解和分析系统的各个部分。而“图中要表示出控制流”并不属于绘制DFD时的注意事项,因为数据流图主要描述的是数据的流动,而不是控制流程。因此,正确答案为B。

48、以下关于软件设计原则的叙述中,不正确的是出(16)。

A、将系统划分为相对独立的模块

B、模块之间的耦合尽可能小

C、模块规模越小越好

D、模块的扇入系数和扇出系数合理

解析:

在软件设计原则中,确实需要将系统划分为相对独立的模块,模块之间的耦合应尽可能小,以及模块的扇入系数和扇出系数需要合理。然而,关于模块规模的说法并不绝对。模块的规模要适当,不宜过大也不宜过小。过大的模块会使系统分解得不充分,不利于模块间的独立性和系统的可维护性;而过小的模块可能会降低模块的独立性,并增加系统接口的复杂性。因此,选项C“模块规模越小越好”是不正确的叙述。

49、在风险管理中,通常需要进行风险监测,其目的不包括(17)。

A、消除风险

B、评估所预测的风险是否发生

C、保证正确实施了风险缓解步骤

D、收集用于后续进行风险分析的信息

解析:

风险监测的目的是观察并评估所预测的风险是否发生,确保正确实施了风险缓解步骤,并收集用于后续进行风险分析的信息。虽然风险管理旨在减少风险的影响,但无法完全消除风险。因此,消除风险并不是风险监测的目的之一。

50、下图所示的二叉树表示的算术表达式是(20)(其中的*,/,-,表示乘、除、减运算)。

A、a*b/c- d

B、a*b/(c-d)

C、a*(b/c- d)

D、a*(b-c/d)

解析:

根据给定的二叉树结构,算术表达式采用中序遍历(左、根、右)的方式。按照这种方式遍历,得到的算术表达式为a*(b/c-d)。因此,正确答案为C。

51、对高级程序语言进行编译的过程中,使用(21)来记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成。

A、决策表

B、符号表

C、广义表

D、索引表

解析:

符号表在高级程序语言的编译过程中起着关键的作用。它的主要功能是记录源程序中各个符号的必要信息,包括变量的名称、类型、作用域等,以辅助语义的正确性检查和代码生成。在编译过程中,符号表需要进行快速有效的查找、插入、修改和删除等操作。因此,选项B“符号表”是正确的。

52、下图所示为一个非确定有限自动机(NFA), S0为初态(S3为终态。该NFA识别的字符串分(22)。

A、不能包含连续的字符“0”

B、不能包含连续的字符“1”

C、必须以“101”开头

D、必须以“101”结尾

解析:

观察给定的非确定有限自动机 (NFA),其中S0为初态,S3为终态。分析该自动机可识别的字符串模式,可以看出,无论中间的状态如何转移(伴随0或1),最终都需要到达包含"101"的子字符串才能被接受。因此,这个自动机识别的字符串必须以"101"结尾。选项D正确。

53、在单处理机计算机系统中,有1台打印机、 1台扫描仪, 系统采用先来先服务调度算法。假设系统中有进程P1、P2、P3、P4,其中P1为运行状态,P2为就绪状态,P3等待打印机,P4等待扫描仪。此时,若P1释放了扫描仪,则进程P1、P2、P3、P4的状态分别为(23)。

A、等待、运行、等待、就绪

B、运行、就绪、等待、就绪

C、就绪、就绪、等待、运行

D、就绪、运行、等待、就绪

解析:

根据先来先服务调度算法,当一个进程释放资源(如扫描仪)后,下一个等待该资源的进程将获取资源并转变为就绪状态。在此情况下,P1释放扫描仪后,P4等待扫描仪的状态将转变为就绪状态。由于系统只有一台处理机,且P1仍处于运行状态,因此其他进程的状态变化如下:P2为就绪状态(等待CPU),P3仍然等待打印机资源,而P1由于未释放CPU,仍保持在运行状态。因此,进程P1、P2、P3、P4的状态分别为运行、就绪、等待、就绪,选项B正确。

54、以下关于增量模型优点的叙述中,不正确的是(29)。

A、强调开发的阶段性早期计划

B、第一个可交付版本所需要的时间少和成本低

C、开发由增量表示的小系统所承担的风险小

D、系统管理成本低、效率高、配置简单

解析:

增量模型强调的是分阶段开发和交付,每个阶段都有可交付的成果,从而降低开发风险和提高开发效率。关于系统管理的部分并没有直接提到管理成本低、效率高和配置简单。因此,选项D是不正确的叙述。其他选项A、B、C都是关于增量模型优点的正确描述。

55、以下关于敏捷统一过程(AUP)的叙述中,不正确的是(30)。

A、在大型任务上连续

B、在小型活动上迭代

C、每一个不同的系统都需要一套不同的策略、约定和方法论

D、采用经典的UP阶段性活动,即初始、精化、构建和转换

解析:

敏捷统一过程(AUP)是一种灵活的软件开发过程,它强调在大型任务上的连续性和在小型活动上的迭代性。同时,它采用经典的UP阶段性活动,包括初始、精化、构建和转换。因此,关于敏捷统一过程的叙述中,不正确的是“每一个不同的系统都需要一套不同的策略、约定和方法论”。

56、在ISO/IEC软件质量模型中,可移植性是指与软件可从某环境移到另一环境的能力有关的一组属性,其子特性不包括(31)。

A、适应性

B、易测试性

C、易安装性

D、易替换性

解析:

在ISO/IEC软件质量模型中,可移植性是指软件从一个环境转移到另一个环境的能力,其包括适应性、易安装性和易替换性等子特性,但不包括易测试性。因此,正确答案是B。

57、在软件开发过程中,系统测试阶段的测试目标来自于(32)阶段。

A、需求分析

B、概要设计

C、详细设计

D、软件实现

解析:

在软件开发过程中,系统测试阶段的测试目标来自于需求分析阶段。测试人员需要根据需求分析阶段所确定的需求和规格说明来设计和执行系统测试,以确保软件满足用户需求和业务目标。因此,答案为A。

58、信息系统的文档是开发人员与用户交流的工具。在系统规划和系统分析阶段,用户与系统分析人员交流所使用的文档不包括(33)。

A、可行性研究报告

B、总体规划报告

C、项目开发计划

D、用户使用手册

解析:

根据题目描述,信息系统的文档是开发人员与用户交流的工具。在系统规划和系统分析阶段,用户与系统分析人员交流的文档不包括用户使用手册。用户使用手册是在概要设计阶段产生的文档,主要用于描述系统的使用方法和操作指南,不是系统规划和系统分析阶段的交流文档。因此,选项D是正确答案。而可行性研究报告、总体规划报告和项目开发计划都是在系统规划和系统分析阶段需要产生的文档,用于指导项目的开发和实施。

59、系统可维护性是指维护人员理解、改正、改动和改进软件系统的难易程度,其评价指标不包括(36)。

A、可理解性

B、可测试性

C、可修改性

D、一致性

解析:

系统可维护性是指维护人员理解、改正、改动和改进软件系统的难易程度,其评价指标包括可理解性、可测试性和可修改性。因此,一致性不是系统可维护性的评价指标,答案为D。

60、面向对象设计时包含的主要活动是(37)。

A、认定对象、组织对象、描述对象间的相互作用、确定对象的操作

B、认定对象、定义属性、组织对象、确定对象的操作

C、识别类及对象、确定对象的操作、描述对象间的相互作用、识别关系

D、识别类及对象、定义属性、定义服务、识别关系、识别包

解析:

面向对象设计时的主要活动包括识别类及对象、定义属性、定义服务、识别关系以及识别包。选项D完整且准确地涵盖了这些活动。其他选项虽然包含了一些正确的元素,但要么不完整,要么包含了与面向对象设计主要活动不直接相关的内容。因此,正确答案是D。

61、在面向对象设计时,如果重用了包中的一个类,那么就要重用包中的所有类,这属于(38)原则。

A、接口分离

B、开放-封闭

C、共同封闭

D、共同重用

解析:

在面向对象设计中,如果重用了包中的一个类,那么就要重用包中的所有类,这属于共同重用原则。共同重用原则指的是一个包中的所有类应该是共同重用的,如果一个包中的某个类被重用,那么该包中的所有类都应该被重用。因此,选项D正确。其他选项如接口分离、开放-封闭、共同封闭等原则与题目描述的场景不符。

62、在设计某购物中心的收银软件系统时,要求能够支持在不同时期推出打折、返利、满减等不同促销活动,则适合采用(47)模式。

A、策略(Strategy)

B、访问者(Visitor)

C、观察者(Observer)

D、中介者(Mediator)

解析:

在设计购物中心的收银软件系统时,需要支持不同的促销活动,如打折、返利、满减等。策略模式是一种行为设计模式,它将各种算法封装到不同的策略类中,客户端可以根据需求选择不同的策略来完成特定的任务。在这种情况下,可以将不同的促销活动定义为策略,根据时间和需求选择合适的策略来进行促销计算。因此,策略模式适合用于此类场景。使用策略模式可以使系统更加灵活,易于维护和扩展。

63、Python 语言的特点不包括(48)。

A、跨平台、开源

B、编译型

C、支持面向对象程序设计

D、动态编程

解析:

Python是一种解释型语言,而不是编译型语言。因此,选项B“编译型”不是Python语言的特点。Python具有跨平台、开源、支持面向对象程序设计和动态编程等特点。

64、在 Python语言中,(49)是一种可变的、有序的序列结构,其中元素可以重复。

A、元组(tuple)

B、字符串(str)

C、列表(list)

D、集合(set)

解析:

在Python语言中,列表(list)是一种可变的、有序的序列结构,其中元素可以重复。元组(tuple)虽然也是一种有序的序列结构,但其元素是不可变的。字符串(str)是由字符组成的不可变序列。集合(set)则是无序的,不允许重复元素。因此,根据题目的描述,正确答案是C。

65、以下Python语言的模块中,(50)不支持深度学习模型。

A、TensorFlow 

B、Matplotlib

C、PyTorch

D、Keras

解析:

Matplotlib是Python的一个绘图库,主要用于数据的可视化,如绘制图表、图像等,并不支持深度学习模型的构建和训练。而TensorFlow、PyTorch和Keras都是用于深度学习的模块,支持神经网络的构建、训练和评估。因此,选项B是不支持深度学习模型的Python模块。

66、采用三级模式结构的数据库系统中,如果对一个表创建聚簇索引,那么改变的是数据库的 (51) 。

A、外模式

B、模式

C、内模式

D、用户模式

解析:

在数据库的三级模式结构中,内模式(也称为物理模式)描述了数据的实际存储方式和物理结构。当对一个表创建聚簇索引时,实际上是改变了数据在数据库中的物理存储顺序,因此这会影响数据库的内模式。所以正确答案是C,即内模式。

67、数据库的安全机制中,通过提供(56)供第三方开发人员调用进行数据更新,从而保证数据库的关系模式不被第三方所获取。

A、触发器

B、存储过程

C、视图

D、索引

解析:

存储过程是一种数据库对象,可以在数据库中存储一段代码,通过调用存储过程来执行特定的任务。在数据库的安全机制中,通过提供存储过程供第三方开发人员调用进行数据更新,可以保证数据库的关系模式不被第三方获取,从而提高系统的安全性。因此,正确答案是B。

68、若栈采用顺序存储方式,现有两栈共享空间V[1..n],,top[i]代表i( i=1,2)个栈的栈顶(两个栈都空时top[1]= 1、top[2]= n),栈1的底在V[1],栈2的底在V[n], 则栈满(即n个元素暂存在这两个栈)的条件是(57)。

A、top[1]= top[2]

B、top[1]+ top[2]==1

C、top[1]+ top[2]==n

D、 top[1]- top[2]== 1

解析:

根据题目描述,栈采用顺序存储方式,两个栈共享空间V[1..n],其中top[i]代表第i个栈的栈顶位置。当两个栈都空时,top[1]= 1表示栈1的栈顶在数组的第一个位置,top[2]= n表示栈2的栈顶在数组的最后一个位置。为了判断栈是否已满,需要考虑两个栈的栈顶位置之间的关系。

当栈1和栈2都存满元素时,栈顶元素的位置会是相邻的。由于栈1的底在V[1],栈顶的下一个位置是V[2],而栈2的底在V[n],栈顶的下一个位置是V[n-1]。因此,当栈满时,栈顶元素的位置关系满足top[1]- top[2]== 1。所以正确答案是D。

69、采用循环队列的优点是(58)。

A、入队和出队可以在队列的同端点进行操作

B、入队和出队操作都不需要移动队列中的其他元素

C、避免出现队列满的情况

D、避免出现队列空的情况

解析:

循环队列的优点在于入队和出队操作都不需要移动队列中的其他元素。在循环队列中,元素入队时修改尾指针,元素出队时修改头指针,这样可以实现高效的队列操作。因此,选项B是正确答案。

70、二叉树的高度是指其层数,空二叉树的高度为0,仅有根结点的二叉树高度为1。若某二叉树中共有1024个结点,则该二叉树的高度是整数区间(59)中的任一值。


A、 (10, 1024)

B、[10, 1024]

C、 (11, 1024)

D、 [11, 1024]

解析:

本题考察二叉树高度的计算。

首先,题目中提到二叉树的高度是指其层数,空二叉树的高度为0,仅有根结点的二叉树高度为1。

对于本题,需要考虑三种情况:

  1. 当所有结点都只有一个孩子时(即单枝树),该二叉树的高度为结点的数量,即高度为1024层。
  2. 当为完全二叉树时,根据完全二叉树的性质,具有n个结点的完全二叉树的深度为⌊log₂n⌋+1(其中⌊x⌋表示对x向下取整)。带入n=1024计算得到深度为11层。
  3. 对于非完全二叉树的情况,其高度介于完全二叉树和单枝树之间,也就是在11到1023之间。因为不可能有负数的层数或者超过1024层的二叉树。

综上,该二叉树的层数是整数区间 [11, 1024]中的任一值。因此,正确答案是D。

71、n个关键码构成的序列{k1,k2, ...kn,}当且仅当满足下列关系时称其为堆。


以下关键码序列中,(60) 不是堆。

A、15,25, 21,53,73, 65,33

B、15,25, 21,33, 73, 65,53

C、73, 65, 25, 21, 15,53, 33

D、 73, 65, 25,33, 53,15, 21

解析:

根据堆的定义,非终端节点的值要么大于其子节点的值(大顶堆),要么小于其子节点的值(小顶堆)。对于选项C中的关键码序列(73,65,25,21,15,53,33),我们可以发现,当将其视为完全二叉树时,根节点73大于其左子节点和右子节点中的任何一个,但左子节点中的任何一个都不大于右子节点中的任何一个,这与堆的定义不符。因此,选项C的关键码序列不是堆。

72、对有向图G进行拓扑排序得到的拓扑序列中,顶点Vi在顶点Vj之前,则说明G中(61)。

A、一定存在有向弧<Vi, Vj>

B、一定不存在有向弧<Vj, Vi>

C、可能存在从Vi到Vj的路径

D、必定存在从Vj到Vi的路径

解析:

对于有向图G进行拓扑排序得到的拓扑序列中,如果顶点Vi在顶点Vj之前,这仅仅表示在拓扑排序中Vi出现在Vj之前,并不意味着图中一定存在从Vi到Vj的有向路径。因此,选项A不正确。同样,拓扑排序中顶点的顺序并不反映反向的依赖关系,即不存在从Vj到Vi的路径,所以选项D也不正确。由于拓扑排序是基于边的方向进行的,因此拓扑序列中的先后顺序并不直接决定边的存在与否,所以选项B也不完全正确。然而,拓扑序列中的顺序确实可能反映出图中存在从Vi到Vj的路径,因此选项C是正确的。

73、用户在电子商务网站上使用网上银行支付时,必须通过(66)在Internet与银行专用网之间进行数据交换。

A、支付网关

B、防病毒网关

C、出口路由器

D、堡垒主机

解析:

用户在电子商务网站上使用网上银行支付时,必须通过支付网关在Internet与银行专用网之间进行数据交换。支付网关是金融网络系统与Internet网络之间的接口,可以将Internet上传输的数据转换为银行专用网数据。因此,正确答案是A。

74、下面的标记对中(69)用于表示网页代码的起始和终止。

A、<html></html>

B、<head></head>

C、<body></body>

D、<meta> </meta>

解析:

选项A中的"“标签用于表示网页代码的起始,而”"标签用于表示网页代码的终止。其他选项如B、C和D虽然也是HTML中的标签,但它们分别表示不同的含义,并不用于表示整个网页代码的起始和终止。因此,正确答案是A。

75、以下对于路由协议的叙述中,错误的是(70)。

A、路由协议是通过执行一个算法来完成路由选择的一种协议

B、动态路由协议可以分为距离向量路由协议和链路状态路由协议

C、路由协议是一种允让许数据包在主机之间传送信息的一种协议

D、路由器之间可以通过路由协议学习网络的拓扑结构

解析:

路由协议主要用于路由器之间交换信息,以便确定如何转发数据包,而不是在主机之间传送数据包的协议。因此,选项C中的描述不准确。

喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2021年11月软件设计师上午题答案及解析

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share