程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2021年05月软件设计师真题透析

发布于2023-06-04 19:46     阅读(781)     评论(0)     点赞(1)     收藏(4)


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

1. 在 CPU 中,用( )给出将要执行的下一条指令在内存中的地址。

A.程序计数器 B.指令寄存器 C.主存地址寄存器 D.状态条件寄存器

答案:A,

A选项程序计数器 PC:存储下一条要执行指令的地址。

B选项指令寄存器 IR:存储即将执行的指令。

C选项主存地址寄存器 MAR:用来保存当前CPU 所访问的内存单元的地址。

D选项状态条件寄存器 PSW:存状态标志与控制标志

2. 以下关于 RISC 和 CISC 计算机的叙述中,正确的是( )。

A.RISC 不采用流水线技术, CISC 采用流水线技术

B.RISC 使用复杂的指令, CISC 使用简单的指令

C.RISC 采用很少的通用寄存器, CISC 采用很多的通用寄存器

D.RISC 采用组合逻辑控制, CISC 普遍采用微程序控制器

答案:D,

A 选项:RISC适合流水线,CISC不适合。

B 选项:RISC是精简指令集系统计算机简称,使用简单的指令。CISC是复杂指令集系统计算机简称,使用复杂的指令。

C 选项:RISC多寄存器寻址,所以会在实现过程中增加通用寄存器,CISC不需要采用很多通用寄存器。

D 选项:RISC采用硬布线逻辑(即组合逻辑控制器)实现,CISC采用微码(即微程序)实现。D 选项的说法是正确的。

3. 采用 DMA 方式传送数据时,每传送一个数据都需要占用一个( )。

A.指令周期 B.总线周期 C.存储周期 D.机器周期

答案:C,DMA是直接内存存取,传送数据的时间只与内存相关,与 CPU的时间无关。

4. 以下关于闪存(Flash Memory)的叙述中,错误的是()。

A 掉电后信息不会丢失,属于非易失性存储器

B.以块为单位进行删除操作

C.采用随机访问方式,常用来代替主存

D.在嵌入式系统中可以用 Flash 来代替 ROM 存储器

答案:C

闪存(FlashMemory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位,区块大小一般为256KB 到 20MB。

闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM 的更新速度快。

由于其断电时仍能保存数据,闪存通常被用来保存设置信息。

闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代 RAM,也不能替换主存,因此C 选项错误。但是在嵌入式中,可以用闪存代替 ROM存储器。

5. 若磁盘的转速提高一倍,则( )。

A 平均存取时间减半 B.平均寻道时间加倍 C.旋转等待时间减半 D.数据传输速率加倍

答案:C,磁盘的平均存取时间、数据传输速率与磁盘转速以及移臂调度时间都相关,所以无法直接通过磁盘的转速提高一倍就直接提高效率。磁盘的平均寻道时间与磁盘转速无关,至于移臂调度有关,也无法因此加倍。只有C 选项中,磁盘的旋转延迟时间至于磁盘转速相关,转速提高一倍,其时间会减半。

6. 异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。以下关于中断和异常的叙述中,正确的是( )。

A. ”DMA 传送结束”、“除运算时除数为 0”都为中断

B."DMA 传送结束"为中断, “除运算时除数为 0 为异常

C.”DMA 传送结束”为异常、“除运算时除数为 0"为中断

D.”DMA 传送结束”、“除运算时除数为 0"都为异常

答案:B,DMA处理过程由 DMAC 负责,传送后会给CPU 发送通知,此时属于处理器外部事件,因此属于中断。

异常指当前运行指令引起的中断事件。包括错误情况引起的故障,如除零算数错误,缺页异常;也包括不可恢复的致命错误导致的终止,通常是一些硬件错误。

7. 下列协议中,属于安全远程登录协议的是( )。

A.TLS B.TCP C.SSH D.TFTP

答案:C,

A选项:TLS 安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性。

B选项:TCP 是可靠的传输层协议,与安全无关。

C选项:SSH 为Secure Shell 的缩写,由IETF 的网络工作小组(NetworkWorking Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远

程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。本题选择 C选项。

D选项:TFTP(TrivialFile Transfer Protocol,简单文件传输协议)是 TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务

8. 下列攻击类型中,( )是以被攻击对象不能继续提供服务为首要目标.

A.跨站脚本 B.拒绝服务 C.信息篡改 D.口令猜测

答案:B,

A选项:跨站脚本(cross-sitescripting,XSS),一种安全攻击,其中,攻击者在看上去来源可靠的链接中恶意嵌入译码。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。不影响服务的提供。

B选项:拒绝服务,对信息或其它资源的合法访问被无条件地阻止,会让服务器拒绝提供服务。本题选择B选项。

C选项:信息篡改,指主动攻击者将窃听到的信息进行修改(如删除和/或替代部分或者全部信息)之后再将信息传送给原本的接受者。与提供服务无关。

D 选项:口令猜测,攻击者攻击目标时常常把破译用户的口令作为攻击的开始。只要攻击者能猜测或者确定用户的口令,他就能获得机器或者网络的访问权,并能访问到用户能访问到的任何资源。与提供服务无关

9. 下列算法中属于非对称加密算法的是( )。

A.DES B.RSA C.AEC D.MD5

答案:B,典型的对称加密算法:DES,3DES,AEC等。典型的非对称加密算法:RSA,ECC等。本题选 B 选项。典型的摘要算法:SHA,MD5等。

10. SQL 是一种数据库结构化查询语言,SQL 注入攻击的首要目标是( )。

A.破坏 Web 服务

B.窃取用户口令等机密信息

C.攻击用户浏览器,以获得访问权限

D.获得数据库的权限

答案:D,SQL注入攻击,就是通过把 SQL命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL 命令。其首要目的是获取数据库访问权限。

11. 通常使用( )为 IP 数据报文进行加密。

A.IPSec B.PP2P C.HTTPS D.TLS

答案:A,

A选项:IPSec工作于网络层,为 IP数据报文进行加密。B选项:PP2P 工作于数据链路层,用于链路加密。C选项:HTTPS 是HTTP 与 SSL的结合体,为传输层以上层次数据加密。D选项:TLS 安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性。

12. 根据《计算机软件保护条例》的规定,对软件著作权的保护不包括( )。

A.目标程序 B.软件文档 C.源程序 D.开发软所有的操作方法

答案:D,《计算机软件保护条例》保护的是软件程序以及文档,其中软件程序包括源程序和目标程序。开发软件所用的思想、处理过程、操作方法或者数学概念不受软件著作权保护。本题选择,D选项。

13. 甲、乙两互联网公司于2020年7月7日就各自开发的库存管理软件分别申请“宏达”和“鸿达”商标注册,两个库存管理软件相似,甲第一次使用时间为 2019 年 7 月,乙第一次使用时间为 2019 年 5 月,此情景下,( )能获准注册。

A.“宏达” B. “宏达和“鸿达”均 C.由甲、乙协商哪个 D.“鸿达”

答案:D,本题考查的是商标权确定知识产权人的过程。

根据我国《中华人民共和国商标法》第三十一条两个或者两个以上的商标注册申请人,在同一种商品或者类似商品上,以相同或者近似的商标申请注册的,初步审定并公告申请在先的商标;同一天申请的,初步审定并公告使用在先的商标,驳回其他人的申请,不予公告。

即首先第一原则是,谁先申请谁获得,本题中甲乙双方于2020年 7 月7 日申请注册,属于同时申请。

其次,同时申请时,谁先使用谁获得,根据题干甲于2019 年 7月使用,乙于 2019年5 月使用,乙先使用,因此最终成功注册是乙的“鸿达”商标。本题选择D 选项。

如果无法区分谁先使用,则协商归属,协商不成可以抽签决定。

14. A 经销商擅自复制并销售 B 公司开发的 OA 软件光盘已构成侵权,C 企业在未知情形下从 A 处购入 100 张并已安装使用,在C企业知道了所使用的软件为侵权复制的情形下,以下说法正确的是( )

A.C企业的使用行为侵权,须承担赔偿责任

B.C企业的使用行为侵权,支付合理费用后可以继续使用这100张软件光盘

C.C企业的使用行为不侵权,可以继续使用这 100 张软件光盘

D.C企业的使用行为不侵权,不需承担任何法律责任

答案:B,根据《计算机软件保护条例》第三十条软件的复制品持有人不知道也没有合理理由应当知道该软件是侵权复制品的,不承担赔偿责任;但是,应当停止使用、销毁该侵权复制品。如果停止使用并销毁该侵权复制品将给复制品使用人造成重大损失的,复制品使用人可以在向软件著作权人支付合理费用后继续使用。

本题中C 企业已安装使用,“如果停止使用并销毁该侵权复制品将给复制品使用人造成重大损失的,复制品使用人可以在向软件著作权人支付合理费用后继续使用。”,该行为侵权,支付费用后可继续使用。本题选择B 选项。

15. 下列关于结构化分析方法的数据字典中加工逻辑的叙述中,不正确的是( )。

A.对每一个基本加工,应该有一个加工逻辑

B.加工逻辑描述输入数据流变换位输出数据的加工规则

C.加工逻辑必须描述实现加工的数据结构和算法

D.结构化语言,判定树和判定表可以用来表示加工逻辑

答案:C,数据字典包含4 类条目:数据流、数据项、数据存储和基本加工。

其中基本加工条目是用来说明DFD 中基本加工的处理逻辑的,由于下层的基本加工是由上层加工分解而来,只要有了基本加工的说明就可理解其他加工。对每一个基本加工,都应该有一个加工逻辑来说明。A选项描述正确。

加工描述了输入数据流到输出数据流之间的编号,也就是输入数据流经过什么处理后变成了输出数据流。加工逻辑对其进行说明,也就是描述了改过程的加工规则,B选项描述正确。

加工逻辑是位于需求分析阶段,此时具体的数据结构和算法并没有进行设计,C选项描述错误。本题选择C项。

常用的加工逻辑描述方法有结构化语言、判定表和判定树三种,D选项描述正确。

16.在软件设计阶段进行模块划分时,一个模块的( )。

A.控制范围应该在其作用范围之内

B.作用范围应该在其控制范围之内

C.作用范围与控制范围互不包含

D.作用范围与控制范围不受任何限制

答案:B,本题是对模块设计原则的考查。

模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。模块作用域:指受该模块内一个判定所影响的所有模块的集合。模块的作用域应该在控制域范围之内,本题选择B 选项。

17~18.下面是一个软件项目活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的权重表示活动的持续时间(天),则关键路径长度为(17 题),在该活动图中,活动(18 题)晚 16 天开始不会影响上班。

17. A.20 B.25 C.27 D.48

18. A.AC B.BE C.FI D.HJ

答案:DB,本题是对进度网络图分析的考查。将各个活动的最早开始和完成时间、最晚开始和完成时间、持续时间和总时差分别进行标注,结果如下图:

其中最长路径为 A-D-F-H-J,即为关键路径,其时间为完成整个项目的最短时间,也就是项目工期,结果为 48 天,选择 D 选项。第二空关于总时差的分析:A 选项 AC 的总时差是 8 天,超过 8 天延误会推迟工期;B 选项 BE 的总时差是 21 天,延误 16 天并没有超过 21 天,不会影响最终工期,本题选择 B 选项。C 选项 FI 的总时差为 14 天,超过 14 天延误会推迟工期;D 选项 HJ 是关键路径活动,总时差为 0,不能有任何延误。

19. 下列关于风险的叙述中,不正确的是( )。

A.风险是可能发生的事件

B.如果能预测到风险,则可以避免其发生

C.风险是可能会带来损失的事件

D.对于风险进行干预,以期减少损失

答案:B,风险是可能发生的事件,并且可能会带来损失,预测到风险后,可以进行干预以期减少损失,但是无法避免。B选项的描述是错误的。

20. 算数表达式 a*(b+c/d)-e 的后缀式为( )。

A.abcd/+*e-

B.abcde*+/-

C.a*b+c/d-e

D.ab*cd/+e

答案:A,其后序遍历即为后缀表达式为:abcd/+*e-,本题选择 A 选项。

21. 以编译方式翻译 C/C++源程序的过程中,类型检查在( )阶段处理

A.词法分析 B.语义分析 C.语法分析 D.目标代码生成

答案:B,词法分析阶段处理的错误:非法字符、单词拼写错误等。

语义分析:检查源程序是否包含语义错误,主要工作是进行类型分析和检查。

语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。

静态语义分析阶段(即语义分析阶段)处理的错误:运算符与运算对象类型不合法等错误。本题选择语义错误。目标代码生成(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。

22.Java 语言符合的特征有( )和自动的垃圾回收处理

①采用即时编译

②采用静态优化编译

③对象在堆空间分配

④对象在栈空间分配

A. ①③ B. ①④ C. ②③ D. ②④

答案:A,JAVA是解释型语言,可以生成中间代码后再边解释为目标代码边执行,也就是即时编译,可以根据运行机器优化代码,采用的是动态优化编译。所以①的说法正确,②的说法错误。

Java程序最初都是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“热点代码 ”(Hot Spot Code),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成本地机器码,并以各种手段尽可能地进行代码优化,这个过程就叫即时编译,运行时完成这个任务的后端编译器被称为即时编译器。

JAVA的栈空间只存放基本类型、引用类型变量和方法,而堆中存储实例对象。③的说法正确,④的说法错误。

本题综合选择A 选项。

23. 云计算有多种部署模型(Deployment Models)。若云的基础设施是为某个客户单独使用而构建的,那么该部署模型属于( )。

A.公有云 B.私有云 C.社区云 D.混合云

答案:B,

A 选项公有云通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过Internet 使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。

B 选项私有云(Private Clouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。本题针对某个客户单独使用,属于 B 选项私有云。

C 选项社区云一般指社群云。社群云(Community cloud),也称社区云,是由几个组织共享的云端基础设施,它们支持特定的社群,有共同的关切事项,例如使命任务、安全需求、策略与法规遵循考量等。

D 选项混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。我们已经知道私有云主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的。

24. 若计算机系统的字长为 128 位,磁盘的容量为 2048GB,物理块的大小为 8MB,假设文件管理系统采用位示图(bitmap)法记录该计算机系统磁盘的使用情况,那么位示图的大小需要( )个字

A.1024 B.2048 C.4096 D.8192

答案:B,磁盘容量2048G,物理块大小 8MB,则磁盘共有2048GB/8MB=256*2^10 个物理块。采用位示图记录磁盘使用情况,每个磁盘块占据1bit,共需要 256*2^10bit进行记录。每128 个 bit为 1 个字,则共需要256*2^10/128 个字,即2048 个字

25. 进程P有5个页面,页号为0-4,页面变换表及状态位、访问位和修改位的含义如下图所示,若系统给进程P分配了3个存储块,当访问的页面3不在内存时,应该淘汰表中页号为( )的页面

答案:A,被淘汰的页面首先必须在内存,也就是在0、2、4页面中进行选择。优先淘汰访问位为0 的页面,此时 0、2、4页面访问位都为 1,无法判断。进一步淘汰的是修改位为0 的页面,此时符合要求淘汰的是 0号页面,选择 A选项。

26~28.进程P1、P2、P3、P4、P5和P6的前驱图如下所示:若用PV操作控制进程P1、P2、P3、P4、P5和P6 开发执行的过程,需要设置6个信号量S1、S2、S3、S4、S5和S6,且信号量S1~S6的和值都等于零。下面的进程执行图中a和b处分别填写(26 题),c和d处应分别填写(27题),e和f处应分别填写(28题)

答案:DBC,本题是常规的前趋图与PV 操作结合考查题型。对于前趋图,箭线表示前趋和后继关系,前趋进程完成需要通知后继进程(用V()操作通知),后继进程开始前需要检查前趋进程是否完成(用P()操作检查)。也就是说,在前趋图中,每一个箭头流出指向后继进程,都会有一个V()操作通知后继,每一个箭头的流入都是始于前趋进程,需要检查前趋进程是否完成,用P()操作进程检查。标识如下:

根据缺失的填空位置:P2有 1 个前趋进程,执行前a 位置有 1个 P()操作,P2有 2个后继进程,执行后b 位置有 2个 V()操作,第一空选择D 选项。P3有 1 个后继进程,

执行后c 位置有 1个 V()操作,P4有 1 个前趋进程,执行前d 位置有 1个 P()操作,第二空选择B 选项。P5有 2 个前趋进程,执行前e 位置有 2个 P()操作,P5有 1 个后继进程,执行后f 位置有 1个 V()操作,第三空选择C 选项。

29~30.关于螺旋模型,下列陈述中不正确的是(29题)。

A.将风险分析加入到瀑布模型中

B.将开发过程划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符

C.适合于大规模、复杂且具有高风险的项目

D.可以快速的提供一个初始版本让用户测试

29答案:D,第一空选项中,可以快速提供一个初始版本给用户的是增量模型而不是瀑布模型。D选项描述错误。其他描述都是正确的。

29~30.关于螺旋模型,下列陈述中不正确的是(30 题)。

A.支持用户需求的动态变化

B.要求开发人员具有风险分析能力

C.基于该模型进行软件开发,开发成本低

D.过多的迭代次数可能会增加开发成本,进而延迟提交时间

30答案:C,第二空选项中,在螺旋模型中过多的迭代次数会增加开发成本,C选项开发成本低的描述是错误的。其他描述都是正确的。

31. 模块 A 通过非正常入口转入模块 B 内部,则这两个模块之间是( )耦合

A.数据 B.公共 C.外部 D.内容

答案:D,数据耦合是通过参数表传递简单信息。

公共耦合是多个模块访问同一个公共数据环境。

外部耦合是一组模块访问同一个全局简单变量而没有通过参数表传递。

内容耦合是一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。本题描述的是内容耦合

32. 软件详细设计阶段的主要任务不包括( )。

A.数据结构设计

B.算法设计

C.模块之间的接口设计

D.数据库的物理设计

答案:C,软件详细设计阶段的主要任务包括:对模块内的数据结构进行设计;对数据库进行物理设计;对每个模块进行详细的算法设计;代码设计、输入/输出设计、用户界面设计等其他设计。

软件概要设计阶段的主要任务包括

(1)软件系统总体结构设计,将系统划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量

(2)数据结构及数据库设计。

本题A、B、D属于详细设计阶段的任务,C选项属于概要设计阶段的任务,本题选择 C选项。

33. 以下关于文档的叙述中,不正确的是( )。

A.文档也是软件产品的一部分,没有文档的软件就不能称之为软件

B.文档只对软件维护活动有用,对开发活动意义不大

C.软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量

D.高质量文档对于发挥软件产品的效益有着重要的意义

答案:B,文档是开发中的重要工具,对开发有较大意义,B选项的说法是错误的。其他A、C、D的说法都是正确的。

34. 用白盒测试技术对下面流程图进行测试,至少采用( )个测试用例才可以实现路径覆盖。

A.3 B.4 C.6 D.8

答案:A,图示中不同的路径为:①②;①③;①③④。需要满足路径覆盖,则测试用例至少需要3组,以(x,y;result)格式记录,则可以设计为:(0,3;result)--①②;(0,1;result)--①③;

(0,0;result)--①③④本题选择A 选项

35. 软件可维护性是一个系统在特定的时间间隔内可以正常进行维护活动的概率。用MTTF和 MTTR 分别表示平均无故障时间和平均故障修复时间,则软件可维护性计算公式为( )。

A.MTTF/(1+MTTF)

B.1/(1+MTTF)

C.MTTR/(1+MTTR)

D.1/(1+MTTR)

答案:D,在软件外部,可以用MTTR 来度量软件的可维护性,它指出处理一个有错误的软件需要花费的平均时间。如果用M 表示可维护性指标,那么 M=1/(1+MTTR)。本题选择D选项。A选项一般用来表示可靠性或可用性指标。

36. 某搜索引擎在交付后,开发人员修改了其中的索引方法,使得用户可以更快地得到搜索结果。这种修改属于( )维护.

A.正确性 B.适应性 C.完善性 D.预防性

答案:C,在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下四种:

(1)改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护

(2)适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。

(3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。更快地得到搜索结果,即提升了搜索引擎的性能,扩充功能或提升性能是完善性维护的工作,本题选择C 选项。

(4)预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护可定义为“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。

37. 面向对象分析时,执行的活动顺序通常是()。

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

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

C.认定对象、描述对象间的相互作用、确定对象的操作、识别包

D.识别类及对象、识别关系、定义属性、确定对象的操作

答案:A,

38. 采用面向对象方法进行系统设计时,不应该强迫客户依赖于他们不用的方法,接口属于客户,不属于它所在的类层次结构。即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这属于( )。

A.单一责任 B.开放一封闭 C.接口分离 D.里氏替换

答案:C,单一职责原则:设计目的单一的类。

开放-封闭原则:对扩展开放,对修改封闭。

里氏替换原则:子类可以替换父类。

依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。

接口隔离原则:使用多个专门的接口比使用单一的总接口要好。不强迫客户依赖于他们不用的方法,即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。

本题题干看起来类似于依赖倒置原则,但依赖倒置不涉及强迫客户依赖于他们不用的方法。本题描述的应该是接口隔离原则。本题选择C 选项,见P357。

39~40.假设Bird和Cat是Animal的子类,Parrot是Bird的子类,bird是Bird的一个对象,cat是Cat的一个对象,parrot是Parrot的一个对象。以下叙述中,不正确的是(39 题)。假设Animal类中定义接口move(), Bird、Cat和Parrot分别实现自己的move(),调用 move()时,不同对象收到同一消息可以产生各自不同的结果,这一现象称为(40 题)。

答案:CD,cat、bird、parrot都可看作是 Animal 的对象,parrot可以看作是 Bird 的对象。而bird 可以看作是 Parrot的对象也就是鸟是鹦鹉类的对象,显然不正确。第一空选择C选项。不同对象接收到相同消息给出不同结果,这是多态的描述,第二空选择D 选项。

封装:隐藏对象的属性和实现细节,仅对外公开接口(信息隐藏技术)。

继承与泛化:复用机制(单重继承和多重继承),子类可以继承父类的一些属性和方法。

消息和消息通信:对象之间进行通信的一种构造叫作消息。消息是异步通信的(消息传递:接收到信息的对象经过解释,然后予以响应)。

41~43.当UML状态图用于对系统、类或用例的动态方面建模时,通常是对(41题)建模。以下UML状态图中,假设活动的状态是A,事件b=0发生并且a>5,发生条件是c状态到d状态的转换条件的是(42题),D变为活动的状态,有关状态图的叙述中,不正确的是(43题)。

41.A 系统的词汇 B.反应型对象 C.活动流程 D.对象快照

42.

A.一旦状态A的exit动作完成,或如果当前执行do动作,则终止执行

B.一旦状态A和B的所有动作完成

C.一旦正在进行的状态A完成

D.一旦状态B的exit动作完成

43.

A.动作可以在状态内执行,也可以在状态转换时执行

B.当触发转换的事件发生并且转换没有指定的监护条件时,对象将离开当前状态,并且其do动作终止

C.when (b=5)称为时间事件

D.状态由事件触发

答案:BBD,

当对系统、类或用例的动态方面建模时,通常是对反应型对象建模,第一空选择B选项。

状态图通常包含简单状态和组合状态、转换(事件和动作)。状态是指对象的生命周期中某个条件或者某个状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。

嵌套在另外一个状态中的状态称为子状态(本题中的A、B为子状态),含有子状态的状态称为组合状态(也叫作超状态,C是组合状态)。状态 C完成才会在 when b=5[a>5]时,让D 进入激活状态,当前状态为 A,当A 完成时进入状态 B,状态B 完成后才完成组合状态C。因此第二空应该选择 B选项,需要状态 A和 B 都完成。

转换是两个状态之间的一种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警戒(监护)条件满足时进入目标状态。动作是一个可执行的原子操作,是不可中断的,其执行时间可以忽略不计。转换由事件触发,而不是状态由事件触发,第三空D 选项描述错误。

44~47.股票交易中,股票代理(Broker)根据客户发出的股票操作指示进行股票的买卖操作,设计如下所示类图。该设计采用(44 题)模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其中,(45 题)声明执行操作的接口。该模式属于(46 题)模式,该模式适用于(47 题)

44. A.命令(Command) B.观察者(Observer) C.状态(State) D.中介者(Mediator)

45.

A.Operation B.sellOperation/BuyOperation/ViewOperation C.Broker D.Stock

46. A.结构类型 B.结构型对象 C.创建类型 D.行为型对象

47.

A.一个对象必须通知其他对象,而它又不能假定其他对象是谁

B.抽象出特执行的动作以参数化某对象

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

D.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象

答案:44.A、45.A、46.D、47.B

根据题干情景描述“将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作”,此时使用的是命令模式。第一空选择 A 选项。其标准类图和基本情况如下

其中作为声明接口的应该是最高层次,根据图示应该为 Operation,第二空选择 A 选项。

命令模式属于行为型对象模式,第三空选择 D 选项。命令模式适用于:(1)抽象出待执行的动作以参数化某对象。(2)在不同的时刻指定、排列和执行请求。(3)支持取消操作。(4)支持修改日志。(5)用构建在原语操作上的高层操作构造一个系统。第四空选择 B选项。A 选项描述的是观察者模式,C 选项描述的是状态模式,D 选项描述的是中介者模式。

48~49.设有描述简单算术表达的上下文无关文法如下,其中id表示单字母。

E→E+T|T

T→F*T|F

F→id

与使用该文法描述的表达式a+b*c*d相符的语法树为(48 题),

48答案A:

49下图所示有限自动机(DFA)是(49 题)。

A.确定的有限自动机,它能识别以 bab 结尾的

B.确定的有限自动机,他不能识别以 bab 结尾的

C.非确定的有限自动机,他能识别以 bab 结尾的

D.非确定的有限自动机,他不能识别以 bab 结尾的

答案:D,根据有限自动机判断,从初始状态开始,接收字符a 可能会保持原状态不变,也可能会转入下一个状态,是不确定的,所以不确定的有限自动机。其次改自动机识别倒数第3 个字符只有 a,所以无法识别bab 结尾的字符串,第二空选择D 选项。

50. 函数 foo、hoo 的含义如下所示,函数调用 hoo(a,x)的两个参数分别采用引用调用(call

by reference)和值调用(call by value)方式传递,则函数调用foo(5)的输出结果为( )。

A.2, 5 B.2, 15 C.13, 5 D.13, 15

答案:C,根据题干给出的信息,foo(5),在该函数中,初始情况x=5,a=2。调用hoo(a,x)函数,此时a=2 传给 hoo函数中的 x,并且由于是引用方式,此时x 在hoo函数内的修改会影响原 a的值(注意区别,hoo函数的 x 与foo 函数的 x是不用的局部变量)。同时x=5 传给 hoo函数中的 y,并且是值调用方式,此时y 在 hoo函数内的修改是不会影响原x 的值。

接着分析hoo()函数,x的初始值为 2,y初始值为 5。执行y=y+10=15,执行x=y-x=15-2=13,此时x 的值会传回原 foo函数的 a,即a=x=13。

返回foo 函数进行分析,输出的 a和 x,取值分别为修改后的13 和原数值 5。本题选择C 选项。

51. 如下图如下 E-R 图中,两个实体 R1、R2 之间有一个联系 E,当 E 的类型为( )时必须将 E 转换成—个独立的关系模式?

A.1 : 1 B.1 : * B.C.* : 1 D.* : *

答案:D,本题考查的是 E-R 转换为关系模式的转换规则。其中 1:1 和 1:*类型的联系可以归并到实体中,而 *:*联系必须单独转换为 1 个独立的关系模式。本题选择 D 选项

52~53.给定关系 R (U,F),其中 U={A,B,C,D,E,H},F={A→B,B→DH,A→H,C→E}。关系有(52 题),F 中(53 题)。

52.A. 一个候选码 A B.2 个候选码 A、B

C.一个候选码 AC D.两个候选码 A、C

53.

A 不存在传递依赖,但存在冗余函数依赖

B.既不存在传递依赖,也不存在冗余函数依赖

C.存在传递依赖 A-D 和 A-H,但不存在冗余函数依赖

D.存在传递依赖 A-D 和 A-H,,并且还存在冗余函数依赖

答案:52.C、53.D

第一空关于候选键分析,其中A 和 C是入度为 0 的属性,所以候选键集合必须包含AC 组合键,本题选择 C选项。

第二空,本题A→B,B→DH,存在传递函数依赖A→DH,此时根据 armstrong公理,可以分解得到A→D和A→H,此时F中A→H是冗余函数依赖。第二空选择 D选项

54~56.某销售公司员工关系 E(工号、姓名、部门名、电话、住址),商品关系 C(商品号、商品名、库存数)和销售关系 EC(工号、商品号、销售数、销售日期)。查询“销售部 1”在 2020 年11 月 11 日销售“HUWEI Mate40”商品的员工工号、姓名、部门名及其销售的商品名,销售数的关系代数表达式为π1,2,3,7,8( ( 54 题) ⋈ ( ( 55 题) ⋈ (56 题 ) ) )

答案:54.C、55.B、56.C,本题考查的是关系代数相关知识内容。本题看起来逻辑非常复杂,涉及到了3 个关系表的联合使用,但结合选项来看,可以快速找到正确答案。

首先对于第一空,选择的对象一定是表E 或表 C,而此时C 是没有部门名的,因此筛选对象一定是表E,其次判断某个列的取值,需要用引号标注,排除错误格式 A,本题选择的应该是C 选项。

接着对于第二空,选择的对象一定是表C 或表 EC,而此时EC 是没有商品名的,因此筛选对象一定是表C,并且投影需要保留商品号和商品名,因此投影的列号是 1和 2,本题选择的应该是B 选项。

接着对于第三空,选择的对象一定是表C 或表 EC,而此时C 是没有销售日期的,因此筛选对象一定是表EC,并且位于 EC的第 4 列即列号为4,本题选择的应该是 C选项。

57. 设有栈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

答案:C,出队序列与入队序列是一致的,出队的序列是b,d,f, e, c, a,即入队序列也为b,d,f, e, c,a。此时出栈后即入队,即出栈顺序也为 b,d,f,e, c, a,元素出栈时,栈内情况依次如下:

栈S 中元素最多时,从栈底到栈顶的元素依次为 a、c、e、f。本题选择C 选项。

58.当二叉数中的结点数目确定时,( )的高度一定是最小的。

A.二叉排序数 B.完全二叉树 C.线索二叉树 D.最优二叉树

答案:D,二叉排序树也叫查找二叉树,它的左右各是一棵树,或者只有左子树或者只有右子树,在最坏情况下就是全部只有左子树或右子树。线索二叉树是指树的存储方式,与高度无法确定联系,C排除,完全二叉树是指只有左子树而没有右子树,在极端情况下就是全部都是左子树,D最优二叉树也叫哈夫曼树,在哈夫曼树中,根节点等于左右子树之和,意味着一个根节点必定是有左右两个子树,而二叉排序树或完全二叉树在最好情况是左右两个子树,但在最坏情况下是全部是左子树,所以选择D,可以设节点个数为7,分别构造二叉排序树,完全二叉树,最优二叉树,得到最优二叉树的高度为3,其他为7,如图示例。

59. ( )是对稀疏矩阵进行压缩存储的方式。

A.二维数组和双向链

B.三元组顺序表和十字链表

C.邻接矩阵和十字链表

D.索引顺序表和双向链表

答案:B,P126,存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0 了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。

稀疏矩阵的三元组表的顺序存储结构称为三元组顺序表,常用的三元组表的链式存储结构是十字链表。

60. 设用线性探查法解决冲突构造哈希表,且哈希函数为 H(key)=key%m,若在该哈希表中查找某关键字 e 是成功的且与多个关键字进行了比较,则( )。

A.这些关键字形成一个有序序列

B.这些关键字都不是 e 的同义词

C.这些关键字都是e的同义词

D.这些关键字的第一个可以不是 e 的同义词

答案:D,本题是对哈希查找表的考查。关键字e 的同义词,指的是其他关键字利用哈希函数进行求值时,得到的函数结果与e 是一致的,此时这些关键字就是 e的同义词。在哈希表查找关键字e 时成功且经过多次比较,可以知道经过计算 e的位置,此时该位置存放的并不是关键字e,并且这些关键字的顺序与原序列顺序相关,与大小无关,A选项有序序列说法不正确。由于本题采用的线性探测法解决哈希冲突,此时该位置对同义词开放,对非同义词也是开放的,也就是说,其他非同义关键字在使用线性探测法解决冲突时,也有可能直接占据该位置。所以对该位置进行比较的关键字,可能是e 的同义词,也可能不是e 的同义词,B和 C 的说法太过绝对,相比而言D 的说法更合适,本题选择D 选项。如下哈希表

61. 对于一个初始无序的关键字序列,在下面的排序方法中,()第一趟排序结束后,一定能将序列中的某个元素在最终有序序列中的位置确定下来。①直接插入排序②冒泡排序③简单选择排序④堆排序⑤快速排序⑥归并排序

A. ①②③⑥ B. ①②③⑤⑥

C. ②③④⑤ D. ③④⑤⑥

答案:C

选择类排序,每一轮会选择最值(最大值或最小值)与第一个位置进行交换,此时确定第一个元素位置。③④都满足要求。冒泡排序,每一轮会让最值相邻交换直至放到最终的位置,②满足要求。快速排序,每一轮会根据基准元素划分左右数组,此时基准元素的位置可以确定,因此⑤也满足要求。其他排序方式每一轮只能确定元素的当前位置,不能确定该元素的最终位置。本题选择 C 选项。

62. 对数组 A=(2,8,7,1,3,5,6,4)构建大顶堆为()(用数组表示)

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)

答案:C,满足大顶堆,此时序列记为:8、4、7、2、3、5、6、1。本题选择 C 选项,具体过程是

63.最大尺寸和问题描述为,在n个整数(包含负数)的数组A中,求之和最大的非空连续子数组,如数组 A= (-2,11,-4,13,-5,-2) ,其中子数组B=(11,-4, 13)具有最大子段和20(11-4+13=20) 。求解该问题时,可以将数组分为两个n/2个整数的子数组,最大子段和或者在前半段,或者在后半段,或者跨越中间元素,通过该方法继续划分问题,直至最后求出最大子段和,该算法的时间复杂度为( )。

A.O(nlgn) B.O(n^2) C.O(n^2lgn) D.O(n^3)

答案:A,本题考查数据结构与算法基础>分治法

本题中将数组不断进行二分,这个过程的时间复杂度为 O(log2n),划分后求解问题需要2个并列的 for 循环对划分后的数组进行求和比较,此时时间复杂度为 O(n),划分和求和过程应该是嵌套的,所以时间复杂度综合为 O(nlgn),本题应该选择 A 选项。

64~65.在求解某问题时,经过分析发现该问题具有最优子结构和重叠子问题性质。则适用(64 题)算法设计策略得到最优解。若了解问题的解空间,并以广度优先的方式搜索解空间,则采用的是(65 题)算法策略。.

64. A.分治 B.贪心 C.动态规则 D.回溯

65. A.动态规则 B.贪心 C.回溯 D.分支限界

答案:64.C、65.D

要想直接解决一个较大的问题,有时是相当困难的,分治法的设计思想是将一个难以解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。动态规划法与分治法类似,其基本思想也是将带求解问题分解为若干个子问题,先求解子问题再从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则相同的子问题会被求解多次,以至于最后解决原问题需要耗费指数级时间。此时用一个中间表记录重复子问题的解,可以避免大量的重复计算。这就是动态规划法的基本思路。动态规划法的应用场景一般会出现“最优子结构”的描述,并且针对重复子问题的计算通过记录-查表,可以提高效率。本题第一空描述的是 C 选项动态规划法。贪心法也经常用于解决最优化问题,与之不同的是,贪心法在解决问题的策略上是仅根据当前已有的信息做出选择,而且一旦做出选择,无论未来如何都不会改变。也就是只考虑当前最优,不考虑全局最优。一般不涉及划分和求解重复子问题。回溯法可以系统地搜索一个问题的所有解或任意解。它在包含问题的解空间树中,按照深度优先的策略的策略,从根结点出发搜索解空间树。分支限界法类似于回溯法,也是一种在问题的解空间树 T 上搜索问题解的算法,但在一般情况下,分支限界法与回溯法的求解目标不同。分支限界法的求解目标是找出满足约束条件的一个解即可。由于求解目标不同,其探索方式与回溯法也不同,分支限界法以广度优先或以最小耗费优先的方式搜索解空间树。本题第二空描述的是 D 选项分支限界法。

66. IPv6 地址长度为()bit。

A.16 B.32 C.64 D.128

答案:D,本题考查IPv6 的基本概念。IPv6地址由 128 位二进制表示。

67. 在地址栏输入 www.abc.com,浏览器默认的应用层协议是()。

A.HTTP B.DNS C.TCP D.FTP

答案:A,本题考查URL 基本知识。

在没有录入协议的情况下,URL默认是 HTTP 协议。本题选择A 选项。

68. 使用电子邮件客户端向服务器发送邮件的协议是( )。

A.SMTP B.POP3

C.IMAP4 D.MIME

答案:A:

A 选项 SMTP 邮件传输协议。本题选择 A 选项。

B 选项 POP3 邮件收取协议。

C 选项 IMAP4 协议与 POP3 协议一样也是规定个人计算机如何访问网上的邮件的服务器进行收发邮件的协议,但是 IMAP4协议同 POP3 协议相比更高级。

D 选项 MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。

69. 以下 Windows 系统中用于清除本地 DNS 缓存的命令是( )。

A.ipconfig/release B.ipconfig/flushdns

C.ipconfig/displaydns D.ipconfig/registerdns

答案:B

A 选项 ipconfig/release :释放 IP 地址租约。

B 选项 ipconfig/ flushdns:清楚本地 DNS 缓存,本题选择 B 选项。

C 选项 ipconfig/ displaydns:显示本地DNS 内容。

D 选项 ipconfig/ registerdns:DNS 客户端手工向服务器进行注册。

70. 在网络系统设计时,不可能使所有设计目标都能达到最优,下列措施中最为合理的是()。

A.尽量让最低建设成本目标达到最优

B.尽量让最短的故障时间达到最优

C.尽量让最大的安全性目标达到最优

D.尽量让优先级较高的目标达到最优

答案:D

译文:设计面向对象的软件很难,而设计(可复用的)面向对象软件就更难了。你必须找到合适的(相关的)对象,以适当的粒度将它们划分为类,定义类接口和继承,并在它们之间建立关键关系。你的设计应该针对眼前的问题,但(一般 )足以解决未来的问题和要求。你也要避免重新设计,或者至少最小化它。有经验的面向对象设计师会告诉你,一个可重用和灵活的设计是很难第一次就“正确”的。在设计完成之前,他们通常会尝试多次重复使用,每次都是这样。然而,有经验的面向对象设计师确实能做出好的设计。同时,新的设计师们对可用的选项感到不安(第三题选项不知所措的意思),他们倾向于使用以前使用的非面向对象技术。电影要花很长时间才能了解好的面向对象的设计。经验丰富的设计师显然知道一些缺乏经验的东西。它是什么?有一件事专家设计师知道不能做的就是从第一原理解决每一个问题。相反,他们选择了过去对他们有效的解决方案。当他们找到一个好的(解决方案)。他们一次又一次地使用它。这样的经验是他们成为专家的部分原因。因此,您将在许多面向对象系统中找到第五题个类和通信对象的模式。

71. A.runnable B.right C.reusable D.pertinent

72. A.clear B.general C.personalized D.customized

73. A.excited B.shocken C.surprised D.overwhelmed

74. A.tool B.component C.system D.solution

75. A.recurring B.right C.experienced D.past

答案:71.C、72.B、73.D、74.D、75.A

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

问题一、某停车场运营方为了降低运营成本,减员增效,提供良好的停车体验,欲开发无人值守停车系统,该系统的主要功能是:(15分)

1.信息维护。管理人员对车位(总数、空余车位数等)计费规则等基础信息进行设置。

2.会员注册。车主提供手机号、车牌号等信息进行注册,提交充值信息(等级、绑定并授权支付系统进行充值或交费的支付账号)不同级别和充值额度享受不同停车折扣点。

3.车牌识别。当车辆进入停车场时,若有(空余车位数大于1),自动识别车牌号后进行道闸控制,当车主开车离开停车场时,识别车牌号,计费成功后,请求道闸控制。

4.计费。更新车辆离场时间,根据计费规则计算出停车费用,若车主是会员,提示停车费用:若储存余额够本次停车费用,自动扣费,更新余额,若储值余额不足,自动使用授权缴费账号请求支付系统进行支付,获取支付状态。若非会员临时停车,提示停车费用,车主通过扫描费用信息中的支付码调用支付系统自助交费,获取支付状态。

5.道闸控制。根据道闸控制请求向道闸控制系统发送放行指令和接收道闸执行状态。若道闸执行状态为正常放行时,对入场车辆,将车牌号及其入场时间信息存入停车记录,修改空余车位数;对出场车辆更新停车状态,修改空余车位数。当因道闸重置系统出现问题(断网断电或是故障为抬杠等情况),而无法在规定的时间内接收到其返回的执行状态正常放行时,系统向管理人员发送异常告警信息,之后管理人员安排故障排查处理,确保车辆有序出入停车场。

现采用结构化方法对无人值守停车系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图

1. 使用说明中的词语,给出图 1-1 中的实体 E1-E5 的名称(5 分)

2. 使用说明中的词语,给出图 1-2 中的数据存储 D1-D3 的名称(3 分)

3. 根据说明和图中术语,补充图 1-2 中缺失的数据流及起点和终点(4 分)

4. 根据说明,采用结构化语言描述“道闸控制”的加工逻辑进行描述(3 分)

【问题1】答案

E1:车辆 E2:车主 E3:支付系统 E4:管理人员 E5:道闸控制系统

【问题2】答案

D1:停车记录表 D2:会员信息表 D3:基础信息表

【问题3】答案

【问题4】答案

IF(道闸执行状态正常)

THEN

IF(车辆入场)

THEN

将车牌号及其入场时间信息存入停车记录,修改空余车位数

ELSEIF(车辆出场)

更新停车状态,修改空余车位数

ENDIF

ELSEIF(未在规定的时间内接收到其返回的执行状态正常放行)

向管理人员发送异常告警信息,管理人员安排故障排查处理

ENDIF

问题二、15分

某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发个信息系统。请根据下述需求描述完成该系统的数据库设计。

[需求描述]

(1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话

(2)记录社区团购点的信息,包括团购点编号、地址和一个电话

(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点下订单,不直接与蔬菜供应商发生联系。

(4)记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期。

[概念模型设计]

根据需求阶段收集的信息,设计的实体联系图(不完整)如图1-1 所示。

[逻辑结构设计]

根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):

蔬菜供货商(供货商编号,地址,电话)

社区团购点(团购点编号,地址,电话)

供货(供货商编号,(a))

客户(姓名,客户电话)

订单(订单编号,团购点编号,订单内容,日期,(b))

【问题1】(6 分)

根据问题描述,补充图1-1的实体联系图。

【问题2】 (4 分)

补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。

【问题3】(5 分)

若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取”联系,对图1进行补充。“快递”关系模式包括快递编号、客户电话和日期。

[问题1答案]

[问题2答案]

(a):团购点编号。主键为:(供货商编号,团购点编号),外键为:供货商编号, 团购点编号。

(b):客户电话。 主键为:订单编号,外键为:团购点编号,客户电话。

[问题3答案]

问题三、15分

【说明】

某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务。该系统的主要功能描述如下:

(1)注册。患者扫描医院提供的二维码进行注册,注册过程中,患者需提供其病历号,系统根据病历号自动获取患者基本信息。

(2)登录。已注册的患者可以登录系统进行线上抓药,未册的患者系统拒绝其登陆

(3)确认处方。患者登录后,可以查看医生开具的所有处方。患者选择需要抓药的处方和数量(需要抓几副药),同时说明是否需要煎制。选择取药方式:自行到店取药或者送药上门,若选择送药上门,患者需要提供提供收货人姓名、联系方式和收货地址。系统自动计算本次抓药的费用,患者可以使用微信或支付宝等支付方式支付费用。支付成功之后,处方被发送给药师进行药品配制。

(4)处理处方。药师根据处方配置好药品,若患者要求煎制,药师对配置好的药品进行煎制。煎制完成,药师将对该处方设置已完成。若患者选择的是自行取药,取药后确认已取药。

(5)药品派送。处方完成后,对于选择送药上门的患者,系统将给快递人员发送药品的配置信息,等待快递人员来取药;并给患者发送收货验证码。

(6)送药上门。快递人员将配置好的药品送到患者指定的收货地址。患者收获时,向快递人员出示收货验证码,快递人员使用该验证码确认药品已送到。

【问题 1】 (7 分)

根据说明中的描述,给出图3-1中A1~A3所对应的参与者名称和U1~U4处所对应的用例名称。

【问题 2】 (5 分)

根据说明中的描述,给出图3-2中C1~C5所对应的类名

【问题 3】 (3 分)

简要解释用例之间的include、extend和generalize 关系的内涵。

【问题 1】 答案

A1:患者 A2:快递人员 A3:药师

U1:确认处方 U2:支付方式 U3:微信支付 U4:支付宝支付

【问题 2】 答案

C1:支付方式 C2:微信支付 C3: 支付宝支付 C4:处方 C5: 药品

【问题 3】 答案

include:是一种包含关系,是指两个以上用例有共同功能,可分解到单独用例,其中这个提取出来的公共用例称为抽象用例,形成包含依赖;执行基本用例时,每次都必须调用被包含的用例。

extend :是一种扩展关系,是指如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种事情,可以断定将这个用例分为一个主用例和一个或多个辅用例进行描述可能更加清晰。

generalize:是一种泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系

问题四、

凸多边形是指多边形的任意两点的连线均落在多边形的边界或内部。相邻的点连线落在多边形边界上,称为边;不相邻的点连线落在多边形内部,称为弦。假设任意两点连线上均有权重,凸多边形最优三角剖分问题定义为:求将凸多边形划分为不相交的三角形集合,且各三角形权重之和最小的剖分方案。每个三角形的权重为三条边权重之和。

假设N个点的凸多边形点编号为V1,V2,……,VN,若在VK处将原凸多边形划分为一个三角形V1VkVN,两个子多边形V1,V2,…,Vk和Vk,Vk+1,…VN,得到一个最优的剖分方案,则该最优剖分方案应该包含这两个子凸边形的最优剖分方案。

用m[i][j]表示Vi-1,Vi,…Vj构成的凸多边形的最优剖分方案的权重,S[i][j]记录剖分该凸多边形的k值。则

其中:W(Vi-1VkVj)=Wi-1,k+Wk,j+Wj,i-1为三角形Vi-1VkVj的权重, Wi-1,k、Wk,j、Wj,i-1分别为该三角形三条边的权重。求解凸多边形的最优剖分方案,即求解最小剖分的权重及对应的三角形集。

【问题 1】(8 分)

根据题干说明,填充 C 代码中的空(1)~(4)。

【问题 2】(7 分)

根据题干说明和 C 代码,该算法采用的设计策略为(5)。算法的时间复杂度为(6),空间复杂度为(7)(用O表示)

【问题 1】答案(8 分)

(1)r<=N

(2)j=i+r-1

(3)temp<m[i][j]

(4)S[i][j]+1,j

【问题 2】答案(7 分)

(5)动态规划法

(6)O(n3)

(7)O(n2)

试题解析:

本题考查的是凸多边形最优三角剖分动态规划设计过程。

本题算法难度较大,在没有理解算法过程的前提下,首先可以根据相关信息进行部分填空。

首先根据题干描述出现的将问题规模从k开始截断,此时其实就是“最优子结构”的说法,并且本题出现了递归式的应用,是典型的动态规划法的应用。

又根据题目中的代码,出现了三层嵌套for循环,此时代码的时间复杂度为O(n3)。

本题用到的辅助空间记录中间解有2个数组m[i][j]和S[i][j],都是二维数组,空间复杂度的量级为O(n2)。最后分析代码填空部分。

第(1)空,r表示的是子问题规模,规模划分已知从r=2开始,子问题最大应该能够取到N,因此本空填写r<=N。

第(2)空缺失的是j的初始化赋值,本空较难。代码计算前边界为i,链长为r的链的后边界取值,结果为i+r-1,即本题填写j=i+r-1。

第(3)空缺失判断条件,此时注释明确说明此处判断最小值,判断后,m[i][j]值进行修改并修改为temp,也就是意味着m[i][j]此时记录的不是最优解(最小值),需要进行修正改为最小,即填写temp<m[i][j](某一个数值比最小值还小,则修改最小值)

第(4)空缺失的是打印参数,结合代码上下文进行分析,上文打印 print_triangle(i,S[i][j]);即截断的前一部分编号,下面print_ triangle((4));打印的应该是截断的后一部分,即填写S[i][j]+1,j。

问题六、15分

答案:

(1)protected

(2)abstract boolean addMenuElement(MemuComponent element)

(3)abstract List<MenuComponent> getElement()

(4)ArrayList<MenuComponent> elementList

(5)mainMenu.addMenuElement(subMenu)

试题解析:

本题是典型的组合模式应用。 首先根据类图中 name 标注的为#(+表示 public,-表示private,#表示protected),第(1)空对name的修饰应该是 protected。 然后根据抽象类和实现类的对应关系,可以补充第(2)(3)空,这两处缺失的方法根据下文代码进行补充,注意方法名必须用abstract修饰,并且注意抽象方法的写法没有具体方法体。其中第(2)空填写 abstract boolean addMenuElement(MemuComponent element) , 第(3)空填写abstract ListgetElement()。第(4)空缺失了一个属性,此时根据下文的同名构造函数会发现,此处传参给了this.name以及 this.elementList,name可以根据父类继承使用,而elementList需要定义,因此此处缺失的参数是elementList,类型根据后面的赋值类型进行定义 ,即第(4)空填写 ArrayListelementList。第(5)空是对组合模式的应用拼装,根据下文可知打印需要调用mainMenu对象,而此时 该对象是独立的,需要与其他菜单进行拼装,下文中subMenu拼装了element,此处需要将subMenu拼装到mainMenu,即第(5)空填写 mainMenu.addMenuElement(subMenu)

天马行空,看我视频,欢迎跟我联系:QQ/VX:383738507



所属网站分类: 技术文章 > 博客

作者:天天在家

链接:http://www.javaheidong.com/blog/article/674076/0bfee5bb01da0420c1ad/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)