一、单选题
1、在CPU中,用()给出将要执行的下一条指令在内存中的地址。
A、程序计数器
B、指令计数器
C、主存地址寄存
D、状态条件寄存器
解析:
在CPU中,程序计数器(A选项)用于给出将要执行的下一条指令在内存中的地址。当执行一条指令时,需要根据PC(程序计数器)中存放的指令地址,将指令由内存取到指令寄存器中。随后,PC中的地址会更新为下一条指令的地址,以便执行下一条指令。因此,程序计数器是用于控制指令执行的流程,存放下一条要执行的指令在内存中的地址。B选项指令计数器不是用于给出下一条指令的地址,C选项主存地址寄存器保存的是当前CPU所访问的内存单元的地址,D选项状态条件寄存器用于存储状态标志与控制标志。
二、完形类单选题
2、在求解某问题时,经过分析发现该问题具有最优子结构和重叠子问题性,宜采用(1)算法设计策略得到最优解;若定义问题的解空间,并以广度优先的探索问题的解空间,则采用的是(2)算法设计策略。
A、(64)分治
B、(64)贪心
C、(64)动态规划
D、(64)回溯
解析:
根据题目描述,问题具有最优子结构和重叠子问题性,这是动态规划算法设计策略适用的典型特征。动态规划可以用于求解具有这些特性的最优化问题。因此,宜采用动态规划算法设计策略得到最优解。若定义问题的解空间,并以广度优先的探索方式的算法设计策略称为宽度优先搜索,常用在图遍历和图的最短路径问题中,与本题描述不符。所以本题的答案是C。
3、在求解某问题时,经过分析发现该问题具有最优子结构和重叠子问题性,宜采用(1)算法设计策略得到最优解;若定义问题的解空间,并以广度优先的探索问题的解空间,则采用的是(2)算法设计策略。
A、(65)动态规划
B、(65)贪心
C、(65)回溯
D、(65)分支限界
解析:
题目中提到求解某问题时,经过分析发现该问题具有最优子结构和重叠子问题性,宜采用动态规划算法设计策略得到最优解。动态规划算法适用于具有最优子结构和重叠子问题的优化问题,能够通过状态转移和子问题的最优解得到全局最优解。而定义问题的解空间,并以广度优先的探索问题的解空间,采用的是分支限界算法设计策略。因此,第一空填A即动态规划,第二空填D即分支限界。
4、Designing object -oriented software is hard,and designing (71)object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the right granularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand,but also (72) enough to address future problems and requirements.You also want to avoid redesign,or at least minimize it.Experienced object -oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time.Before a design is finished,they usually try to reuse it several times,madifring it each time.
Yet experienced object-oriented designers do make good designs. Meanwhile new designers are (73) by the options available and tend to fall back on non-object-oriented techniques they're used before.It takes a long time for movies to learn that good obeject-oriented design is all about. Experienced designers evidently know something inexperienced ones. What is it?
One thing expert desigeners know not to do is solve every problem from first principles.Rather, they reuse solutions that have worked for them in the past.When they find a good (74) .They use it again and again.Such experience is part of what makes them experts.Consequently,you'll find (75) patterns of classes and communicating objects in many object-oriented systems.
A、runnable
B、right
C、reusable
D、pertinent
解析:
题目是关于面向对象软件设计的难度和经验的描述。对于每个空格的解析如下:
-
C(reusable)是可复用的。在设计面向对象软件时,设计可复用的软件更为困难,意味着需要找到相关的对象,将它们以适当的粒度分类,定义类接口和继承关系等,并且建立它们之间的关键关系。因此,选择C选项是可复用的软件设计更困难的原因。
-
D(pertinent)是相关的。在设计软件时,不仅要针对当前问题设计特定的解决方案,还需要确保设计足够灵活以应对未来的问题和需求。因此,选择D选项是相关的设计能够适应未来的需求和问题。
-
A(runnable)是可运行的。新的设计师在面对各种选项时可能会感到困惑,并且倾向于使用他们之前熟悉的非面向对象的技术。因此,选择A选项表示新的设计师可能会选择可运行的解决方案而不是面向对象的设计方法。
-
C(reusable)是可复用的。专家设计师知道如何复用过去成功的解决方案来解决新的问题。当他们找到一个好的可复用的解决方案时,他们会反复使用它。因此,选择C选项表示专家设计师会复用可复用的解决方案。
-
B(right)是正确的模式。在面向对象系统中,你会找到许多正确的类和通信对象的模式。这些模式是基于经验和实践形成的最佳实践,可以帮助提高软件的质量和效率。因此,选择B选项表示这些模式是正确和有效的。
5、Designing object -oriented software is hard,and designing (71)object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the right granularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand,but also (72) enough to address future problems and requirements.You also want to avoid redesign,or at least minimize it.Experienced object -oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time.Before a design is finished,they usually try to reuse it several times,madifring it each time.
Yet experienced object-oriented designers do make good designs. Meanwhile new designers are (73) by the options available and tend to fall back on non-object-oriented techniques they're used before.It takes a long time for movies to learn that good obeject-oriented design is all about. Experienced designers evidently know something inexperienced ones. What is it?
One thing expert desigeners know not to do is solve every problem from first principles.Rather, they reuse solutions that have worked for them in the past.When they find a good (74) .They use it again and again.Such experience is part of what makes them experts.Consequently,you'll find (75) patterns of classes and communicating objects in many object-oriented systems.
A、clear
B、general
C、personalized
D、customized
解析:
根据题目中的句子“You design should be specific to the problem at hand,but also general enough to address future problems and requirements”,可以看出需要选择一个既可以针对具体问题,又可以应对未来问题和需求的词语,而general(一般的)正好符合这个要求。因此,答案为B。
6、Designing object -oriented software is hard,and designing (71)object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the right granularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand,but also (72) enough to address future problems and requirements.You also want to avoid redesign,or at least minimize it.Experienced object -oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time.Before a design is finished,they usually try to reuse it several times,madifring it each time.
Yet experienced object-oriented designers do make good designs. Meanwhile new designers are (73) by the options available and tend to fall back on non-object-oriented techniques they're used before.It takes a long time for movies to learn that good obeject-oriented design is all about. Experienced designers evidently know something inexperienced ones. What is it?
One thing expert desigeners know not to do is solve every problem from first principles.Rather, they reuse solutions that have worked for them in the past.When they find a good (74) .They use it again and again.Such experience is part of what makes them experts.Consequently,you'll find (75) patterns of classes and communicating objects in many object-oriented systems.
A、excited
B、shocken
C、surprised
D、overwhelmed
解析:
根据题目描述,新设计师在面对可用的选项时会感到困惑,并倾向于使用他们以前熟悉的非面向对象技术。因此,他们会感到"overwhelmed"(淹没、压垮),这是一个强烈的情感反应,表示他们对众多选项感到无法处理或应付。所以正确答案是D。
7、Designing object -oriented software is hard,and designing (71)object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the right granularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand,but also (72) enough to address future problems and requirements.You also want to avoid redesign,or at least minimize it.Experienced object -oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time.Before a design is finished,they usually try to reuse it several times,madifring it each time.
Yet experienced object-oriented designers do make good designs. Meanwhile new designers are (73) by the options available and tend to fall back on non-object-oriented techniques they're used before.It takes a long time for movies to learn that good obeject-oriented design is all about. Experienced designers evidently know something inexperienced ones. What is it?
One thing expert desigeners know not to do is solve every problem from first principles.Rather, they reuse solutions that have worked for them in the past.When they find a good (74) .They use it again and again.Such experience is part of what makes them experts.Consequently,you'll find (75) patterns of classes and communicating objects in many object-oriented systems.
A、tool
B、component
C、system
D、solution
解析:
根据题目描述,句子中提到“他们找到一个好的解决方案时,会反复使用它。”因此,空格处应填入“解决方案”(solution)。所以正确答案为D。
8、Designing object -oriented software is hard,and designing (71)object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the right granularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand,but also (72) enough to address future problems and requirements.You also want to avoid redesign,or at least minimize it.Experienced object -oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time.Before a design is finished,they usually try to reuse it several times,madifring it each time.
Yet experienced object-oriented designers do make good designs. Meanwhile new designers are (73) by the options available and tend to fall back on non-object-oriented techniques they're used before.It takes a long time for movies to learn that good obeject-oriented design is all about. Experienced designers evidently know something inexperienced ones. What is it?
One thing expert desigeners know not to do is solve every problem from first principles.Rather, they reuse solutions that have worked for them in the past.When they find a good (74) .They use it again and again.Such experience is part of what makes them experts.Consequently,you'll find (75) patterns of classes and communicating objects in many object-oriented systems.
A、recurring
B、right
C、experienced
D、past
解析:
第一空,根据句意“设计面向对象的软件是困难的,而设计可重用的面向对象软件则更加困难”,填入“可重用的(reusable)”符合语境,选项A“recurring”意为“经常发生的”,不符合句意,应排除。因此,答案为A。
第二空,根据句意“您的设计应该针对手头的问题,但也要足够普遍,以解决未来的问题和需求”,填入“普遍的(general)”符合语境,选项B“right”意为“正确的”,不符合句意,应排除。因此,答案为D。
第三空,根据句意“有经验的面向对象的设计师…新手设计师”,填入“有经验的(experienced)”符合语境。因此,答案为C。
第四空,根据句意“当他们找到一个好的解决方案时,他们会一次又一次地使用它”,填入“解决方案(solution)”符合语境。因此,答案为B。
第五空,根据句意“因此,您将在许多面向对象的系统中发现类和通信对象的重复模式”,填入“重复的(recurring)”符合语境。因此,答案为A。
三、单选题
9、以下关于RISC和CISC计算机的叙述中,正确的是()。
A、RISC不采用流水线技术,CISC采用流水线技术
B、RISC使用复杂的指令,CISC使用简单的指令
C、RISC采用很少的通用寄存器,CISC采用很多的通用寄存器
D、RISC采用组合逻辑控制器,CISC普遍采用微程序控制器
解析:
RISC(精简指令集计算机)和CISC(复杂指令集计算机)在计算机设计上有一些关键的不同点。
选项A描述的是两者是否采用流水线技术,实际上,RISC和CISC都可能会采用流水线技术来优化性能。
选项B描述的是指令的复杂性,实际上,RISC更倾向于使用简单的指令,而CISC使用相对复杂的指令。
选项C描述的是通用寄存器的数量,实际上是CISC采用较少的通用寄存器,而RISC采用较多的通用寄存器。
选项D描述的是控制器类型,RISC通常采用组合逻辑控制器,而CISC更普遍采用微程序控制器。这一点是正确的。
10、采用DMA方式传送数据时,每传送一个数据都需要占用一个()。
A、指令周期
B、总线周期
C、存储周期
D、机器周期
解析:
采用DMA方式传送数据时,数据传送是在存储器和外设之间直接进行的,不需要经过CPU的累加器中转,因此每传送一个数据只需要占用一个总线周期。因此,正确答案是B。
11、以下关于闪存(Flash Memory)的叙述中,错误的是()
A、掉电后信息不会丢失,属于非易失性存储器
B、以块为单位进行删除操作
C、采用随机访问方式,常用来代替主存
D、在嵌入式系统中可以用Flash来代替ROM存储器
解析:
选项A描述正确,闪存掉电后信息不会丢失,属于非易失性存储器;选项B描述正确,闪存以块为单位进行删除操作;选项C描述错误,闪存并不能代替主存(RAM),它主要用于存储长期需要保存的数据,如BIOS程序或系统引导区等,而非作为执行程序的临时存储空间;选项D描述正确,在嵌入式系统中,Flash可以作为ROM的替代品来存储系统和应用程序代码。因此,错误的选项是C。
12、若磁盘的转速提高一倍,则()
A、平均存取时间减半
B、平均寻道时间加倍
C、旋转等待时间减半
D、数据传输速率加倍
解析:
磁盘的转速提高一倍时,旋转等待时间会减半,因为转速提高意味着磁盘每秒钟完成的旋转次数增加,从而减少了每次操作所需的等待时间。而平均存取时间取决于磁头移动到所需数据轨道的时间以及等待数据扇区到达磁头的时间,与磁盘转速的提高不直接相关。平均寻道时间与磁盘转速无关,因此不会加倍。数据传输速率虽然可能会因磁盘转速的提高而提高,但这并不总是加倍的,还受到其他因素的影响,如磁盘控制器和接口的速度等。因此,选项C是正确的。
13、异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。以下关于中断和异常的叙述中,正确的是()。
A、“DMA传送结束”、“除运算除数为0”都为中断
B、“DMA传送结束”为中断、“除运算除数为0”为异常
C、“DMA传送结束”为异常、“除运算除数为0”为中断
D、“DMA传送结束”、“除运算除数为0”都为异常
解析:
中断是来自处理器外部的请求事件,而异常是指令执行过程中在处理器内部发生的特殊事件。"DMA传送结束"是一个外部事件,因此是中断;而"除运算除数为0"是在处理器内部执行指令时发生的特殊事件,因此是异常。所以正确的答案是B。
14、下列协议中,属于安全远程登录协议的是()
A、TLS
B、TCP
C、SSH
D、TFTP
解析:
TLS是安全传输层协议,用于提供网络安全通信的加密协议,并非用于远程登录。TCP是传输控制协议,负责将数据分割成适当的报文并发送到网络上,但本身并不提供安全功能。TFTP是文件传输协议,用于在网络之间传输文件。而SSH(Secure Shell)是一种安全远程登录协议,用于提供安全的远程登录服务。因此,正确答案是C。
15、下列攻击类型中,()是以被攻击对象不能继续提供服务为首要目标。
A、跨站脚本
B、拒绝服务
C、信息篡改
D、口令猜测
解析:
拒绝服务攻击是以被攻击对象不能继续提供服务为首要目标,攻击方向攻击对象发送大量请求,使其无法处理正常的请求。其他选项中,跨站脚本攻击主要是攻击网站,向用户浏览器注入恶意代码;信息篡改是非法修改系统中的数据;口令猜测是尝试破解用户密码。因此,B是正确答案。
16、以下算法中属于非对称加密算法的是()
A、DES
B、RSA
C、AES
D、MD5
解析:
RSA是一种非对称加密算法,它涉及到公钥和私钥的使用。DES和AES是对称加密算法,而MD5是一种哈希算法,通常用于数据完整性校验,不是加密用的。因此,正确答案是B。
17、SQL是一种数据库结构化查询语言,SQL注入攻击的首要目标是()。
A、破坏Web服务
B、窃取用户口令等机密信息
C、攻击用户浏览器,以获得访问权限
D、获得数据库的权限
解析:
SQL注入攻击的首要目标是获得数据库的权限。通过插入恶意SQL命令,攻击者可以执行未经授权的数据库操作,从而获取敏感信息或破坏数据完整性。因此,正确答案是D。
18、通常使用()为IP数据报文进行加密。
A、IPSec
B、PP2P
C、HTTPS
D、TLS
解析:
IPsec(Internet Protocol Security)是一种开放标准的网络安全协议套件,用于在互联网协议(IP)层上为数据提供加密和认证服务。因此,通常使用IPSec为IP数据报文进行加密。选项B的PP2P是与网络传输协议不同的网络架构,不涉及数据加密;选项C的HTTPS和选项D的TLS虽然都涉及加密技术,但它们主要用于Web通信和传输层加密,而不是直接用于IP数据报文的加密。因此,正确答案是A。
19、根据《计算机软件保护条例》的规定,对软件著作权的保护不包括()。
A、目标程序
B、软件文档
C、源程序
D、开发软件所用的操作系统软件
解析:
《计算机软件保护条例》主要保护软件的著作权,包括目标程序、软件文档以及源程序等。然而,开发软件所用的操作系统软件并不属于保护范围内,因此选项D是正确答案。
20、下列关于风险的叙述中,不正确的是()
A、风险是可能发生的事件
B、如果能预测到风险,则可以避免其发生
C、风险是可能会带来损失的事件
D、可以对风险进行干预,以期减少损失
解析:
风险的本质是不确定性,即使能够预测风险,也只能提前做好防范和应对措施,而无法完全避免风险的发生。因此,选项B“如果能预测到风险,则可以避免其发生”是不正确的叙述。
21、算术表达式a*(b+c/d)-e的后缀式为()
A、a b c d / + * e -
B、a b c d e * + / -
C、a * b + c / d - e
D、a b * c d / + e -
解析:
算术表达式a*(b+c/d)-e的后缀式需要先将原表达式转换为逆波兰表示法,然后进行计算。根据运算符的优先级,先计算乘法和除法,再进行加法和减法。因此,该表达式的后缀式应为:先计算b和c的除法,然后与a相乘,接着加上e的值,最后进行减法运算。因此,正确的后缀式应为 a b c d / + * e -。故选A。
22、以编译方式翻译C/C++源程序的过程中,静态检查在()阶段处理。
A、词法分析
B、语义分析
C、语法分析
D、目标代码生成
解析:
静态检查在语义分析阶段处理。编译器在编译C/C++源程序时,需要进行词法分析、语法分析、语义分析和目标代码生成等多个阶段。静态检查主要是检查源程序是否符合源语言规定的语法和语义要求,因此在语义分析阶段进行处理。因此,正确答案是B。
23、Java语言符合的特征有()和自动的垃圾回收处理。
① 采用即时编译
② 采用静态优化编译
③ 对象在堆空间分配
④ 对象在栈空间分配
A、①③
B、①④
C、②③
D、②④
解析:
Java语言符合的特征有采用即时编译和自动的垃圾回收处理。其中,对象是在堆空间中进行分配的。
① 采用即时编译:Java采用即时编译(JIT)的方式,将Java字节码转换为本地机器码,以提高运行效率。
③ 对象在堆空间分配:在Java中,对象是动态分配的,它们存储在堆空间中。堆空间用于存储所有对象的实例。
因此,选项A(①和③)是正确的。选项B(①和④)是错误的,因为对象是在堆空间中分配的,而不是栈空间。选项C(②和③)和D(②和④)也不正确,因为Java采用即时编译,而不是静态优化编译,并且对象是在堆空间中分配的。
24、云计算有多种部署类型(Deployment Models)。若云的基础设施是为某个客户单用而构建的,那么该部署模型属于()。
A、公有云
B、私有云
C、社区云
D、混合云
解析:
云计算有多种部署类型,其中私有云是指云的基础设施是为某个客户单用而构建的。根据题目描述,该部署模型属于私有云。
25、某计算机系统的字长为128位,磁盘的容量为2048G,物理块的大小为8MB。假设文件管理系统采用位示图(bitmap)法记录该计算机系统磁盘的使用情况,那么位示图的大小需要()个字。
A、1024
B、2048
C、4096
D、8192
解析:
位示图的大小需要根据磁盘的容量和物理块的大小来计算。首先,将磁盘的容量转换为物理块的数量,即 2048G 除以 8MB(1G = 1024MB),得到 256 * 1024 个物理块。然后,由于每个物理块的使用情况需要用一位来表示(采用位示图法),所以位示图的大小就是物理块的数量。最后,由于计算机系统的字长为 128 位,所以位示图的大小需要除以 128 来计算需要的字数。计算结果为 2048,因此位示图的大小需要 2048 个字,选项 B 是正确的。
26、进程P有5个页面,页号为0-4,页面变换表及状态位、访问位和修改位的含义如下图所示,若系统给进程P分配了3个存储块,当访问的页面3不在内存时,应该淘汰表中页号为()的页面。
A、0
B、1
C、2
D、4
解析:
根据题目描述和提供的图片信息,页面变换表及状态位、访问位和修改位的含义如下:
- 状态位:0表示页面不在内存中,1表示页面在内存中。
- 访问位:表示该页面近期是否被访问过。
- 修改位:表示该页面自上次从外存读入后是否被修改过。
当访问的页面3不在内存时,需要淘汰一个已经在内存中的页面。淘汰的页面应该是修改位为0的页面,因为这样不需要对外存里同样的页面再进行修改了。
查看页面变换表,发现只有页号0的页面的修改位为0。因此,应该淘汰页号为0的页面。
所以,正确答案是A。
27、模块A通过非正常入口转入模块B内部,则这两个模块之间是()耦合。
A、数据
B、公开
C、外部
D、内容
解析:
根据题目描述,模块A通过非正常入口转入模块B内部,这符合内容耦合的定义。内容耦合是指一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部。因此,这两个模块之间是内容耦合。
28、软件详细设计阶段的主要任务不包括()
A、数据结构设计
B、算法设计
C、模块之间的接口设计
D、数据库的物理设计
解析:
软件详细设计阶段的主要任务包括数据结构设计、算法设计以及数据库的逻辑设计,但不包括模块之间的接口设计。模块之间的接口设计是在软件的概要设计阶段完成的。因此,选项C是正确答案。
29、以下关于文档的叙述中,不正确的是()
A、文档也是软件产品的一部分,没有文档的软件就不能称之为软件
B、文档只对软件维护活动有用,对开发活动意义不大
C、软件文档的编制在软件开发活动中占有突出的地位和相当大的工作量
D、高质量文档对于发挥软件产品的效益有着重要的意义
解析:
文档是软件产品的重要组成部分,对于软件的开发、维护、使用都非常重要。文档可以提供关于软件的详细信息,帮助开发人员理解软件的设计和实现,帮助用户了解软件的功能和使用方法,并在软件维护时提供必要的参考信息。因此,文档对软件维护活动有用,也对开发活动有很大的意义。所以选项B“文档只对软件维护活动有用,对开发活动意义不大”是不正确的叙述。
30、用白盒测试技术对下面流程图机型测试,至少采用()个测试用例才可以实现路径覆盖。
A、3
B、4
C、6
D、8
解析:
根据提供的流程图,存在三条不同的路径:路径1是从开始到结束,路径2是经过处理A的分支,路径3是经过处理B的分支。因此,为了覆盖所有的路径,至少需要设计三个测试用例。因此,答案是A,即至少需要3个测试用例来实现路径覆盖。
31、软件可维护性是指一个系统在特定的时间间隔内可以正常进行维护活动的概率。用MTTF和MTTR分别表示无故障时间和平均修复时间,则软件可维护性计算公式为()
A、MTTF/(1+MTTF)
B、1/(1+MTTF)
C、MTTR/(1+MTTR)
D、1/(1+MTTR)
解析:
软件可维护性通常使用平均修复时间(MTTR)来衡量,表示从系统出现故障到修复完成所需时间的平均值。可维护性的计算公式为 1/(1+MTTR),其中 MTTR 越短,表示系统的可维护性越强。因此,选项 D 是正确的。而选项 A、B、C 中的公式与软件可维护性的计算无关,故排除。
32、某搜索引擎在交付后,开发人员修改了其中的索引方法,使得用户可以更快地得到搜索结果。这种修改属于()维护。
A、正确性
B、适应性
C、完善性
D、预防性
解析:
根据描述,开发人员修改了搜索引擎的索引方法,以提高用户搜索结果的获取速度。这种修改旨在改进现有系统的功能或性能,使其更加完善。因此,这种修改属于完善性维护。
33、面向对象分析时,执行的活动顺序通常是()。
A、认定对象、组织对象、描述对象间的相互作用、确定对象的操作
B、认定对象、定义属性、组织对象、确定对象的操作
C、认定对象、描述对象间的相互作用、确定对象的操作、识别包
D、识别类及对象、识别关系、定义属性、确定对象的操作
解析:
面向对象分析时,执行的活动顺序通常是先认定对象,然后组织对象,接着描述对象间的相互作用,最后确定对象的操作。选项A的描述与这一顺序相符,因此是正确答案。
34、采用面向对象方法进行系统设计时,不应该强迫客户依赖于它们不用的方法,即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这属于()原则。
A、单一责任
B、开放-封闭
C、接口分离
D、里氏替换
解析:
根据面向对象设计的原则,当提到“不应该强迫客户依赖于他们不用的方法”,以及“依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖”,这实际上是在强调接口的重要性,即应该实现接口分离原则。这一原则主张将系统的各个部分之间的依赖规范与实际实现细节相分离,从而减少系统各部分之间的耦合性,提高系统的灵活性和可维护性。因此,正确答案是C接口分离原则。
35、如下图如下E-R图中,两个实体R1、R2之间有一个联系E,当E的类型为(51)时必须将E转换成一个独立的关系模式?
A、1:1
B、1:*
C、*:1
D、*:*.
解析:
根据ER图转换规则,当两个实体R1、R2之间的联系E为一对多的联系或者多对多的联系时,必须将E转换成一个独立的关系模式。因此,正确答案是D选项,即表示一对多的联系或多对多的联系。
36、设有栈S和队列Q且其初始状态为空,数据元素序列a,b,c,d,e,f依次通过栈S,且个元素从S出栈后立即进入队列Q,若出队列的序列是b,d,f,e,c,a,则S中的元素最多时,栈底到栈顶的元素依次为()。
A、a,b,c
B、a,c,d
C、a,c,e,f
D、a,d,f,e
解析:
根据题目描述,数据元素序列a,b,c,d,e,f依次通过栈S,且每个元素出栈后立即进入队列Q,而出队列的序列是b,d,f,e,c,a。
考虑栈的特性,即后进先出(LIFO),以及队列的特性,即先进先出(FIFO)。队列Q的出队序列实际上就是栈S的进栈序列的反序。因此,如果我们从出队列的序列b,d,f,e,c,a反过来看,得到的是a,c,e,f,d,b。
由于栈的特性,后面的元素要等待前面的元素出栈后才能进栈,所以当我们考虑栈中元素最多的时候,只能是那些在后面但还没有进入队列的元素。因此,栈底到栈顶的元素依次为a,c,e,f。
所以,正确答案是C选项:a,c,e,f。
37、当二叉树的结点数目确定时,()的高度一定是最小的。
A、二叉排序树
B、完全二叉树
C、线索二叉树
D、最优二叉树
解析:
完全二叉树的高度一定是最小的。完全二叉树是一种特殊的二叉树,它的节点数量与高度之间存在一定的关系。在节点数量相同的情况下,完全二叉树的层数最少,因此其高度也最小。其他选项的二叉树形式并没有这样的特性。
38、()是对稀疏矩阵进行压缩存储的方式
A、二维数组和双向链表
B、三元组顺序链表和十字链表.
C、邻接矩阵和十字链表
D、索引顺序表和双向链表
解析:
稀疏矩阵进行压缩存储的主要方式是采用特殊的数据结构来存储矩阵的非零元素,同时记录其位置信息。选项B中的“三元组顺序链表”和“十字链表”是稀疏矩阵压缩存储的常用方式。其他选项中,如二维数组和双向链表、邻接矩阵和双向链表等,虽然可以用于存储矩阵,但并非专门用于稀疏矩阵的压缩存储。因此,正确答案是B。
39、设用线性探查法解决冲突构造哈希表,且哈希函数为H(key)=key%m,若在该哈希表中查找某关键字e是成功的且与多个关键字进行了比较,则(60)。
A、这些关键字形成一个有序序列
B、这些关键字都不是e的同义词
C、这些关键字都是e的同义词
D、这些关键字的第一个可以不是e的同义词
解析:
在线性探查法解决冲突的哈希表中,当查找某个关键字e时,如果发生了冲突,即多个关键字映射到了同一个哈希地址上,那么这些关键字是同义词。题目中提到查找e成功且与多个关键字进行了比较,说明这些关键字映射到了同一个哈希地址上。这些关键字的第一个关键字不一定是e的同义词,因为可能是排在e之前的关键字正好占用了那个位置。因此,选项D正确。
40、对于一个初始无序的关键字序列,在下面的排序方法中,(61)第一趟排序结束后,一定能将序列中的某个元素在最终有序序列中的位置确定下来
①直接插入排序②冒泡排序③简单选择排序
④堆排序⑤快速排序 ⑥归并排序
A、①②③⑥
B、①②③⑤⑥
C、②③④⑤
D、③④⑤⑥
解析:
根据各种排序算法的特点,我们可以分析出哪些排序方法在第一趟排序结束后,能够确定某个元素在最终有序序列中的位置。
①直接插入排序:在每一趟排序中,新插入的元素会与已排序序列中的元素进行比较并放置在合适的位置。因此,第一趟排序结束后,不能确定任何元素在最终有序序列中的位置。
②冒泡排序:每一趟排序都会比较相邻的元素并交换它们的位置(如果它们的顺序错误)。第一趟排序结束后,最大的元素会被放到正确的位置。因此可以确定最大元素的位置。
③简单选择排序:每一趟排序都会找到未排序序列中的最小(或最大)元素并将其放到正确的位置。第一趟排序结束后,最后一个位置会被最小的元素占据,但无法确定其他元素的位置。因此不能确保所有元素的位置都被确定。对于此题,选择排序无法在第一趟后确定任意元素位置,故不选③。
④堆排序:在每一趟排序中,都会将当前最大的元素移动到正确的位置(通常是序列的开始)。第一趟排序结束后,最大的元素会被放到正确的位置。因此可以确定最大元素的位置。堆排序符合题意。
⑤快速排序:在每一趟排序中,通过选择一个哨兵元素来划分序列为两部分。第一趟排序结束后,哨兵元素会被放置在一个正确的位置。因此可以确定哨兵元素的位置。快速排序符合题意。由于题目没有指明哨兵元素的选择策略,所以不能完全确定所有元素的位置。但对于此题来说,第一趟结束可以确定哨兵元素的位置即可满足题意要求。因此选择⑤是正确的。快速排序符合题意。⑥归并排序在每一趟排序中合并两个已排序的子序列来形成一个更大的有序序列。在第一趟合并结束后,无法确定任何特定元素在最终有序序列中的位置。因此不选⑥归并排序。综上所述,符合题目要求的排序方法是②冒泡排序④堆排序⑤快速排序。因此正确答案是C选项(②③④⑤)。
41、对数组A=(2,8,7,1,3,5,6,4)构建大顶堆为(62)(用数组表示)。
A、(1,2,3,4,5,6,7,8)
B、(1,2,5,4,3,7,6,8)
C、(8,4,7,2,3,5,6,1).
D、(8,7,6,5,4,3,2,1)
解析:
构建大顶堆的过程是通过不断调整数组元素的位置,使得每个父节点的值都大于或等于其子节点的值。对于数组A=(2,8,7,1,3,5,6,4),构建大顶堆的过程如下:
- 构造二叉树:根据数组元素顺序构造二叉树。
- 选择最大的非叶子节点:在初始情况下,最大的非叶子节点是8。
- 比较与交换:比较节点8与它的左孩子节点(如果存在)和右孩子节点。由于节点8是最大的,所以不需要交换位置。
- 继续这个过程,直到所有的父节点都大于或等于其子节点为止。经过这样的调整,得到的大顶堆是(8,7,6,5,4,3,2,1)。这与选项C相符。因此,正确答案是C。
42、最大子段和问题描述为,在n个整数(包含负数)的数组A中,求元素之和最大的非空连续子数组,如数组A=(-2,11,-4,13,-5,-2),其子数组B=(11,-4,13)具有最大子段和 20(11-4+13=20)。求解该问题时,可以将数组分为两个n/2个整数的子数组最大子段和或者在前半段,或者在后半段,或者跨越中间元素,通过该方法继续划分问题,直至最后求出最大子段和,该算法的时间复杂度为(63)。
A、O(nlgn)
B、O(n^2)
C、O(n^2lgn)
D、O(n^3)
解析:
根据题目描述,采用的算法是分治法。在分治的过程中,将数组不断分为两个子数组,并求解子数组的最大子段和,然后合并得到原数组的最大子段和。这个过程的时间复杂度可以通过递归的方式分析,最终得到的时间复杂度为O(nlgn)。因此,选项A是正确的。
43、IPv6地址长度为()bit。
A、16
B、32
C、64
D、128
解析:
IPv6的地址长度为128位,是IPv4地址长度的4倍。IPv6地址总共有128位,使用十六进制进行表示,分为8段,中间用“:”隔开。因此,选项D是正确答案。
44、在地址栏中输入www.abc.com,浏览器默认的应用层协议是()。
A、HTTP
B、DNS
C、TCP
D、FTP
解析:
45、使用电子邮件客户端向服务器发送邮件的协议是()。
A、SMTP
B、POP3
C、IMAP4
D、MIME
解析:
SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的协议,因此是正确答案。POP3(Post Office Protocol 3)是用于接收电子邮件的协议,不是本题所要求的发送邮件的协议。IMAP4(Internet Mail Access Protocol 4)是一种邮件获取协议,它允许用户远程访问和管理邮件服务器上的邮件,但并不是专门用于发送邮件的协议。MIME(Multipurpose Internet Mail Extensions)是一种用于电子邮件系统的内容类型编码标准,并不是一种协议。因此,选项A是正确答案。
四、完形类单选题
46、假设Bird和Cat是Animal的子类, Parrot是Bird的子类, bird是Bird的一个对象。cat是Cat的一个对象, parrot是Parrot的一个对象。以下叙述中, 不正确的是(1)。
假设Animal类中定义接口move(), Bird、Cat和Parrot分别实现自己的move (),调用move() 时, 不同对象收到同一消息可以产生各自不同的结果, 这一现象称为(2)。
A、cat和bird可看作是Animal的对象
B、parrot和bird可看作是Animal的对象
C、bird可以看作是Parrot的对象
D、parrot可以看作是Bird的对象
解析:
对于题目中的叙述:
A. cat和bird可看作是Animal的对象 - 正确。因为Cat和Bird都是Animal的子类,所以它们的对象都可以看作是Animal的对象。
B. parrot和bird可看作是Animal的对象 - 正确。Parrot是Bird的子类,所以Parrot的对象也可以看作是Animal的对象,而bird是Bird的一个对象。
C. bird可以看作是Parrot的对象 - 错误。虽然Bird是Parrot的父类,但一个Bird对象不能看作是Parrot的对象。此处描述有误。
D. parrot可以看作是Bird的对象 - 正确。因为Parrot是Bird的子类,所以一个Parrot的对象可以看作是Bird的对象。
关于第二部分的描述,当一个对象接收到move()的消息时,不同对象产生的不同结果正是面向对象编程中的多态性体现。多态允许子类重写父类的方法,并为其提供自己的实现。因此,正确答案为C,而现象的描述是多态性。
五、单选题
47、以下Windows系统中,用于清除本地DNS缓存的命令是()。
A、ipconfig / release
B、ipconfig /flushdns
C、ipconfig /displaydns
D、ipconfig / registerdns
解析:
在Windows系统中,用于清除本地DNS缓存的命令是“ipconfig /flushdns”。因此,正确答案是B。其他选项如A、C和D都与清除本地DNS缓存无关。
六、完形类单选题
48、假设Bird和Cat是Animal的子类, Parrot是Bird的子类, bird是Bird的一个对象。cat是Cat的一个对象, parrot是Parrot的一个对象。以下叙述中, 不正确的是(1)。
假设Animal类中定义接口move(), Bird、Cat和Parrot分别实现自己的move (),调用move() 时, 不同对象收到同一消息可以产生各自不同的结果, 这一现象称为(2)。
A、封装
B、继承
C、消息传递
D、多态
解析:
第一题:
题目描述中涉及到了Animal、Bird、Cat、Parrot类及其对象之间的关系,以及move()方法的行为。题目问的是叙述中不正确的是哪个选项。
选项A封装,是面向对象编程的三大特性之一,但题目中并未涉及封装的相关内容,故A不正确。
选项B继承,是题目中明确提到的关系,Bird和Cat是Animal的子类,Parrot是Bird的子类,说明存在继承关系。
选项C消息传递,描述了对象间通信的方式,题目中调用move()方法即是一种消息传递。
选项D多态,虽然题目中涉及到了不同对象收到同一消息产生不同结果的现象,但这是通过继承和方法重写实现的,并不是多态的直接体现。多态更多地是指同一操作作用于不同的对象,产生不同的结果,而不是同一消息作用于不同对象产生不同结果。因此,D是不正确的选项。
第二题:
题目描述了不同对象收到同一消息可以产生各自不同的结果,这是多态的典型表现。多态是面向对象编程的三大特性之一,允许父类的引用指向子类的对象,从而可以在运行时动态地确定调用哪个类的版本的方法。因此,正确答案是多态。
七、单选题
49、在网络系统设计时,不可能使所有设计目标都能达到最优,下列措施中较为合理的是()。
A、尽量让最低建设成本目标达到最优
B、尽量让最短的故障时间
C、尽量让最大的安全性目标达到最优
D、尽量让优先级较高的目标达到最优
解析:
在网络系统设计时,由于资源有限,不可能使所有设计目标都能达到最优。因此,较为合理的措施是尽量让优先级较高的目标达到最优,以满足网络系统的核心需求和主要目标。其他选项如最低建设成本目标、最短的故障时间、最大的安全性目标等也是重要的,但在资源有限的情况下,需要权衡和取舍,优先保障高优先级的目标。因此,正确答案是D。
八、完形类单选题
50、股票交易中,股票代理(Broker) 根据客户发出的股票操作指示进行股票的买卖操作,设计如下所示类图。该设计采用(44)模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其中,(45)声明执行操作的接口。该模式属于(46)模式,该模式适用于:(47)_。
A、命令(Command) (问题44)
B、观察者(Observer) (问题44)
C、状态(State) (问题44)
D、中介者(Mediator) (问题44)
解析:
根据题目描述和提供的类图,该设计采用了命令(Command)模式。在命令模式中,一个请求被封装成一个对象,从而可以用不同的请求对客户进行参数化。命令模式定义了执行操作的接口,符合题目中"(45)声明执行操作的接口"的描述。因此,选项A“命令(Command)(问题44)”是正确的。该模式适用于多种场景,包括抽象出待执行的动作以参数化某对象、在不同的时刻指定、排列和执行请求、支持取消操作、支持修改日志以及用构建在原语操作上的高层操作构造一个系统等。
51、股票交易中,股票代理(Broker) 根据客户发出的股票操作指示进行股票的买卖操作,设计如下所示类图。该设计采用(44)模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其中,(45)声明执行操作的接口。该模式属于(46)模式,该模式适用于:(47)_。
A、Operation (问题45)
B、SellOperation/BayOperation/ViewOperation (问题45)
C、Broker (问题45)
D、Stock (问题45)
解析:
根据题目描述和提供的类图,可以看出这是一个命令模式(Command Pattern)的应用。在命令模式中,将一个请求封装为一个对象,从而用不同的请求对客户进行参数化。命令模式主要包括Command(命令)、ConcreteCommand(具体命令)、Client(客户端)、Invoker(调用者)和Receiver(接收者)等角色。根据题目描述,Command声明了执行操作的接口,因此问题45的答案应该是Command声明的操作接口对应的选项,即A选项。该模式适用于多种场景,包括抽象出待执行的动作以参数化某对象、在不同的时刻指定、排列和执行请求、支持取消操作、支持修改日志以及用构建在原语操作上的高层操作构造一个系统等。
52、股票交易中,股票代理(Broker) 根据客户发出的股票操作指示进行股票的买卖操作,设计如下所示类图。该设计采用(44)模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其中,(45)声明执行操作的接口。该模式属于(46)模式,该模式适用于:(47)_。
A、结构类型 (问题46)
B、结构型对象 (问题46)
C、创建类型 (问题46)
D、行为型对象 (问题46)
解析:
根据题目描述和提供的类图,该设计采用的是命令模式(Command Pattern)。命令模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。在这个模式中,需要声明执行操作的接口,即Command。这个模式属于行为型模式,适用于抽象出待执行的动作以参数化某对象、在不同的时刻指定、排列和执行请求、支持取消操作、支持修改日志以及用构建在原语操作上的高层操作构造一个系统等场景。因此,问题中的(46)应该选择行为型对象模式,答案为D。
53、股票交易中,股票代理(Broker) 根据客户发出的股票操作指示进行股票的买卖操作,设计如下所示类图。该设计采用(44)模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其中,(45)声明执行操作的接口。该模式属于(46)模式,该模式适用于:(47)_。
A、一个对象必须通知其他对象,而它又不能假定其他对象是谁 (问题47)
B、抽象出待执行的动作以参数化某对象 (问题47)
C、一个对象的行为决定于其状态且必须在运行时刻根据状态改变行为 (问题47)
D、一个对象引用其他对象并且直接与这些对象通信而导致难以复用该 (问题47)
解析:
根据题目描述和参考解析,股票代理根据客户发出的股票操作指示进行股票的买卖操作,该设计采用命令模式(Command Pattern)。命令模式将一个请求封装为一个对象,从而使得用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。其中,“Command”声明执行操作的接口,属于命令模式。命令模式适用于抽象出待执行的动作以参数化某对象,因此选项B正确。而选项A是观察者模式(Observer Pattern)的特点,选项C是状态模式(State Pattern)的特点,选项D是迪米特法则(Law of Demeter)的内容,均不符合题意。
54、给定关系R(U,F),其中U={A,B,C,D,E,H},F={A→B,B→DH,A→H,C→E}。关系有(52),F中(1)
A、一个候选码A
B、2个候选码A、B
C、一个候选码AC
D、两个候选码A、C
解析:
根据给定的关系R(U,F),其中U={A,B,C,D,E,H},F={A→B,B→DH,A→H,C→E},我们可以分析得到:
- A→B是一个函数依赖,但A并不能决定整个关系的值,所以A不是一个候选码。
- B→DH表示B可以决定D和H的值,但是单独B并不能决定整个关系的唯一性。
- A→H是冗余函数依赖,因为已经有A→B和B→DH这两个依赖关系可以推导出H的值。所以A和H的组合并不能作为一个候选码。
- C→E是一个独立的函数依赖关系。由于存在传递依赖(例如通过A→B和B→DH),AC组合可以决定整个关系的值,因此AC是一个候选码。
综上所述,正确答案是C,表示关系R的候选码是AC。
55、给定关系R(U,F),其中U={A,B,C,D,E,H},F={A→B,B→DH,A→H,C→E}。关系有(52),F中(1)
A、不存在传递依赖,但存在冗余函数依赖
B、既不存在传递依赖,也不存在冗余函数依赖
C、存在传递依赖A→D和A→H,但不存在冗余函数依赖
D、存在传递依赖A→D和A→H,并且还存在冗余函数依赖
解析:
根据给定的关系R(U,F),其中U={A,B,C,D,E,H},F={A→B,B→DH,A→H,C→E},我们可以分析如下:
- 传递依赖:在F中,由于A→B和B→DH的存在,我们可以推断出A→DH是一个传递依赖。同样地,由于A→H的存在,传递依赖A→D也存在。因此,选项C中的“存在传递依赖A→D和A→H”是正确的。
- 冗余函数依赖:在关系R中,A能决定B,而B能决定DH。这意味着通过A我们可以直接决定DH,所以A→DH是成立的。但A→H在F中已经直接给出,因此A→H是冗余的,即存在冗余函数依赖。所以选项D中的“存在冗余函数依赖”也是正确的。
综上所述,答案是D。存在传递依赖A→D和A→H,并且还存在冗余函数依赖。
56、某销售公司员工关系E(工号、姓名、部门名、电话、住址),商品关系C(商品号、商品名、库存数)和销售关系EC(工号、商品号、销售数、销售日期)。查询“销售部1”在2020年11月11日销售“HUWEI Mate40”商品的员工工号、姓名、部门名及其销售的商品名,销售数的关系代数表达式为
A、
B、
C、
D、
解析:
根据题目要求,需要查询的是销售部在特定日期销售特定商品的员工信息及销售情况。因此,需要使用关系代数表达式来查询这些信息。根据提供的选项,选项C的表达式符合题目的要求,能够正确查询出所需的信息。因此,正确答案是C。
57、某销售公司员工关系E(工号、姓名、部门名、电话、住址),商品关系C(商品号、商品名、库存数)和销售关系EC(工号、商品号、销售数、销售日期)。查询“销售部1”在2020年11月11日销售“HUWEI Mate40”商品的员工工号、姓名、部门名及其销售的商品名,销售数的关系代数表达式为
A、σ3=销售部1(E) (问题54)
B、σ3=销售部 1(C) (问题54)
C、σ3='销售部1'(E) (问题54)
D、σ3='销售部1'(C) (问题54)
解析:
根据题目要求,需要查询的是销售部在特定日期销售特定商品的员工信息,包括工号、姓名、部门名以及销售的商品名和销售数。因此,需要使用到员工关系E和销售关系EC。选项C中的表达式"σ3=‘销售部1’(E)"中的σ表示选择操作,用于筛选出满足条件的记录,这里的条件是部门名为’销售部1’。同时,还需要利用连接操作将E和EC以及C连接起来,以获取销售商品的信息。因此,正确答案是C。
58、某销售公司员工关系E(工号、姓名、部门名、电话、住址),商品关系C(商品号、商品名、库存数)和销售关系EC(工号、商品号、销售数、销售日期)。查询“销售部1”在2020年11月11日销售“HUWEI Mate40”商品的员工工号、姓名、部门名及其销售的商品名,销售数的关系代数表达式为
A、π2,3(σ2='HUWEI Mate40 '(C)) (问题55)
B、π1,2(σ2='HUWEI Mate40 '(C)) (问题55)
C、π2,3(σ2='HUWEI Mate40 '(EC)) (问题55)
D、π1,2(σ2='HUWEI Mate40 '(EC)) (问题55)
解析:
根据题目要求,需要查询的是销售部在特定日期销售特定商品的员工信息以及销售数量。正确的关系代数表达式应该针对销售关系EC进行查询,筛选出部门名为’销售部’,商品名为’HUWEI Mate40’,并且销售日期为’2020年11月11日’的记录。然后选取工号、姓名、部门名、商品名和销售数这些字段。选项B中的表达式π1,2(σ部门名=‘销售部’,商品名=’HUWEI Mate40 ’(EC))符合这一要求,其中π表示投影操作,σ表示选择操作。因此,正确答案是B。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!