2018年下半年 软件设计师 答案及详解

2018年下半年 软件设计师 答案详解

主要记录刷题相关笔记,方便日后温习!!!

一、选择题

  1. CPU 在执行指令的过程中,会自动修改_____的内容,以使其保存的总是将要执行的下一条指令的地址。
    • A.指令寄存器
    • B.程序计数器
    • C.地址寄存器
    • D.指令译码器

【答案】B
【解析】
CPU执行指令的过程中,会自动修改PC的内容,PC是指令计数器,用来存放将要执行的下一条指令。
对于指令寄存器(IR)存放即将执行的指令,指令译码器(ID)对指令中的操作码字段进行分析和解释,地址寄存器(AR),不是我们常用的CPU内部部件,其作用是是用来保存当前CPU所要访问的内存单元或I/O设备的地址。

  1. 在微机系统中,BIOS(基本输入输出系统)保存在_____中。
    • A.主板上的 ROM
    • B.CPU 的寄存器
    • C.主板上的 RAM
    • D.虚拟存储器

【答案】A
【解析】
BIOS(Basic Input Output System)(基本输入输出系统)是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。

  1. 采用 n 位补码(包含一个符号位)表示数据,可以直接表示数值_____。
    • A.2n
    • B.-2n
    • C.2n-1
    • D. -2n-1

【答案】D
【解析】
在计算机中,n位补码(表示数据位),表示范围是 -2n-1 ~ -2n-1-1,其中最小值为认为定义,以n=8为例,其中-128的补码是人为定义的1000 0000。

  1. 某系统由下图所示的部件构成,每个部件的千小时可靠度都为 R,该系统的千小时可靠度为_____。
    在这里插入图片描述
    • A.(3R+2R)/2
    • B. R/3+R/2
    • C.(1-(1-R)3)(1-(1-R)2)
    • D.(1-(1-R)3-(1-R)2)

【答案】C
【解析】
对于可靠度计算,串联系统可靠度为R1R2,并联系统R1=1-(1-R)(1-R)(1-R),并联系统R2=1-(1-R)(1-R),因此答案为(1-(1-R)3)(1-(1-R)2)。

  1. 以下关于采用一位奇校验方法的叙述中,正确的是_____。
    • A.若所有奇数位出错,则可以检测出该错误但无法纠正错误
    • B.若所有偶数位出错,则可以检测出该错误并加以纠正
    • C.若有奇数个数据位出错,则可以检测出该错误但无法纠正错误
    • D.若有偶数个数据位出错,则可以检测出该错误并加以纠正

【答案】C
【解析】
对于奇偶校验,是由若干位有效信息,再加上一个二进制位(校验位)组成校验码,其中奇校验“1”的个数为奇数,而偶校验“1”的个数为偶数,以此完整校验,如果其中传输过程中有偶数个数发生错误(即1变成0或0变成1),则“1”的个数,其奇偶就不会发生改变,也就无法发现错误了,只有奇数个数据位发生错误,才能发现错误。同时,奇偶校验只能查错不能纠错。

  1. 下列关于流水线方式执行指令的叙述中,不正确的是_____。
    • A.流水线方式可提高单条指令的执行速度
    • B.流水线方式下可同时执行多条指令
    • C.流水线方式提高了各部件的利用率
    • D.流水线方式提高了系统的吞吐率

【答案】A
【解析】本题要求选择不正确的叙述。
其中A流水线方式可提高单条指令的执行速度是不正确的,对于只有单条指令的情况下,流水线方式与顺序执行时没有区别的。流水线的原理是在某一时刻可以让多个部件同时处理多条指令,避免各部件等待空闲,由此提高了各部件的利用率,也提高了系统的吞吐率。

  1. DES 是_____算法。
    • A.公开密钥加密
    • B.共享密钥加密
    • C.数字签名
    • D.认证

【答案】B
【解析】
非对称加密又称为公开密钥加密,而共享密钥加密指对称加密。常见的对称加密算法有:DES,三重DES、RC-5、IDEA、AES。

  1. 计算机病毒的特征不包括_____。
    • A.传染性
    • B.触发性
    • C.隐蔽性
    • D.自毁性

【答案】D
【解析】
计算机病毒具有隐蔽性、传染性、潜伏性、触发性和破坏性等特定。因此自毁性不属于计算机病毒的特征。

  1. MD5 是_____算法,对任意长度的输入计算得到的结果长度为_____位。
  • (1)
    • A.路由选择
    • B.摘要
    • C.共享密钥
    • D.公开密钥
  • (2)
    • A.56
    • B.128
    • C.140
    • D.160

【答案】B B
【解析】
MD5是一种摘要算法,经过一系列处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

  1. 使用 Web 方式收发电子邮件时,以下描述错误的是_____。
    • A.无须设置简单邮件传输协议
    • B.可以不设置帐号密码登录
    • C.邮件可以插入多个附件
    • D.未发送邮件可以保存到草稿箱

【答案】B
【解析】
使用WEB方式收发电子邮件是必须设置账号密码登录。

  1. 有可能无限期拥有的知识产权是_____。
    • A.著作权
    • B.专利权
    • C.商标权
    • D.集成电路布图设计权

【答案】C
【解析】在这里插入图片描述
其中商标权可以通过续注延长拥有期限,而著作权、专利权和设计权的保护期限都是有限期的。

  1. _____是构成我国保护计算机软件著作权的两个基本法律文件。
    • A.《软件法》和《计算机软件保护条例》
    • B.《中华人民共和国著作权法》和《计算机软件保护条例》
    • C.《软件法》和《中华人民共和国著作权法》
    • D.《中华人民共和国版权法》和《计算机软件保护条例》

【答案】B
【解析】
我国保护计算机软件著作权的两个基本法律文件是《中华人民共和国著作权法》和《计算机软件保护条例》。

  1. 某软件程序员接受一个公司(软件著作权人)委托开发完成一个软件,三个月后又接受另一公司委托开发功能类似的软件,此程序员仅将受第一个公司委托开发的软件略作修改即提交给第二家公司,此种行为_____。
    • A.属于开发者的特权
    • B.属于正常使用著作权
    • C.不构成侵权
    • D.构成侵权

【答案】D
【解析】
本题已注明第一个公司为软件著作权人,因此该程序员的行为对原公司构成侵权。

  1. 结构化分析的输出不包括_____。
    • A.数据流图
    • B.数据字典
    • C.加工逻辑
    • D.结构图

【答案】D
【解析】
结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明(也称加工逻辑说明)、补充材料。
因此结构图不属于结构化分析的输出。

  1. 某航空公司拟开发一个机票预订系统, 旅客预订机票时使用信用卡付款。付款通过信用卡公司的信用卡管理系统提供的接口实现。若采用数据流图建立需求模型,则信用卡管理系统是_____。
    • A.外部实体
    • B.加工
    • C.数据流
    • D.数据存储

【答案】A
【解析】
数据流图中的基本图形元素包括数据流、加工、数据存储和外部实体。其中,数据流、加工和数据存储用于构建软件系统内部的数据处理模型,而外部实体表示存在于系统之外的对象,用来帮助用户理解系统数据的来源和去向。外部实体包括:人/物、外部系统、组织机构等。

  1. 某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示活动的持续时间(天),则完成该项目的最少时间为_____天。活动 FG 的松驰时间为_____天。
    在这里插入图片描述
  • (1)
    • A.20
    • B.37
    • C.38
    • D.46
  • (2)
    • A.9
    • B.10
    • C.18
    • D.26

【答案】D C
【解析】

  1. 以下叙述中,_____不是一个风险。
    • A.由另一个小组开发的子系统可能推迟交付,导致系统不能按时交付客户
    • B.客户不清楚想要开发什么样的软件,因此开发小组开发原型帮助其确定需求
    • C.开发团队可能没有正确理解客户的需求
    • D.开发团队核心成员可能在系统开发过程中离职

【答案】B
【解析】本题考查的是风险的概念。
一般认为风险保护两个特性:不确定性和损失。不确定性是指风险可能发生也可能不发生;损失是指如果风险发生,就会产生恶性后果。
本题选项“客户不清楚想要开发什么样的软件”是已经发生的事件,没有不确定性,因此不是一个风险。

  1. 对布尔表达式进行短路求值是指:无须对表达式中所有操作数或运算符进行计算就可确定表达式的值。对于表达式"a or ((c< d) and b) ",_____时可进行短路计算。
    • A. d 为 true
    • B. a 为 true
    • C. b 为 true
    • D. c 为 true

【答案】B
【解析】
根据本题题干“a or (( c<d ) and b )”,最后计算的是or,对于或运算,只要有一个为真则结果为真,不需要进行后面的计算,因此当a为true时,可进行短路计算,直接得到后面的结果。

  1. 下面二叉树表示的简单算术表达式为_____。
    在这里插入图片描述
    • A.10*20+30-40
    • B.10*(20+30-40)
    • C.10*(20+30)-40
    • D.10*20+(30-40)

【答案】C
【解析】

  1. 在程序运行过程中,_____时涉及整型数据转换为浮点型数据的操作。
    • A.将浮点型变量赋值给整型变量
    • B.将整型常量赋值给整型变量
    • C.将整型变量与浮点型变量相加
    • D.将浮点型常量与浮点型变量相加

【答案】C
【解析】

  1. 某计算机系统中互斥资源 R 的可用数为 8,系统中有 3 个进程 P1、P2 和 P3 竞争 R,且每个进程都需要 i 个 R,该系统可能会发生死锁的最小 i 值为_____。
    • A. 1
    • B. 2
    • C. 3
    • D. 4

【答案】D
【解析】
本题对于R资源可用数为8,分配到3个进程中,为了让最后的i值最小,所以每个进程尽量平均分配,可以得到3 、3、2的分配情况,此时如果假设i的取值为3,则必定不会形成死锁。当i>3时系统会形成死锁,此时取整,即最小i值为4。

  1. 进程 P1、P2、P3、P4 和 P5 的前趋图如下所示:
    在这里插入图片描述
    若用 PV 操作控制这 5 个进程的同步与互斥的程序如下,那么程序中的空①和空②处应分别为_____;空③和空④处应分别为_____;空⑤和空⑥处应分别为_____。
    在这里插入图片描述
  • (1)
    • A. V(S1)和 P(S2)
    • B. P(S1)和 V(S2)
    • C. V(S1)和 V(S2)
    • D. V(S2)和 P(S1)
  • (2)
    • A.V(S3)和V(S5)
    • B.P(S3)和V(S5)
    • C.V(S3)和P(S5)
    • D.P(S3)和P(S5)
  • (3)
    • A.P(S6)和P(S5)V(S6)
    • B.V(S5)和V(S5)V(S6)
    • C.V(S6)和P(S5)P(S6)
    • D.P(S6)和P(S5)P(S6)

【答案】D B C
【解析】本题考查的是利用PV操作控制进程的并发执行。
先理清楚前趋图中的逻辑关系:P1没有前驱,P2的前驱是P1,P3的前驱是P1、P2,P4的前驱是P2,P5的前驱是P3、P4。
前驱就是指只有在前驱进程完成后,该进程才能开始执行。由图可知,这里进程之间有6条有向弧,分别表示为P1->P2,P1-P3,P2->P3,P2->P4,P3->P5,P4->P5,各个进程间的逻辑关系,那么我们需要设定6个信号量(S1、S2、S3、S4、S5、S6),利用PV操作来控制这些过程。
(1)对于第一个空,P1执行完成之后,需要通知P2、P3可以开始,此处需要V(S1)、V(S2)操作分别唤醒P2、P3进程,已有V(S1),此处需要填写V(S2)。
(2)对于第二个空,P2执行之前,需要检查P1进程是否完成,因此需要通过P(S1)操作来判定,P1是否完成。
(3)对于第三个空,在P3执行之前,需要检查P1、P2进程是否完成,因此需要通过P(S2)、P(S3)操作来判定P1、P2是否完成,已有P(S2),此处填写P(S3)。
(4)对于第四空,P3执行完成后,需要通知P5进程可以开始,此处需要通过V(S5)操作唤醒P5进程;
(5)对于第五空,P4进程完成后,需要通知P5进程可以开始,此处需要通过V(S6)操作唤醒P5进程;
(6)对于第六空,P5进程开始之前,需要检查P3、P4进程是否已完成,因此需要P(S5)、P(S6)操作来判断P3、P4是否完成。

  1. 某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若磁盘上物理块的编号依次为:0、1、2、…;系统中的字长为32位,位示图中字的编号依次为:0、1、2、…,每个字中的一个二进制位对应文件存储器上的一个物理块,取值0和1分别表示物理块是空闲或占用。假设操作系统将2053号物理块分配给某文件,那么该物理块的使用情况在位示图中编号为_____的字中描述。
    • A.32
    • B.33
    • C.64
    • D.65

【答案】C
【解析】
在这里插入图片描述
2053号物理块是第2054块物理块,每一个字可以表示32个物理块的存储情况,2054/32=64.xxx,因此,此时应该排在第65个字,从0号开始编号,则为第64号字。

  1. 某操作系统文件管理采用索引节点法。每个文件的索引节点有8个地址项,每个地址项大小为4字节,其中5个地址项为直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,磁盘索引块和磁盘数据块大小均为1KB。若要访问文件的逻辑块号分别为1和518,则系统应分别采用_____。
    • A.直接地址索引和一级间接地址索引
    • B.直接地址索引和二级间接地址索引
    • C.一级间接地址索引和一级间接地址索引
    • D.一级间接地址索引和二级间接地址索引

【答案】B
【解析】
每个物理块大小为1KB,每个地址项大小为4B,因此每个物理块可以对应地址项个数为:1KB/4B=256。
直接索引即索引直接指向物理块,可以表示逻辑块号范围:0~4号
一级索引即索引节点指向的物理块用来存放地址项,可以表示256个地址项,即256个物理块,可以表示逻辑地址块号范围:5258,259515号
二级索引即索引节点指向的物理块,存放的是一级索引的地址块地址,一共有256个地址块用来存放一级索引,每个块可以存放256个地址项,共有2562=65536个地址项,因此可以表示的逻辑块号范围:516~66052号

  1. 某企业拟开发一个企业信息管理系统,系统功能与多个部门的业务相关。现希望该系统能够尽快投入使用,系统功能可以在使用过程中不断改善。则最适宜采用的软件过程模型为_____。
    • A.瀑布模型
    • B.原型模型
    • C.演化(迭代)模型
    • D.螺旋模型

【答案】C
【解析】
本题要求尽量投入使用,并可以再使用过程中不断完善,对于原型模型和演化(迭代)模型,演化模型更合适,原型模型更适用于需求不明确时用以获取需求。

  1. 能力成熟度模型集成(CMMI)是若干过程模型的综合和改进。连续式模型和阶段式模型是CMMI提供的两种表示方法,而连续式模型包括6个过程域能力等级,其中_____使用量化(统计学)手段改变和优化过程域,以应对客户要求的改变和持续改进计划中的过程域的功效。
    • A.CL2(已管理的)
    • B.CL3(已定义级的)
    • C.CL4(定量管理的)
    • D.CL5(优化的)

【答案】D
【解析】
CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标。
CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标。
CL2(已管理的):其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的计划和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控、控制、和评审。
CL3(已定义级的):其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程中裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。
CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化。使用测量和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则。
CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效。

  1. 在ISO/IEC 9126软件质量模型中,可靠性质量特性是指在规定的一段时间内和规定的条件下,软件维持在其性能水平有关的能力,其质量子特性不包括_____。
    • A.安全性
    • B.成熟性
    • C.容错性
    • D.易恢复性

【答案】A
【解析】

  1. 以下关于模块化设计的叙述中,不正确的是_____。
    • A.尽量考虑高内聚、低耦合,保持模块的相对独立性
    • B.模块的控制范围在其作用范围内
    • C.模块的规模适中
    • D.模块的宽度、深度、扇入和扇出适中

【答案】B
【解析】
模块化设计要求高内聚、低耦合。
在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则:
(1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。一般来说,一个模块的大小使其实现代码在1~2页纸之内,或者其实现代码行数在50~200行之间,这种规模的模块易于实现和维护。
(2)模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。设计良好的软件结构通常顶层扇出比较大,中间扇出较少,底层模块则有大扇入。一般来说,系统的平均扇入和扇出系数为3或4,不应该超过7,否则会增大出错的概率。
(3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。
模块的扇入指模块直接上级模块的个数。模块的直属下级模块个数即为模块的扇出。

  1. 某企业管理信息系统中,采购子系统根据材料价格、数量等信息计算采购的金额,并给财务子系统传递采购金额、收款方和采购日期等信息,则这两个子系统之间的耦合类型为_____耦合。
    • A.数据
    • B.标记
    • C.控制
    • D.外部

【答案】A
【解析】
直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。
标记耦合 :一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址;
控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
(4)一个模块有多个入口。
本题属于数据耦合,采购子系统模块给财务子系统模块传递数据。

  1. 对以下的程序伪代码(用缩进表示程序块)进行路径覆盖测试,至少需要_____个测试用例。采用McCabe度量法计算其环路复杂度为_____。
    在这里插入图片描述
  • (1)
    • A.2
    • B.4
    • C.6
    • D.8
  • (2)
    • A.2
    • B.3
    • C.4
    • D.5

【答案】B C
【解析】
对于本题,用例(x,y,z)分别为(1,1,0)(1,-1,0)(-1,0,1)(-1,0,-1),这4个测试用例可以走完所有可能路径。因为在伪代码中,我们可以看到,当x>0时,只需要对Y分别取大于0和不大于0的值即可,z不参与比较;当x不大于0时,只需要对z分别取大于0和不大于0的值即可,y不参与比较,只需要4个用例即可。
对于第二空,转换为结点图如下:
在这里插入图片描述
根据V(G)=m-n+2,其中m是有向图的弧,为15,n为有向图的节点数,为13,15-13+2=4,即环路复杂的为4。

  1. 某商场的销售系统所使用的信用卡公司信息系统的数据格式发生了更改,因此对该销售系统进行的修改属于_____维护。
    • A.改正性 B.适应性 C.改善性 D.预防性

【答案】B
【解析】
在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下四种:
(1)改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。
(2)适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。
(3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。
(4)预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。
本题对该销售系统的修改是为了应对数据格式的变化而做出的修改。

  1. 在面向对象方法中,继承用于_____。
    • A.在已存在的类的基础上创建新类
    • B.在已存在的类中添加新的方法
    • C.在已存在的类中添加新的属性
    • D.在已存在的状态中添加新的状态

【答案】A
【解析】
本题考查的是继承的定义:继承是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行。

  1. 多态是指操作(方法)具有相同的名称、且在不同的上下文中所代表的含义不同
    • A.参数
    • B.包含
    • C.过载
    • D.强制

【答案】C
【解析】
参数多态:应用广泛、最纯的多态。
包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。
强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。

  1. 在某销售系统中,客户采用扫描二维码进行支付。若采用面向对象方法开发该销售系统,则客户类属于_____类, 二维码类属于_____类。
ABCD
接口实体控制状态
接口实体控制状态

【答案】B A
【解析】
类可以分为三种:实体类、接口类(边界类)和控制类。实体类的对象表示现实世界中真实的实体,如人、物等。接口类(边界类)的对象为用户提供一种与系统合作交互的方式,分为人和系统两大类,其中人的接口可以是显示屏、窗口、Web窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。系统接口涉及到把数据发送到其他系统,或者从其他系统接收数据。控制类的对象用来控制活动流,充当协调者。

  1. 下图所示UML图为_____,用于展示_____。①和②分别表示_____。
    在这里插入图片描述
ABCD
类图组件图通信图部署图
一组对象、接口、协作和它们之间的关系收发消息的对象的结构组织组件之间的组织和依赖面向对象系统的物理模型
供接口和供接口需接口和需接口供接口和需接口需接口和供接口

【答案】B C C
【解析】

  1. 假设现在要创建一个简单的超市销售系统,顾客将毛巾、饼干、酸奶等物品(Item)加入购物车(Shopping_Cart),在收银台(Checkout)人工(Manual)或自动(Auto)地将购物车中每个物品的价格汇总到总价格后结帐。这一业务需求的类图(方法略)设计如下图所示,采用了_____模式。其中_____定义以一个Checkout对象为参数的accept操作,由子类实现此accept操作。此模式为_____,适用于_____。
    在这里插入图片描述
ABCD
观察者(Observer)访问者(Visitor)策略(Strategy)桥接器(Bridge)
ItemShopping_CartCheckoutManual和Auto
创建型对象模式结构型对象模式行为型类模式行为型对象模式
必须保存一个对象在某一个时刻的(部分)状态想在不明确指定接收者的情况下向多个对象中的一个提交一个请求需要对一个对象结构中的对象进行很多不同的并且不相关的操作在不同的时刻指定、排列和执行请求

【答案】B A D C
【解析】本题为访问者模式。
对于观察者模式是一个被观察者和多个观察者对象,与图示不符;桥接模式是结构型模式,存在部分与整体的联系,与本题不符;策略模式是对于不同算法的封装和切换,但是调用策略的对象只有一个,与本题不符。一个对象结构包含很多类对象(Item),而系统要求这些对象实施一些依赖于某具体类(Checkout)的操作时,可以使用访问者模式。

  1. 在以阶段划分的编译器中,_____阶段的主要作用是分析程序中的句子结构是否正确。
    • A.词法分析
    • B.语法分析
    • C.语义分析
    • D.代码生成

【答案】B
【解析】
词法分析:从左到右逐个扫描源程序中的字符,识别其中如关键字(或称保留字)、标识符、常数、运算符以及分隔符(标点符号和括号)等。
语法分析:根据语法规则将单词符号分解成各类语法单位,并分析源程序是否存在语法上的错误。包括:语言结构出错、if…end if不匹配,缺少分号、括号不匹配、表达式缺少操作数等。本题属于语法分析阶段的作用。
语义分析:进行类型分析和检查,主要检测源程序是否存在静态语义错误。包括:运算符和运算类型不符合,如取余时用浮点数

  1. 下图所示为一个不确定有限自动机(NFA)的状态转换图。该NFA可识别字符串_____。
    在这里插入图片描述
    • A.0110
    • B.0101
    • C.1100
    • D.1010

【答案】A
【解析】
本题因为是不确定的有限自动机,中间内容由多种可能,但由图可以看到,从初态0开始,首字符只能为0,到终态结束之前,尾字符也只能为0。

  1. 函数f和g的定义如下图所示。执行函数f时若采用引用(call by reference)方式调用函数g(a),则函数f的返回值为_____。
    在这里插入图片描述

    • A.14
    • B.18
    • C.24
    • D.28

【答案】D
【解析】本题采用引用调用,会改变实参的值。
对于实参a,传递给g(a)之后,在g(a)函数,表现为形参x。
根据g(x)代码:m=5*2=10,x=10-1=9,返回值x+m=19;
返回f()代码,此时a(即g(x)中的x)的值已经改变,为9;c等于g(a)的返回值,也就是19。
最终可得f()的返回值a+c=28。

  1. 数据库系统中的视图、存储文件和基本表分别对应数据库系统结构中的_____。
    • A.模式、内模式和外模式
    • B.外模式、模式和内模式
    • C.模式、外模式和内模式
    • D.外模式、内模式和模式

【答案】D
【解析】
本题考察的是数据库体系结构:三层模式。对于题干给出的视图、存储文件、基本表分别对应:视图-外模式,存储文件-内模式,基本表-模式。

  1. 在分布式数据库中,_____是指用户或应用程序不需要知道逻辑上访问的表具体如何分块存储。
    • A.逻辑透明
    • B.位置透明
    • C.分片透明
    • D.复制透明

【答案】C
【解析】本题考查的是分布式数据库相关知识。
(1)分片透明:是指用户不必关系数据是如何分片的,它们对数据的操作在全局关系上进行,即关系如何分片对用户是透明的,因此,当分片改变时应用程序可以不变。分片透明性是最高层次的透明性,如果用户能在全局关系一级操作,则数据如何分布,如何存储等细节自不必关系,其应用程序的编写与集中式数据库相同。
(2)复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。在分布式数据库系统中,可以把一个场地的数据复制到其他场地存放,应用程序可以使用复制到本地的数据在本地完成分布式操作,避免通过网络传输数据,提高了系统的运行和查询效率。但是对于复制数据的更新操作,就要涉及到对所有复制数据的更新。
(3)位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的
局部映像透明性(逻辑透明)是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关系局部DBMS支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。
本题提到不需要了解具体如何分块存储,如果描述为不需要了解物理存储或存储位置,则为位置透明,而涉及到如果分块存储,应该为分片透明。对于分布式数据库,分片是一种大局性的划分,而物理上的存储位置则更为底层,所以对于如何分块存储,强调更多的是分片而不是物理位置。

  1. 设有关系模式R(A1,A2,A3,A4,A5,A6),函数依赖集F={A1→A3,A1 A2→A4,A5 A6→A1,A3 A5→A6,A2 A5→A6}。关系模式R的一个主键是_____, 从函数依赖集F可以推出关系模式R_____。
ABCD
A1A4A2A5A3A4A4A5
不存在传递依赖,故R为1NF存在传递依赖,故R为2NF存在传递依赖,故R为3NF每个非主属性完全函数依赖于主键,故R为2NF

【答案】B D
【解析】本题看起来逻辑很复杂,但解题相对比较简单。
根据函数依赖集,可以简单分析,在本题中唯一入度为0的属性为A2,因此,A2一定属于候选键集合,在选项中只有B选项符合要求。
第二空,根据第一空可知R的一个主键为A2A5,由函数依赖集F可知,存在A2A5àA6,A5A6àA1,A1àA3,这里存在传递函数依赖,故A、B选项均不正确,C选项本身不正确,存在非主属性对候选键的传递函数依赖,是不满足3NF的。因此本题选择D选项。
也可将完整的依赖图示绘制出来判断本题A2A5为候选键,并且每个非主属性完全函数依赖于主键。

  1. 给定关系R(A, B,C,D)和S(C,D,E),若关系R与S进行自然连接运算,则运算后的元组属性列数为_____;关系代数表达式在这里插入图片描述
    与_____等价。
ABCD
45.67
πA,D(σC=D(R×S))πR.A,R.D(σR.B=S.C(R×S))πA,R.D(σR.C=S.D(R×S))πR.A,R.D(σR.B=S.E(R×S))

【答案】B D
【解析】本题考查的是数据库中关系代数的相关知识内容。
对于第一空,关系R与S进行自然连接后,属性列数为二者之后并减去其中的重复列,本题R和S都存在C、D属性,因此自然连接后属性列数为4+3-2=5。

  1. 栈的特点是后进先出,若用单链表作为栈的存储结构,并用头指针作为栈顶指针,则_____。
    • A.入栈和出栈操作都不需要遍历链表
    • B.入栈和出栈操作都需要遍历链表
    • C.入栈操作需要遍历链表而出栈操作不需要
    • D.入栈操作不需要遍历链表而出栈操作需要

【答案】A
【解析】
本题用单链表作为栈的存储结构,因为栈的操作是先进后出,因此无论是入栈还是出栈,都只对栈顶元素操作,而在单链表中用头指针作为栈顶指针,此时无论是出栈还是入栈,都只需要对头指针指向的栈顶指针操作即可,不需要遍历链表。

  1. 已知某二叉树的先序遍历序列为A B C D E F、中序遍历序列为B A D C F E,则可以确定该二叉树_____。
    • A.是单支树(即非叶子结点都只有一个孩子)
    • B.高度为4(即结点分布在4层上)
    • C.根结点的左子树为空
    • D.根结点的右子树为空

【答案】B
【解析】

  1. 可以构造出下图所示二叉排序树(二叉检索树、二叉查找树)的关键码序列是_____。
    在这里插入图片描述
    • A.10 13 17 19 23 27 31 40 65 91
    • B.23 40 91 17 19 10 31 65 27 13
    • C.23 19 40 27 17 13 10 91 65 31
    • D.27 31 40 65 91 13 10 17 23 19

【答案】B
【解析】
二叉排序树的构造过程:
若查找二叉树为空树,则以新结点为查找二叉树;
将要插入结点键值与插入后父结点键值比较,就能确定新结点是父结点的左子结点,还是右子结点,直到将序列中的所有元素(关键码)全部插入。
根据排序二叉树的构造过程,可知A选项的根节点为10,D选项的根节点为27,因此可以排除。对于C选项,构造根节点的子结点,可知19为其左孩子结点,与图不符。本题只有B选项可以构造出图示的排序二叉树。

  1. 图G的邻接矩阵如下图所示(顶点依次表示为v0、v1、v2、v3、v4、v5),G是_____。对G进行广度优先遍历(从v0开始),可能的遍历序列为_____。
    在这里插入图片描述
ABCD
无向图有向图完全图强连通图
v0、v1、v2、v3、v4、v5v0、v2、v4、 v5、v1、v3v0、v1、v3、v5、v2、v4v0、v2、v4、v3、v5、v1

【答案】B A
【解析】
由邻接矩阵可知,对于结点V0和V1之间,只存在弧V0àV1,而没有弧V1àV0,因此图G不属于无向图,也不属于完全图。
强连通图:在有向图G中如果对于每一对顶点Vi,Vj,从顶点Vi到顶点Vj和从顶点Vj到顶点Vi都存在路径,则称图为强连通图。本题不满足该条件。
因此本题第一空应该选择B选项有向图。
对于第二空,图的广度遍历过程:从图中的某个顶点V触发,在访问了V之后一次访问V的各个未被访问的邻接点,然后分别从这些邻接点出发,依次访问它们的邻接点,并使“先被访问的顶点的邻接点”先于“后被访问的顶点的邻接点”被访问,直到图中所有已被访问的顶点的邻接点都被访问到。本题从V0出发,一次访问其邻接点V1、V2,只有A选项符合条件。

二、应用题

关注林哥,持续更新哦!!!★,°:.☆( ̄▽ ̄)/$:.°★ 。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值