软件设计师历年真题解析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-10-05 00:15:12

点击下载

作者:薛大龙

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

软件设计师历年真题解析

软件设计师历年真题解析试读:

前言

软件设计师考试作为全国计算机技术与软件专业技术资格考试一个中级的专业,是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试,根据原人事部、原信息产业部文件(国人部发[2003]39号)文件规定,计算机软件资格考试纳入全国专业技术人员职业资格证书制度的统一规划,通过考试获得软件设计师证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位可根据工作需要从获得证书的人员中择优聘任相应专业技术职务。

根据考试大纲要求,软件设计师考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档;组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平。

因为要求比较高,往年全国平均通过率低于20%,难度比较大。

1. 学习方法建议

成功一定有方法,失败必然有原因。如何复习才能更加顺利地通过考试呢?笔者的建议是:在掌握学科知识的基础上,认真研习历年真题。(1)了解历年真题:因为历年真题的难度、命题范围,对我们将要参加考试的考生具有很好的借鉴作用,从中我们可以得出复习深度和广度。(2)熟悉历年真题:因为历年真题的知识点,就是我们要学习的知识点,因此从历年真题中梳理出的知识点即是考点,就是我们要熟悉的内容,就是我们复习的重点。(3)掌握历年真题:我们不仅要会做某道题,还要举一反三,将该题涵盖的知识点所在的知识域掌握,这样不管它考该知识域的哪个点,我们都能从容应对。

相信经历了如上三步,我们就会发现,这个考试并不太难。

2. 书籍作者介绍

十多年来,薛大龙博士受邀为数十家著名培训机构授课,共讲授公开课600多次,企业内训1000多次。在培训中我们发现,通过对每一道真题进行解析,梳理知识要点,能够让学员更快地掌握知识点,更高效地复习。

本书由薛大龙担任主编,由邹月平、李海龙、兰帅辉担任副主编。其中薛大龙负责2014年的真题解析,兰帅辉负责2015年的真题解析,李海龙负责2016年的真题解析,邹月平负责2017年的真题解析。参与本书编写的人员还有:张国营、王安、何鹏涛、吴芳茜、吴春杰、李莉莉等专家。全书由邹月平统稿和初审,由薛大龙终审。

薛大龙,北京理工大学博士研究生,多所大学客座教授,北京市评标专家,全国计算机技术与软件专业技术资格考试历年真题解析编委会主任,曾多次参与全国计算机技术与软件专业技术资格考试的命题与阅卷,非常熟悉命题要求、命题形式、命题难度、命题深度、命题重点及判卷标准等。

邹月平,高级工程师、一级建造师、全国计算机技术与软件专业技术资格考试历年真题解析编委会副主任。系统分析师、系统架构设计师、信息系统项目管理师、软件设计师授课讲师,授课经验丰富,曾任《信息系统项目管理师历年真题解析(第3版)》副主编,《系统集成项目管理工程师历年真题解析(第3版)》副主编、《信息系统监理师历年真题解析(第2版)》副主编。

李海龙,计算机硕士生导师,高级工程师、一级建造师、信息系统项目管理师,河北省评标专家,全国计算机技术与软件专业技术资格考试历年真题解析编委。担任了《信息系统项目管理师历年真题解析(第3版)》副主编,参与了《系统集成项目管理工程师历年真题解析(第3版)》、《高级信息系统项目管理师教程(第2版)》等书籍编写。

兰帅辉,北京大学硕士,高级工程师,信息系统项目管理师、信息系统监理师、北京市评标专家。有超过十年的主持研发与技术管理工作,熟悉软件工程过程,参与过多个千万级以上项目,有多个大型IT项目的规划与实施经验,有一定的业务经验积累(企业运营管理、智能制造方向)。

3.本书使用说明

本书作为考生备考软考中级资格“软件设计师”的学习教材,也可供各类培训班使用。考生可通过学习本书,掌握考试的重点,熟悉试题形式及解答问题的方法和技巧等。

4.在线互动学习

为了更好地帮助广大考生充分利用碎片化时间,在移动互联网环境下进行学习,我们开发了“软考”冲刺互动学习平台。用微信扫描右侧的二维码,关注“悦读力”,即可进入“软考”冲刺互动学习平台。在这里,读者在读者圈中与资深软考培训老师们进行交流,还可以向老师提问,可以在线答题,进行学习效果自测和碎片化时间学习,还可以收听和收看音频和视频课程等。“软考”冲刺互动学习平台,综合了“系统集成项目管理工程师”“信息系统项目管理师”“信息系统监理师”“软件设计师”“系统分析师”“系统架构设计师”六门软考科目的复习资料,部分内容收费,读者可以根据自己的学习需求选择需要的内容。

考生可通过学习本书,掌握考试的重点,并通过历年真题与解析,熟悉试题形式及解答问题的方法和技巧等。读者通过互动平台,可以方便地和我们联系和交流,也可以发邮件到作者电子邮箱pyxdl@163.com,我们会及时地解答读者的疑问。编者2018年于北京

2017年软件设计师考试试题与解析

2017年上半年软件设计师上午试题分析与解答

● CPU执行算术运算或者逻辑运算时,常将源操作数和结果暂存在 (1) 中。(1) A.程序计数器 (PC) B.累加器 (AC)

C.指令寄存器 (IR) D.地址寄存器 (AR)

试题分析

选项A程序计数器(PC)是存放执行指令的地方,计算之前就要用到。

选项B累加寄存器,用来暂时存放算术逻辑运算部件ALU运算的结果信息。

选项C指令寄存器(IR)保存当前正在执行的一条指令。

选项D地址寄存器(AR)用来保存当前CPU所要访问的内存单元的地址。

参考答案:(1)B

● 要判断宇长为16位的整数a的低四位是否全为0,则 (2)。(2) A.将a与0x000F进行“逻辑与”运算,然后判断运算结果是否等于0

B.将a与0x000F进行“逻辑或”运算,然后判断运算结果是否等于F

C.将a与0x000F进行“逻辑异或”运算,然后判断运算结果是否等于0

D.将a与0x000F进行“逻辑与”运算,然后判断运算结果是否等于F

试题分析

在逻辑运算中,设A和B为两个逻辑变量,当且仅当A和B的取值都为“真”时,A与B的值为“真”;否则A与B的值为“假”。当且仅当A和B的取值都为“假”时,A或B的值为“假”;否则A或B的值为“真”。当且仅当A、B的值不同时,A异或B为“真”,否则A异或B为“假”。对于16位二进制整数a,其与0000000000001111(即十六进制数000F)进行逻辑与运算后,结果的高12位都为0,低4位则保留a的低4位,因此,当a的低4位全为0时,上述逻辑与运算的结果等于0。

参考答案:(2)A

● 计算机系统中常用的输入/输出控制方式有无条件传送、中断、程序查询和DMA方式等。当采用 (3) 方式时,不需要CPU执行程序指令来传送数据。(3) A.中断 B.程序查询

C.无条件传送 D.DMA

试题分析

由于DMA方式是在DMA控制器硬件的控制下实现数据的传送,不需要CPU执行程序,故这种方式传送的速度最快。另外三种都是通过CPU执行某一段程序,实现计算机内存与外设间的数据交换。

参考答案:(3)D

● 某系统由下图所示的冗余部件构成。若每个部件的千小时可靠度都为R,则该系统的千小时可靠度为 (4)。3232

(4) A.(1-R)(1-R) B.(1-(1-R))(1-(1-R))3232

C.(1-R)+(1-R) D.(1-(1-R))+(1-(1-R))

试题分析

串联系统可靠性公式为:R=R×R×…×R12n

并联系统可靠性公式为:R=1-(1-R)×(1-R)×…×(1-R)12n

参考答案:(4)B

● 己知数据信息为16位,最少应附加 (5) 位校验位,才能实现海明码纠错。

(5) A.3 B.4 C.5 D.6

试题分析

在海明码中,用K代表其中有效信息位数,r表示添加的校验码位,它们之间的关系应满足:2r>=K+r+1=N。

本题中K=16,则要求2r>=16+r+1,根据计算可以得知r的最小值为5。

参考答案:(5)C

● 以下关于Cache(高速缓冲存储器)的叙述中,不正确的是 (6)(6) A.Cache的设置扩大了主存的容量

B.Cache的内容是主存部分内容的拷贝

C.Cache的命中率并不随其容量增大线性地提高

D.Cache位于主存与CPU之间

试题分析

Cache存储器用来存放主存的部分拷贝(副本)。它是按照程序的局部性原理选取出来的最常使用或不久将来仍将使用的内容。

参考答案:(6)A

● HTTPS使用 (7) 协议对报文进行封装。

(7) A.SSH B.SSL C.SHA-1 D.SET

试题分析

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

参考答案:(7)B

● 以下加密算法中适合对大量的明文消息进行加密传输的是 (8)。

(8) A.RSA B.SHA-1 C.MD5 D.RC5

试题分析

RSA是非对称加密算法;SHA-1与MD5属于信息摘要算法;RC-5属于非对称加密算法。这些算法中,SHA-1与MD5是不能用来加密数据的,而RSA由于效率问题,一般不直接用于大量的明文加密。

参考答案:(8)D

● 假定用户A、B 分别在I1和I2两个CA处取得了各自的证书,下面 (9) 是 A、B 互信的必要条件。(9) A.A、B互换私钥 B.A、B互换公钥

C.I1、I2互换私钥 D.I1、I2互换公钥

试题分析

两个证书发放机构I1和I2互换公钥是A、B 互信的必要条件。选项A和C的私钥是不能互换的。选项B中要AB互信,其信任基础是建立在CA之上的,如果仅交换AB的公钥并不能解决信任的问题。

参考答案:(9)D

● 甲软件公司受乙企业委托安排公司软件设计师开发了信息系统管理软件,由于在委托开发合同中未对软件著作权归属作出明确的约定,所以该信息系统管理软件的著作权由(10) 享有。(10) A.甲 B.乙

C.甲与乙共同 D.软件设计师

试题分析

根据《著作权法》第17条的规定,著作权归属由委托人和受托人通过合同约定。合同中未作明确约定的,著作权属于受托人。

参考答案:(10)A

● 根据我国商标法,下列商品中必须使用注册商标的是 (11)。(11) A.医疗仪器 B.墙壁涂料

C.无糖食品 D.烟草制品

试题分析

根据我国法律法规的规定,必须使用注册商标的是烟草类商品。

参考答案:(11)D

● 甲、乙两人在同一天就同样的发明创造提交了专利申请,专利局将分别向各申请人通报有关情况,并提出多种可能采用的解决办法。下列说法中,不可能采用 (12)。(12) A.甲、乙作为共同申请人

B.甲或乙一方放弃权利并从另一方得到适当的补偿

C.甲、乙都不授予专利权

D.甲、乙都授予专利权

试题分析

根据“同一的发明创造只能被授予一项专利”的规定,在同一天,两个不同的人就同样的发明创造申请专利的,专利局将分别向各申请人通报有关情况,请他们自己去协商解决这一问题。解决的方法一般有两种,一种是两申请人作为一件申请的共同申请人;另一种是其中一方放弃权利并从另一方得到适当的补偿。

参考答案:(12)D

● 数字语音的采样频率定义为 8kHz,这是因为 (13)。(13) A.语音信号定义的频率最高值为4kHz

B.语音信号定义的频率最高值为8kHz

C.数字语音转输线路的带宽只有8kHz

D.一般声卡的采样频率最高为每秒8k次

试题分析

根据尼奎斯特取样定理:如果取样速率大于模拟信号最高频率的2倍,则可以用得到的样本中恢复原来的模拟信号。

参考答案:(13)A

● 使用图像扫描仪以300DPI的分辨率扫描一幅3×4英寸的图片,可以得到 (14) 像素的数字图像。

(14) A.300×300 B.300×400 C.900×4 D.900×1200

试题分析

DPI含义为像素/英寸,故可以得到(300×3)×(300×4)=900×1200

参考答案:(14)D

● 在采用结构化开发方法进行软件开发时,设计阶段接口设计主要依据需求分析阶段的 (15)。接口设计的任务主要是 (16)。(15) A.数据流图 B.E-R图

C.状态-迁移图 D.加工规格说明(16) A.定义软件的主要结构元素及其之间的关系

B.确定软件涉及的文件系统的结构及数据库的表结构

C.描述软件与外部环境之间的交互关系,软件内模块之间的调用关系

D.确定软件各个模块内部的算法和数据结构

试题分析

接口设计的主要依据是数据流图,接口设计的任务主要是描述软件与外部环境之间的交互关系,软件内模块之间的调用关系。定义软件的主要结构元素及其之间的关系是架构阶段的任务;确定软件涉及的文件系统的结构及数据库的表结构是数据存储设计阶段的任务;确定软件各个模块内部的算法和数据结构是详细设计阶段的任务。

参考答案:(15)A (16)C

● 某软件项目的活动图如下图所示,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示活动的持续时间(天),则完成该项目的最少时间为 (17) 天。活动BD和HK最早可以从第 (18) 天开始。(活动AB、AE和AC最早从第1天开始)

(17) A.17 B.18 C.19 D.20(18) A.3和10 B.4和11 C.3和9 D.4和10

试题分析

项目的工期是从开始到结束持续时间最长的工作。题目中持续时间最长的是AEGHKL,需要时间20天。

BD活动在AB活动结束之后便可以开始,所以最早开始时间为3。HK活动需要在AEGH与ACFH两条路径上的活动均完成之后,才能开始,所以最早开始时间为10。

参考答案:(17)D (18)A

● 在进行软件开发时,采用无主程序员的开发小组,成员之间相互平等;而主程序员负责制的开发小组,由一个主程序员和若干成员组成,成员之间没有沟通。在一个由8名开发人员构成的小组中,无主程序员组和主程序员组的沟通路径分别是 (19)。(19) A.32和8 B.32和7

C.28和8 D.28和7

试题分析

沟通渠道=N(N-1)/2=28,其中N是指参加沟通的人数。由于成员之间没有沟通,所以沟通路径为7。

参考答案:(19)D

● 在高级语言源程序中,常需要用户定义的标识符为程序中的对象命名,常见的命名对象有 (20)。

① 关键字(或保留字) ②变量 ③函数 ④数据类型 ⑤注释

(20) A.①②③ B.②③④

C.①③⑤ D.②④⑤

试题分析

常见的命名对象有:变量、函数、数据类型。

参考答案:(20)B

● 在仅由字符a、b构成的所有字符串中,其中以b结尾的字符串集合可用正规式表示为 (21)。

(21) A.(b|ab)*b B.(ab*)*b

C.a*b*b D.(a|b)*b

试题分析

首先所有选项都是以b结尾的,但只有选项D中的(a|b)*可以表示{ε,a,b,aa,ab......}由字符a、b构成的所有字符串。

参考答案:(21)D

● 在以阶段划分的编译过程中,判断程序语句的形式是否正确属于 (22) 阶段的工作。(22) A.词法分析 B.语法分析

C.语义分析 D.代码生成

试题分析

词法分析阶段:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词,删掉无用的信息,报告分析时的错误。

语法分析阶段:语法分析器以单词符号作为输入,分析单词符号是否形成符合语法规则的语法单位,如表达式、赋值、循环等,按语法规则分析检查每条语句是否有正确的逻辑结构。

语义分析阶段:主要检查源程序是否存在语义错误,并收集类型信息供后面的代码生成阶段使用,如:赋值语句的右端和左端的类型不匹配、表达式的除数是否为零等。

参考答案:(22)B

● 某文件管理系统在磁盘上建立了位示图(bitmap),记录磁盘的使用情况。若计算机系统的字长为32位,磁盘的容量为 300GB,物理块的大小为4MB,那么位示图的大小需要 (23) 个字。

(23) A.1200 B.2400 C.6400 D.9600

试题分析

300×1024/4/32=2400

参考答案:(23)B

● 某系统中有3个并发进程竞争资源R,每个进程都需要5个R,那么至少有(24)个R,才能保证系统不会发生死锁。

(24) A.12 B.13 C.14 D.15

试题分析

首先给每个进程分配所需资源数减1个资源,然后系统还有1个资源,则不可能发生死锁。即:3×4+1=13个。

参考答案:(24)B

● 某计算机系统页面大小为4K,进程的页面变换表如下所示。若进程的逻辑地址为2D16H。该地址经过变换后,其物理地址应为 (25)。

(25) A.2048H B.4096H C.4D16H D.6D16H

试题分析

逻辑地址=页号+页内地址,为32位。物理地址=物理块号+物理地址的页内地址。其中页内地址=物理地址的页内地址。页面大小为124K,占0~11位(4K=4096=2),也就是页内地址有12位,所以16进制数中的D16H是页内地址,因为D16H转化成二进制是1101 0001 0110正好是12位,那么逻辑页号就为2。查表可知对应的物理块号为4,所以物理地址为4D16H。

参考答案:(25)C

● 进程P1、P2、P3、P4和P5的前趋图如下所示:

若用PV操作控制进程P1、P2、P3、P4和P5并发执行的过程,需要设置5个信号量S1、S2、S3、S4和S5,且信号量S1~S5的初值都等于零。如下的进程执行图中a和b处应分别填写 (26);c和d处应分别填写 (27);e和f处应分别填写 (28)。(26) A.V(S1)和P(S2)V(S3) B.P(S1)和V(S2)V(S3)

C.V(S1)和V(S2)V(S3) D.P(S1)和P(S2)V(S3)(27) A.P(S2)和P(S4) B.V(S2)和P(S4)

C.P(S2)和V(S4) D.V(S2)和V(S4)(28) A.P(S4)和V(S5) B.V(S5)和P(S4)

C.V(S4)和P(S5) D.V(S4)和V(S5)

试题分析

图中有五条箭线,因此需要设置五个信号量,按照从小到大的顺序分别是:P1→P2是S1,P2→P3是S2,P2→P4是S3,P3→P4是S4,P4→P5是S5。每个进程开始的时候执行P操作(P1没有P操作,只有V操作),结束的时候执行V操作,如P2开始的时候执行P(S1)的操作,结束时执行V(S2)的操作。其他同理。

参考答案:(26)B (27)C (28)A

● 以下关于螺旋模型的叙述中,不正确的是 (29)。(29) A.它是风险驱动的,要求开发人员必须具有丰富的风险评估知识和经验

B.它可以降低过多测试或测试不足带来的风险

C.它包含维护周期,因此维护和开发之间没有本质区别

D.它不适用于大型软件开发

试题分析

螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

参考答案:(29)C

● 以下关于极限编程(XP) 中结对编程的叙述中,不正确的是 (30)。(30) A.支持共同代码拥有和共同对系统负责

B.承担了非正式的代码审查过程

C.代码质量更高

D.编码速度更快

试题分析

XP提倡结对编程,代码所有权归于整个开发队伍,其中的结对编程就是一种对代码的审査过程。XP主要解决代码质暈低的问题,编码速度不能改变。

参考答案:(30)D

● 以下关于C/S(客户机/服务器)体系结构的优点的叙述中,不正确的是 (31)。(31) A.允许合理地划分三层的功能,使之在逻辑上保持相对独立性

B.允许各层灵活地选用平台和软件

C.各层可以选择不同的开发语言进行并行开发

D.系统安装、修改和维护均只在服务器端进行

试题分析

选项D是B/S结构的特点。

参考答案:(31)D

● 在设计软件的模块结构时,(32) 不能改进设计质量。(32) A.尽量减少高扇出结构 B.尽量减少高扇入结构

C.将具有相似功能的模块合并 D.完善模块的功能

试题分析

在结构化设计中,系统由多个逻辑上相对独立的模块组成,在模块划分时需要遵循如下原则。(1)模块的大小要适中。系统分解时需要考虑模块的规模,过大的模块可能导致系统分解不充分,其内部可能包括不同类型的功能,需要进一步划分,尽量使得各个模块的功能单一;过小的模块将导致系统的复杂度增加,模块之间的调用过于频繁,反而降低了模块的独立性。一般来说,一个模块的大小应使其实现代码在1~2页纸之内,或者实现代码行数在50~200行之间,这种规模的模块易于实现和维护。(2)模块的扇入和扇出要合理。一个模块的扇出是指该模块直接调用的下级模块的个数;扇出大表示模块的复杂度高,需要控制和协调过多的下级模块。扇出过大一般是因为缺乏中

间层次,应该适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。一个模块的扇入是指直接调用该模块的上级模块的个数;扇入大表示模块的复用程度高。设计良好的软件结构通常顶层扇出比较大,中间扇出较少,底层模块则有大扇入。一般来说,系统的平均扇入和扇出系数为3或4,不应该超过7,否则会增大出错的概率。(3)深度和宽度适当。深度表示软件结构中模块的层数,如果层数过多,则应考虑是否有些模块设计过于简单,看能否适当合并。宽度是软件结构中同一个层次上的模块总数的最大值,一般说来,宽度越大系统越复杂,对宽度影响最大的因素是模块的扇出。在系统设计时,需要权衡系统的深度和宽度,尽量降低系统的复杂性,减少实施过程的难度,提高开发和维护的效率。

参考答案:(32)D

● 模块A、B和 C有相同的程序块,块内的语句之间没有任何联系,现把改程序块取出来,形成新的模块D,则模块D的内聚类型为 (33) 内聚。以下关于该内聚类型的叙述中,不正确的是 (34)。(33) A.巧合 B.逻辑

C.时间 D.过程(34) A.具有最低的内聚性 B.不易修改和维护

C.不易理解 D.不影响模块间的耦合关系

试题分析

内聚按强度从低到高有以下几种类型。(1)偶然内聚

如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。(2)逻辑内聚

几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚,如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系。局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。(3)时间内聚

如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。(4)通信内聚

如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。(5)顺序内聚

如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。(6)过程内聚

过程内聚是指构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。(7)信息内聚

模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。(8)功能内聚

模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。

参考答案:(33)A (34)D

● 对下图所示的程序流程图进行语句覆盖测试和路径覆盖测试,至少需要 (35) 个测试用例。采用McCabe 度量法计算其环路复杂度为 (36)。(35) A.2和3 B.2和4 C.2和5 D.2和6

(36) A.1 B.2 C.3 D.4

试题分析

覆盖2条路径就能达到语句覆盖的要求,故语句覆盖用2个测试用例即可。路径覆盖需要把程序中的3条路径均覆盖一遍,需要3个用例。

整个程序流程图转化为节点图之后,一共11个节点,13条边,根据环路复杂度公式有:13-11+2=4。

参考答案:(35)A (36)D

● 在面向对象方法中,两个及以上的类作为一个类的超类时,称为 (37),使用它可能造成子类中存在 (38) 的成员。(37) A.多重继承 B.多态 C.封装 D.层次继承(38) A.动态 B.私有 C.公共 D.二义性

试题分析

多重继承是编程语言中的概念,多重继承指的是一个类可以继承另外一个类,而另外一个类又可以继承别的类,比如A类继承B类,而A类又可以继承C类,这就是多重继承。多重继承可能造成混淆的情况,出现二义性的成员。

参考答案:(37)A (38)D

● 采用面向对象方法进行软件开发,在分析阶段,架构师主要关注系统的 (39)。(39) A.技术 B.部署 C.实现 D.行为

试题分析

采用面向对象方法进行软件开发,分析阶段,架构师主要关注系统的行为,即系统应该做什么。

参考答案:(39)D

● 在面向对象方法中,多态指的是 (40)。(40) A.客户类无需知道所调用方法的特定子类的实现

B.对象动态地修改类

C.一个对象对应多张数据库表

D.子类只能够覆盖父类中非抽象的方法

试题分析

多态按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。例如不同的足球运动员都在进行射门这个动作时,会产生不同的结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。也就是说客户类在调用方法时,并不需要知道特定子类的实现,都会用统一的方式来调用。

参考答案:(40)A

● 以下UML图是(41),图中和表示(42),和表示 (43)。(41) A.序列图 B.状态图 C.通信图 D.活动图(42) A.类 B.对象 C.流名称 D.消息(43) A.类 B.对象 C.流名称 D.消息

试题分析

通信图也叫作协作图,描述的是对象和对象之间的关系,即一个类操作的实现。简而言之就是,对象和对象之间的调用关系,体现的是一种组织关系。“协作”作为一个结构事物用于表达静态结构和动态行为的概念组合,表达不同事物相互协作完成一个复杂功能。文本框中的“:”号,表示一个对象,“:”号前的部分是对象名,“:”号后面的部分是类名,对象之间连线上面的箭头所标识的是对象之间通信的消息。

参考答案:(41)C (42)B (43)D

● 下图所示为观察者(Obserrver)模式的抽象示意图,其中 (44) 知道其观察者,可以有任何多个观察者观察同一个目标;提供注册和删除观察者对象的接口。此模式体现的最主要的特征是 (45)。

(44) A.Subject B.Observer

C.ConcreteSubject D.ConcreteObserver(45) A.类应该对扩展开放,对修改关闭 B.使所要交互的对象尽量松耦合

C.组合优先于继承使用 D.仅与直接关联类交互

试题分析

观察者将自己注册到事件,那么具体的事件就知道了自己的观察者。观察者和事件都有自己的抽象,当实现具体的观察者和事件的时候都要实现相应接口,所以对扩展是开放的。

参考答案:(44)C (45)A

● 装饰器 (Decorator) 模式用于 (46);外观 (Facade) 模式用于 (47)。

① 将一个对象加以包装以给客户提供其希望的另外一个接口

② 将一个对象加以包装以提供一些额外的行为

③ 将一个对象加以包装以控制对这个对象的访问

④ 将一系列对象加以包装以简化其接口

(46) A.① B.② C.③ D.④

(47) A.① B.② C.③ D.④

试题分析

装饰器模式是一种对象结构型模式,可动态地给一个对象增加一些额外的职责。就增加对象功能来说,装饰模式比生成子类实现更为灵活。通过装饰器模式,可以在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;当需要动态地给一个对象增加功能时,可使用装饰模式;当不能采用生成子类的方法进行扩充时也可使用装饰模式。

外观模式是对象的结构模式,要求外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

参考答案:(46)B (40)D

● 某确定的有限自动机 (DFA) 的状态转换图如下图所示(A是初态,D、E是终态),则该DFA能识别 (48)。

(48) A.00110 B.10101 C.11100 D.11001

试题分析

解析路径为:ACEEBDD。

参考答案:(48)C

● 函数main()、f()的定义如下所示,调用函数们f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,main() 函数中 〝print(x)〝执行后输出的值为 (49)。

(49) A.11 B.40 C.45 D.70

试题分析

传值与传引用的区别是:值传递时,实参被拷贝了一份,只能在函数体内使用。因此,a代表的其实就是x本身,只有a的变化才能导致main函数里面的x值的变化。

参考答案:(49)B

● 下图为一个表达式的语法树,该表达式的后缀形式为 (50)。

(50) A.x 5 y+*a/b-B.x5yab*+/-

C.-/*x+5yab D.x5*y+a/b-

试题分析

表达式语法树的后缀形式,就是对树进行后序遍历(左右根),结果为:x5y+*a/b-。

参考答案:(50)A

● 若事务T1对数据D1加了共享锁,事务T2、T3分别对数据D2、D3加了排他锁,则事务T1对数据 (51);事务T2对数据 (52)。(51) A.D2、D3加排他锁都成功

B.D2、D3加共享锁都成功

C.D2加共享锁成功,D3加排他锁失败

D.D2、D3加排他锁和共享锁都失败(52) A.D1、D3加共享锁都失败

B.D1、D3加共享锁都成功

C.D1加共享锁成功,D3如排他锁失败

D.D1加排他锁成功,D3加共享锁失败

试题分析

若事务T1对数据D1加上共享锁,则其他事务只能再对D1加共享锁,而不能加排他锁。

若事务T2、T3对数据D2、D3加上排他锁,则其他事务不能再对D2、D3加任何锁。

参考答案:(51)D (52)C

● 假设关系R<U,F>,U={A1,A2,A3},F={A1A3 →A2,A1A2 →A3},则关系R的各候选关键字中必定含有属性 (53)。

(53) A.A1 B.A2 C.A3 D.A2 A3

试题分析

候选关键字是A1A3,A1A2,必有的属性是A1。

参考答案:(53)A

● 在某企业的工程项目管理系统的数据库中供应商关系Supp、项目关系Proj和零件关系Part的E-R模型和关系模式如下:

Supp(供应商号,供应商名,地址,电话)

Proj(项目号,项目名,负责人,电话)

Part(零件号,零件名)

其中,每个供应商可以为多个项目供应多种零件,每个项目可由多个供应商供应多种零件。SP_P需要生成一个独立的关系模式,其联系类型为 (54)

给定关系模式SP_P(供应商号,项目号,零件号,数量)查询至少供应了3个项目(包含3项)的供应商,输出其供应商号和供应零件数量的总和,并按供应商号降序排列。

SELECT 供应商号,SUM(数量)FROM (55) GROUP BY 供应商号(56) ORDER BY 供应商号DESC;

(54) A.*:*:*B.1:*:*C.1:1:*D.1:1:1

(55) A.Supp B.Proj C.Part D.SP_P(56) A.HAVING COUNT(项目号)>2

B.WHERE COUNT(项目号)>2

C.HAVING COUNT(DISTINCT(项目号))>2

D.WHERE COUNT(DISTINCT(项目号))>3

试题分析

从“每个供应商可以为多个项目供应多种零件,每个项目可由多个供应商供应多种零件”中判断SP_P的联系类型是:多对多对多的关系。而选择供应商号和供应零件的数量只能从

新的关系模式SP_P中选择。

査询条件Where与Having的区別:Where是针对单条记录的判断条件,而Having是针对分组之后的判断条件。同时,由于考虑到项目号可能重复,所以要加Distinct去掉重复的项目。

参考答案:(54)A (55)D (56)C

● 以下关于字符串的叙述中,正确的是 (57)。(57) A.包含任意个空格字符的字符串称为空串

B.字符串不是线性数据结构

C.字符串的长度是指串中所含字符的个数

D.字符串的长度是指串中所含非空格字符的个数

试题分析

在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。选项A中的空格也属于一种字符,都是空格的字符串叫空格串,而不是空串;选项B的字符串是属于线性结构的;选项C字符串的长度是指字符串所有字符个数的总和(包括空格)。

参考答案:(57)C

● 已知栈S初始为空,用I表示入栈、O表示出栈,若入栈序列为a1a2a3a4a5,则通过栈S得到出栈序列a2a4a5a3a1的合法操作序列 (58)。

(58) A.IIOIIOIOOO B.IOIOIOIOIO C.IOOIIOIOIO D.IIOOIOIOOO

试题分析

操作步骤:a1a2入,a2出,a3a4入,a4出,a5入,a5出,a3出,a1出。

参考答案:(58)A

● 某二叉树的先序遍历序列为ABCDEF,中序遍历序列为BADCFE,则该二叉树的高度(即层数)为 (59)。

(59) A.3 B.4 C.5 D.6

试题分析

先序遍历是根左右的方式,中序遍历是左根右的方式。最终的结果如图所示:

参考答案:(59)B

● 对于n个元素的关键宇序列{k1,k2,...kn},当且仅当满足关系ki≤k2i且ki≤k2i+1{i=1.2...[n/2]} 时称其为小根堆(小顶堆)。以下序列中,(60) 不是小根堆。

(60) A.16,25,40,55,30,50,45 B.16,40,25,50,45,30,55

C.16,25,39.,41,45,43,50 D.16,40,25,53,39,55,45

试题分析

按照条件“ki≤k2i且ki≤k2i+1”要求,带入四个选项。以选项A为例,当i=1时,k1 (16)<k2(25),且k1(16)<k3(40)…依此类推,可得选项D不满足要求。

参考答案:(60)D

● 在12个互异元素构成的有序数组 a[1..12] 中进行二分查找(即折半查找,向下取整),若待查找的元素正好等于a[9],则在此过程中,依次与数组中的 (61) 比较后,查找成功结束。

(61) A.a[6]、a[7]、a[8]、a[9] B.a[6]、a[9]

C.a[6]、a[7]、a[9] D.a[6]、a[8]、a[9]

试题分析

二分查找法的原则是:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功;或直到子表不存在为止,此时查找不成功。

参考答案:(61)B

● 某汽车加工工厂有两条装配线L1和L2,每条装配线的工位数均为n(S,i=1或2,j=1,2,…,n),两条装配线对应的工位完成同ij样的加工工作,但是所需要的时间可能不同(a,i=1或2,j=1,2,ij…,n)。汽车底盘开始到进入两条装配线的时间 (e,e) 以及装12配后到结束的时间(XX)也可能不相同。从一个工位加工后流到12下一个工位需要迁移时间(t,i=1或2,j=2,…,n)。现在要以最快ij的时间完成一辆汽车的装配,求最优的装配路线。

分析该问题,发现问题具有最优子结构。以L1为例,除了第一个工位之外,经过第j个工位的最短时间包含了经过L1的第j-1个工位的最短时间或者经过L2的第j-1个工位的最短时间,如式(1)。装配后到结束的最短时间包含离开L1的最短时间或者离开L2的最短时间如式(2)。

由于在求解经过L1和L2的第j个工位的最短时间均包含了经过L1的第j-1个工位的最短时间或者经过L2的第j-1个工位的最短时间,该问题具有重复子问题的性质,故采用迭代方法求解。

该问题采用的算法设计策略是 (62),算法的时间复杂度为 (63)。

以下是一个装配调度实例,其最短的装配时间为 (64),装配路线为 (65)。(62) A.分治 B.动态规划 C.贪心 D.回溯2

(63) A.O(lgn) B.O(n) C.O(n) D.O(nlgn)

(64) A.21 B.23 C.20 D.26

(65) A.S11→S12→S13 B.S11→S22→S13

C.S21→S12→S23 D.S21→S22→S23

试题分析

动态规划算法与分治法不同的是,适合于用动态规划求解的问题,经分解得到的子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。可以用一个表来记录所有已解的子问题的答案。不管该子问题以后是否被用到,只要它被计算过,就将其结果填入表中。这就是动态规划法的基本思路。本题中的时间复杂度为O(n)。

贪心选择是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。

回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

求最短的装配时间与装配路线只需要将选项按照公式带入计算(将图上每条路径上的所有数字相加)可得最短路线为S11→S22→S13,时间为21。

参考答案:(62)B (63)B (64)A (65)B

● 在浏览器地址栏输入一个正确的网址后,本地主机将首先在 (66) 查询该网址对应的IP地址。(66) A.本地DNS缓存 B.本机hosts文件

C.本地DNS服务器 D.根域名服务器

试题分析

本地主机将首先在本机hosts文件中查询该网址对应的IP地址。

参考答案:(66)B

● 下面关于Linux目录的描述中,正确的是 (67)。(67) A.Linux只有一个根目录,用〝/root〝表示

B.Linux中有多个根目录,用〝/〝加相应目录名称表示

C.Linux中只有一个根目录,用〝/〝表示

D.Linux 中有多个根目录,用相应目录名称表示

试题分析

Linux中只有一个根目录,用〝/〝表示。

参考答案:(67)C

● 以下关于TCP/IP 协议栈中协议和层次的对应关系正确的是 (68)。

(68) A.B.

C.D.

试题分析

TCP与UDP是基于IP协议的;SMTP是基于TCP协议的。

参考答案:(68)C

● 在异步通信中,每个字符包含1位起始位、7位数据位和2位终止位,若每秒钟传送500个字符,则有效数据速率为 (69)。

(69) A.500b/s B.700b/s C.3500b/s D.5000b/s

试题分析

总的数据速率为(1+7+2)×500=5000,其中有效数据是7位,那么有效数据速率为5000×7/10=3500(b/s)。

参考答案:(69)C

● 以下路由策略中,依据网络信息经常更新路由的是 (70)。(70) A.静态路由 B.洪泛式 C.随机路由 D.自适应路由

试题分析

静态路由是指由用户或网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。

随机路由使用前向代理来收集网络中的有限全局信息,即当前节点到其源节点的旅行时间,并以此来更新节点的旅行时间表。

洪泛路由是一种简单的路由算法,将收到的封包,往所有的可能连接路径上递送,直到封包到达为止。

动态路由是自适应路由选择算法,是指路由器能够自动地建立自己的路由表,并且能够根据实际情况的变化适时地进行调整。

参考答案:(70)D

● The beauty of software is in its function,in its internal structure,and in the way in which it is created by a team.To a user,a program with just the right features presented through an intuitive and (71) interface is beautiful.To a software designer,an internal structure that is partitioned in a simple and intuitive manner,and that minimizes internal coupling is beautiful.To developers and managers,a motivated team of developers making significant progress every week,and producing defect-free code,is beautiful.There is beauty on all these levels.

Our world needs software--lots of software.Fifty years ago software was something that ran in a few big and expensive machines.Thirty years ago it was something that ran in most companies and industrial settings.Now there is software running in our cell phones,watches,appliances,automobiles,toys,and tools.And need for new and better software never (72).As our civilization grows and expands,as developing nations build their infrastructures,as developed nations strive to achieve ever greater efficiencies,the need for more and more Software (73) to increase.It would be a great shame if,in all that software,there was no beauty.

We know that software can be ugly.We know that it can be hard to use,unreliable,and carelessly structured.We know that there are software systems whose tangled and careless internal structures make them expensive and difficult to change.We know that there are software systems that present their features through an awkward and cumbersome interface.We know that there are software systems that crash and misbehave.These are (74) systems.Unfortunately,as a profession,software developers tend to create more ugly systems than beautiful ones.

There is a secret that the best software developers know.Beauty is cheaper than ugliness.Beauty is faster than ugliness.A beautiful software system can be built and maintained in less time,and for less money,than an ugly one.Novice software developers don't understand this.They think that they have to do everything fast and quick.They think that beauty is (75).No!By doing things fast and quick,they make messes that make the software stiff,and hard to understand,Beautiful systems are flexible and easy to understand.Building them and maintaining them is a joy.It is ugliness that is impractical.Ugliness will slow you down and make your software expensive and brittle.Beautiful systems cost the least build and maintain,and are delivered soonest.

(71) A.Simple B.Hard C.Complex D.duplicated

(72) A.happens B.exists C.stops D.starts

(73) A.starts B.continues C.appears D.stops

(74) A.practical B.useful C.beautiful D.ugly

(75) A.impractical B.perfect C.time-wasting D.practical

试题分析

翻译:

软件的优点在于其功能、内部结构,以及由团队创建的方式。对于用户来说,通过直观和(71)界面呈现的正确功能的程序是出色的软件。对于软件设计师来说,分割的内部结构是一种简单而直观的方式,最小化内部耦合是美观的。对于开发人员和经理来说,一个积极的开发团队每周都取得重大进展,并且生产无缺陷的代码是件美好的事情。

我们的世界需要大量软件。五十年前,软件是在大多数公司和工业环境中运行的。现在软件存在于我们的手机、手表、电器、汽车、玩具和工具中。并且对新的和更好的软件的需求永远不会(72)。随着我们文明的发展和壮大,随着发展中国家建设基础设施,发达国家努力实现更高的效率,越来越多的软件需求(73)增长。如果在所有的软件中没有美存在的话,这将是一个很大的耻辱。

我们知道软件可能很难使用,有不可靠,粗心大意的结构。我们知道这些结构使得它们变得昂贵和难以改变。我们知道有一些软件系统通过尴尬和繁琐的界面来呈现其功能。我们知道有软件系统崩溃和捣乱行为。这些都是(74)系统。不幸的是,作为专业人士,软件开发人员开发出难用的系统多过开发好用的系统。

这是优秀的软件开发者知道的秘密:好用的软件比难用的更便宜、更快。一个好用的软件系统相对于一个难用的系统来说,建立和维护要花的时间与金钱会少得多。很多新手软件开发人员不明白这一点。他们认为做每一个事情必须快速,更快速。他们认为软件之美是(75)。不!快速开发使软件变得僵硬,难以理解;而好用的系统灵活易懂,使得开发和维护工作成为一种快乐。难用的软件不切实际,会减慢速度,会使软件昂贵而脆弱。美观的系统成本最低,建立和维护成本最低,交货时间也最短。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载