【软考】中级软件设计师 23年上半年 早上 综合知识 下午案例真题

全国计算机技术与软件专业技术资格(水平)考试中级软件设计师2023年上半年下午真题

早上综合知识

试题一

计算机中,系统总线用于( )连接。
A.接口和外设                                B.运算器、控制器和寄存器
C. CPU 、主存及外设部件            D. DMA控制器和中断控制器

试题一 答案: C

解析: 专业名词解析: −−−系统总线: 系统总线主要用于连接处理器(CPU)、主存(内存)和外设部件,负责将计算机的 各个部件连接在一起 CPU 主要组成部分: 运算器、控制器、寄存器、内部总线 −−−输入输出(IO)控制方式: 程序查询方式、中断驱动方式、直接存储器存取方式(DMA) −−−−常见接口: 包括 USB 、 HDMI 、以太网等 。

选项解析

A :系统总线可以用于连接计算机的接口和外设,但根据系统总线概念, A 选 项不够完善 。B :运算器、控制器、寄存器是−CPU−的主要组成部分,根据系统总线概念, B 选项不够完善。

D : DMA−控制器和中断控制器,是计算机系统中−CPU−管理外部设备的方式,不 是系统总线用于连接的对象。


试题二

在由高速缓存、主存和硬盘构成的三级存储体系中, CPU执行指令时需要读取数据,那么 DMA−控制器和−CPU−发出的数据地址是( )。
A.高速缓存地址  B.主存物理地址  C.硬盘的扇区地址  D.虚拟地址

试题二 答案: B

解析: 选项解析

A.−高速缓存(Cache)地址,是为了高速缓存的读取和写入而使用的地址,它是 在 CPU 和高速缓存之间进行数据传输时使用的。

B.−当 CPU 需要读取数据时, DMA 控制器和中断 CPU 发出的数据地址是主存的物理地址。 C.−硬盘的扇区地址,是用于访问硬盘上指定扇区的地址,并不直接与 CPU 进行 数据交互。 D.−虚拟地址,是指在操作系统中使用的地址,它需要通过地址映射和页表等机制转换为物理地址才能被 CPU 使用 。

扩展知识点: 在 CPU 与三级存储体系之间的关系,存在数据传输的层次结构。当 CPU 需要访 问数据时,它首先会检查高速缓存,如果数据在缓存中命中,则可以直接访问。如果数据不在高速缓存中, CPU 将在主存中查找。如果数据在主存中, CPU 会将数据加载到高速缓存中,并进行后续的操作。如果数据既不在高速缓 存中也不在主存中,则需要从硬盘中加载数据到主存,再由主存传输到高速缓 存,最后供 CPU 使用。这个层次结构的目标是尽可能减少 CPU 等待数据的时 间,提高整体的计算机性能。


试题三

设信息位是8位,用海明码来发现并纠正1位出错的情况,则校验位的位数至少为( )
A. 1   B. 2   C. 4   D. 8

试题三 答案: C

解析: 专业名词解析: −−−海明码:是一种利用奇偶性来检错和纠错的校验方法 −−−海明码的构成方法:是在数据位之间的确定位置插入−k−个校验位,通过扩 大码距来实现检错和纠错。对于数据位n的数据,加入 k 位的校验码,它应 满足:2^k1≥n + k

答案解析: 根据题目给出的信息,信息位=数据位=8 直接代入公式, 2^k1≥8 + k ,即− 根据不等式求解,可得k至少为4。


试题四

中断向量提供的是( )。
A.中断源的设备地址            B.中断服务程序的入口地址

C.传递数据的起始地址        D.主程序的断点地址

试题四 答案: B

解析: 专业名词解析:

−−−中断:是指系统发生某一事件后, CPU 暂停正在执行的程序转去执行处理该 事件的程序过程,处理中断事件的程序称为中断处理程序,产生中断信号的那 个部件称为中断源。

−−−中断向量表:中断向量表用来保存各个中断源的中断服务程序的入口地址, 中断请求发出后−CPU−可知处理哪个程序,因此中断向量提供中断服务程序的入 口地址。

−−总结和扩展知识点: 中断向量:提供中断服务程序的入口地址。 中断响应时间:从发出中断请求到开始进入中断处理程序。 保存现场:通常指保存硬件上下文,包括−CPU−寄存器中的数据以及其他与执行程序相关的硬件状态,为了正确返回原程序继续执行。

试题五

计算机系统中,定点数常采用补码表示,以下关于补码表示的叙述中,错误的是( )
A.补码零的表示是唯一的                         B.可以将减法运算转化为加法运算
C.符号位可以与数值位一起参加运算       D.与真值的对应关系简单且直观

试题五 答案: D

解析: 选项解析:

A.原码-0 和+0 所对应的补码是相同的。不妨推导一下,设定八位二进制表 示,最高位为符号位,-0 原码: 10000000 ,反码: 11111111 ,补码: 00000000 ;+0 原码、反码、补码都是一样的,即 00000000 ,因此 0 的补码唯 一。

B.补码表示简化了有符号数的运算和处理,并且转化减法运算为加法运算,使 得计算机系统的设计更加高效和简洁 。

C.符号位也参与运算,因为符号位正负就是表示整个数值的正负,符号位为 0表示正数,为 1 则表示负数 。

D.对于正数,补码与其真值是一致的,所以在这种情况下是比较简单和直观 的。但对于负数,补码的计算规则是将其真值按位取反(除符号位外),然后 再加1 ,因此既不直观也不简单。

试题六

设指令流水线将一条指令的执行分为取指、分析、执行三段,已知取指时间是2ns ,分析时间是2ns ,执行时间是1ns ,则执行完1000条指令所需的时间为( )
A. 1004ns   B. 1998ns   C. 2003ns   D. 2008ns

试题六 答案: C

解析: 专业名词解析: −−−流水线周期:一条指令执行中时间最长的一段,如本题为 2ns 答案解析: 当使用指令流水线时,执行 n 条指令所需的时间,根据理论公式∶ T−=−一条指令执行时间+(总指令条数        1)*流水线周期 

由题意,一条指令执行时间=2ns + 2ns + 1ns = 5ns ;总指令条数为1000 条;流水线周期为2ns 。那么执行完1000条指令所需要的时间=5ns + ( 1000–1) * 2ns = 2003ns。


试题七

在OSI参考模型中,负责对应用层消息进行压缩、加密功能的层次为( )
A.传输层         B.会话层            C.表示层          D.应用层

试题七 答案: C

解析: 专业名词解析: 答案解析: OSI 参考模型中,表示层是−OSI−模型中的第六层,其主要功能是处理数据的表 示和转换,同时,表示层还可以对应用层数据进行压缩、加密等工作,确保数 据的安全性,防止数据被未授权的用户窃取或篡改。


试题八

(第 1 空)在PKI体系中,由SSL / TSL实现HTTPS应用。浏览器和服务器之间用于加密HTTP消息的方式是( ),如果服务器证书被撤销那么所产生的后果是( )
A.对方公钥+公钥加密    B.本方公钥+公钥加密
C.会话密钥+公钥加密    D.会话密钥+对称加密

试题八 答案: D

解析: 在HTTPS通信中,首先是通过SSL/TLS协议建立安全连接。 在握手阶段,服务器会将其公钥发送给浏览器,浏览器使用服务器的公钥来加密会话密 钥,并发送给服务器。服务器使用私钥解密这个会话密钥,然后双方使用会话密钥进行后续的对称加密通信。因此,浏览器和服务器之间用于加密HTTP消息的方式是会话密钥+ 对称加密。


试题九

(第 2 空)在PKI体系中,由SSL / TSL实现HTTPS应用。浏览器和服务器之间用于加密HTTP消息的方式是( ),如果服务器证书被撤销那么所产生的后果是( )
A.服务器不能执行加解密    B.服务器不能执行签名
C.客户端无法再信任服务器     D.客户端无法发送加密信息给服务器

试题九 答案: C

解析: 证书撤销意味着相应的服务器证书的有效性被废止,由于证书 是用来验证服务器身份的重要依据,因此客户端无法再信任该服务器。浏览器会收到一个 被撤销的证书警告,提示服务器的证书不可信任,进而可能会阻止和该服务器建立安全连 接。因此,服务器证书被撤销的后果是客户端无法再信任服务器。


试题十

以下关于入侵防御系统功能的描述中,不正确的是( )
A.监测并分析用户和系统的网络活动   B.匹配特征库识别已知的网络攻击行为
C.联动入侵检测系统使其阻断网络攻击行为   D.检测僵尸网络,木马控制等僵尸主机
行为

试题十 答案: C

解析: 专业名词解析: −−−入侵防御系统:入侵防御系统是一种安全措施,用于监测和识别网络中的恶 意活动或攻击行为,旨在保护计算机网络免受未经授权的访问和恶意攻击。

选项解析:

A.−监测并分析用户和系统的网络活动:入侵防御系统会监视网络中的用户和系 统的网络活动,并进行分析,以便检测任何异常或可疑行为。

B.−匹配特征库识别已知的网络攻击行为:入侵防御系统使用特征库,其中包含 已知的网络攻击行为的模式和指纹。通过匹配这些特征,系统可以识别已知的 攻击并采取相应的措施。

C.−联动入侵检测系统使其阻断网络攻击行为:这个选项描述的是入侵防御系统 与入侵检测系统之间的协作。入侵检测系统用于检测网络中的攻击行为,而入 侵防御系统则用于阻断这些攻击。然而,不正确的是这种联动方式,因为通常 入侵防御系统会采取独立的措施来应对检测到的攻击,而不是直接联动入侵检 测系统。

D.−检测僵尸网络,木马控制等僵尸主机行为:入侵防御系统可以检测和识别僵 尸网络、木马控制以及其他僵尸主机行为,这些都是恶意活动,旨在远程控制 被感染的计算机并进行恶意操作。


试题十一

Web应用防火墙无法有效保护( )
A.登录口令暴力破解  B.恶意注册  C.抢票机器人  D.流氓软件

试题十一 答案: D

解析: 专业名词解释: Web−应用防火墙( WAF ):是一种用于保护 Web 应用程序免受恶意攻击的安 全措施。它通过监控和过滤进出 Web 应用程序的网络流量来检测和阻止攻击。 Web 应用防火墙可以识别并阻止常见的攻击类型,常见的攻击方式包括登录口 令暴力破解、恶意注册、抢票机器人等。


试题十二

著作权中( ),的保护期不受限制。
A.发表权              B.发行权            C.展览权             D.署名权

试题十二 答案: D

解析: 根据我国《著作权法》的规定,著作权包括−著作人身权 (人身权)−和−著作财产权(财产权)−两个方面,著作权中保护期限不受限制的主要就是著作 人身权,而人身权包括:发表权、署名权、修改权、保护作品完整权,其中署名权、修改 权、保护作品完整权保护器不受限制,而发表权,是作者终生及死后 50 年,截止于作者死 亡后第五十年的−12−月−31−日。(可以巧记:发署修保,即“发叔修煲”,解释:发叔修 理电饭煲,发:有限制;署修保:无限制)。


试题十三

国际上为保护计算机软件知识产权不受侵犯所采用的主要方式是实施( )
A.合同法               B.物权法               C.版权法             D.刑法

试题十三 答案: C

解析: 国际上为保护计算机软件知识产权不受侵犯所采用的主要 方式是实施版权法。版权法是一种知识产权法律制度,旨在保护创作作品(包括计算机软 件)的原创性和独立性。


试题十四

以下关于计算机软件著作权的叙述中,不正确的是( )
A.软件著作权人可以许可他人行使其软件著作权,并有权获得报酬

B.软件著作权人可以全部或者部分转让其软件著作权,并有权获得报酬

C.软件著作权属于自然人的,该自然人死亡后,在软件著作权的保护期内,继承人能继承
软件著作权的所有权利

D.为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等使
用软件的,可以不经软件著作权人许可,不向其支付报酬

试题十四 答案: C

解析: 我国软件著作权法规定,在软件著作权的保护期内,软件 著作权可以根据继承法规定继承给继承人。继承人可以继承软件著作权的各项权利,如复 制权、发行权等,但不包括署名权。署名权是指作者享有在其作品上署名的权利,不可继 承。除−C−选项内容,其他均出自软件著作权法。


试题十五

以下关于数据流图基本加工的叙述中,不正确的是( )
A.对每一个基本加工,必须有一个加工规格说明
B.加工规格说明必须描述把输入数据流变换为输出数据流的加工规则
C.加工规格说明需要给出实现加工的细节
D.决策树、决策表可以用来表示加工规格说明

试题十五 答案: C

解析: 本题考察数据流图中的基本加工和其规格说明。

基本加工:在数据流图中,它表示数据的处理点,用于转换输入数据流为输出数据流。

加工规格说明:它描述了如何进行数据转换,但不涵盖具体实现细节。这通常通过高层次的逻辑描述来实现。  

表示方法:决策树和决策表是表示加工逻辑的有效方法,因为它们提供了清晰的条件和结果的视图,帮助理解数据如何被加工。


试题十六

以下关于好的软件设计原则的叙述中,不正确的是( )
A.模块化           B.提高模块独立性         C.集中化           D.提高抽象层次

试题十六 答案: C

解析: 答案解析:软件设计原则通常强调模块化、模块独立性和低耦合度(模块化、高内聚低耦 合),以提高软件的可维护性、可扩展性和可复用性。相反,集中化会导致系 统的功能和责任过于集中在少数模块或组件中,增加了模块之间的依赖性和耦 合度,使系统难以维护、扩展和重用。

选项解析:

A.−模块化:是一种将系统划分为独立的功能模块的设计原则,每个模块负责特 定的功能或任务,以提高可维护性和可复用性。

B.−提高模块独立性:是指模块之间应该尽量减少相互依赖和耦合,使得一个模 块的修改不会影响到其他模块的功能。

D.−提高抽象层次:是指通过使用抽象化的概念和接口来降低模块之间的依赖关 系,使得模块的实现细节对其他模块隐藏,提高了系统的灵活性和可扩展性。


试题十七

(第 1 空)下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,则里程碑( )在关键路径上,关键路径长度为( )。


A. B      B. E     C. G      D. I

试题十八

(第 2 空)下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,则里程碑( )在关键路径上,关键路径长度为( )。
A. 15     B. 17    C. 19    D. 23

试题十七 答案: B                         试题十八 答案: D

解析: 专业名词解析:

−−−里程碑:是项目中的重要时间点或事件,用于标记项目的进展和阶段性完成。

−−−关键路径:是项目中连接起始和结束节点的具有最长时间的任务序列,决定 了项目的最短完成时间。

−−−关键路径长度:是关键路径上所有任务的持续时间总和,表示项目完成所需的最短时间。

答案解析: 考试时候也应进行如下标记,开始 A 默认是 0 ,注意从开始往结束方向计算 时,遇到汇合节点选取的是较大值,如 G 节点是汇合,有D->G和E->G ,分 别对应 8 + 3 = 11 和12 + 5 = 17 , 11 < 17 ,因此 G 对应 17 ,再看 B 节 点,因为没有汇合,因此直接进行计算0 + 5 = 5 ,反复如此即可计算全部节 点对应的值 上述我们从开始推导至结束,而关键路径则可从结束倒推至开始,结束节点 K = 23 , G = 234 = 19 , J = 232 = 21 , G原来是 17 , 17≠19 ,而J原来 是 21 ,满足,因此选择J节点;继续判断, H = 215 = 16 , I = 212 = 19 , 原来是−13 , 13≠19 ,而H原来是16 ,满足,因此选择H节点,如此 重复,可得关键路径A-C-E-H-J-K ,其长度为23 ,故里程碑E在关键路径上。


试题十九

由−8−位成员组成的开发团队中,一共有( )条沟通路径。
A. 64 B. 56 C. 32 D. 28

试题十九 答案: D

解析: 专业名词解析:

−−−沟通路径:该考点属于团队管理知识领域,计算沟通路径是在团队中成员之 间进行有效沟通的重要考虑因素之一 。

答案解析:在团队中,每个人都可能需要和其他成员进行沟通,因此团队内 部的沟通关系非常复杂。对于一个有n个成员的团队来说,其内部的沟通路径 数p可以通过以下公式计算: p = n * (n-1) / 2 由题意,开发团队中有8个成员,因此其内部的沟通路径数为: p = 8 * (8-1) / 2 = 28


试题二十

对布尔表达式“a or ((b < c) and d)”求值时,当( )时可进行短路计算。
A. a 为 true B. b 为 true C. c 为 true D. d 为 true

试题二十 答案: A、

解析: 专业名词解析: and (&&)和  or (||)的短路运算:是指如果在进行前面的表达式的运算过程,通过判断已经明确的知道整个表达式的结果,那么就不会进行后面表达式的运算判断。

答案解析: "a or ((b < c) and d)"−语句中,((b < c) and d)被小括号包括是一个整体,可以定义为 X ,整个式子可以看成 a or X ,如果 a 的值为true ,整个表达式的值已经确认为true ,后面不再需要计算,因此,当 a 为 true 时可以进行短路计算。


试题二十一

设有正规式 s = (0 | 10)*,则其所描述正规集中字符体的特点是( )
A.长度必须是偶数  B.长度必须是奇数  C. 0 不能连续出现 D. 1 不能连续出现

试题二十一 答案: D

解析: 题目所述正规式可以表示 0 的组合, 10 的组合, 0 和 10 组合,因此可以得正规集{ ε , 0 , 00 , 000 , 0000 , 10 , 1010 , 101010 , 010 , 100...},因此 1 不可连续出现。


试题二十二

设函数 foo 和 hoo 的定义如下图所示,在函数 foo 中调用函数 hoo ,hoo 的第一个参数采用传引用方式( callbyreerence ),第二个参数传值方式( callbyvalue ),那么函数 foo 中的 print(a, b)将输出( )。


A. 8, 5    B. 39, 5    C. 8, 40    D. 39, 40

试题二十二 答案: B

解析: 专业名词解析:

−−−传引用方式:是通过引用来传递参数,形参和实参指向相同的内存地址,因此在函数内部对形参的修改会直接影响到实参的值。

−−−传值方式:是将实参的值复制给形参,函数内部对形参的修改不会影响到实参的值。

答案解析: b 是以传值方式传递给 hoo ,因此 b 最终输出值取决于 foo() ,而无需考 hoo(),因此,b = 5 ; a 以传引用方式传递给形参 x ,因此 a 和 x 是共享的,当 x 发生改变时,a也发生改变( m = 8 * 5 = 40 -> x = 401 = 39 ),因此, a = x = 39 ,所以 print(a, b)将输出: 39, 5


试题二十三

某文件管理系统采用位示图( bitmap )来记录磁盘的使用情况,若计算机系统的字长为64位,磁盘容量为512GB ,物理块的大小为4MB ,那么位示图的大小为( )个字。

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

试题二十三 答案: B

解析: 由题意,物理块的大小为 4MB ,因此整个磁盘共有物理块: 512GB / 4MB = 131072个由于计算机系统的字长为 64位,而一个位只能记录一个物理块的使用情况,因此位示图的大小为: 131072 / 64 = 2048 (个字)


试题二十四

磁盘调度分为移臂调度和旋转调度两类,在移臂调度的算法中,( )算法可能会随时改变移动臂的运行方向。
A.单向扫描和先来先服务                   B.电梯调度和先来先服务
C.电梯调度和最短寻道时间优先         D.先来先服务和最短寻道时间优先

试题二十四 答案: D

解析: 专业名词解析: −−−磁盘调度算法:磁盘调度算法有这几种方式,先来先服务(FCFS)、最短寻道 时间优先(SSTF)、电梯调度算法(扫描算法( SCAN ))、单向扫描算法(循环扫 描算法( CSCAN))。

答案解析: 先来先服务按照请求的到达顺序来安排磁盘访问,先请求的任务先被服务;最短寻道时间优先磁盘调度算法则根据当前磁臂到请求访问磁道的距离来决定下一次的访问顺序,选择距离最近的磁道进行访问,因此,可能这两种磁盘调度算法会随时改变移动臂的运行方向。


试题二十五

在支持多线程的操作系统中,假设进程 P 创建了T1 、 T2 、 T3线程,那么( )。
A.该进程的代码段不能被T1 、 T2 、 T3共享      B.该进程的全局变量只能被 T1 共享
C.该进程中T1 、 T2 、 T3的栈指针不能被共享  D.该进程中T1的栈指针可以被T2、T3共享

试题二十五 答案: C

解析: 在支持多线程的操作系统中,假设进程 P 创建了T1 、 T2 、 T3线程,在同一进程中的各个线程都可以共享该进程所拥有的资源(进程的代码段、进程的全局变量),但是不能共享进程中某线程的栈指针。


试题二十六

(第 1 空)进程P1 、 P2 、 P3 、 P4 、 P5和P6的前趋图如下所示。
若用PV操作控制进程P1 、 P2 、 P3 、 P4 、 P5和P6并发执行的过程,需设置信号量S1 、S2、S3 、S4 、S5 、S6 、S7和S8 ,且信号量S1~S8 的初值都等于零。下面−P1~P6−的进程执行过程中,空①和空②处应分别为( ),空③和空④应分别为( ),空⑤和空⑥应分别为( )。


A. P ( S1 ) P ( S2 )和−V ( S3 ) V ( S4 )

B. P ( S1 ) P ( S2 )和−V ( S1 ) V( S2 )

C. V ( S3 ) V ( S4 )和−P ( S1 ) P ( S2 )

D. V ( S3 ) V ( S4 )和−P ( S2 ) P( S3 )

试题二十六 答案: D

解析: 执行进程前需要进行P操作,执行进程后需要进行V操 作。根据前驱图, P2进程运行完后,需要利用V操作V ( S3 ) V ( S4 )通知P3和P4进程,所以空①应该填V( S3  V( S4 )。 P3进程等待P1和P2进程的通知,需要执行2个P操作,故空②应该填P( S2 )P ( S3 )

试题二十七

(第 2 空)进程P1 、 P2 、 P3 、 P4 、 P5和P6的前趋图如下所示。
若用PV操作控制进程−P1 、 P2 、 P3 、 P4 、 P5−和P6并发执行的过程,需要设置信号量S1 、 S2 、S3 、S4 、S5 、S6 、S7和S8 ,且信号量S1~S8 的初值都等于零。下面P1~P6的进程执行过程中,空①和空②处应分别为( ),空③和空④应分别为( ),空⑤和空⑥应分别为( )。
A. V ( S5 )和  P ( S4 ) P ( S5 )     B. V ( S3 )和  P ( S4 ) V ( S5 )
C. P ( S5 )和  V ( S4 ) V ( S5 )     D. P ( S3 )和  P ( S4 ) P ( S5 )

试题二十七 答案: A

解析: 执行进程前需要进行P操作,执行进程后需要进行V操作。根据前驱图, P3进程运行完需要利用V操作V ( S5 )通知P4进程,故空③应该 填V ( S5 )。 P4进程需要等−P2−和P3进程的通知,需要执行两个P操作,故空④ 应该填P ( S4 ) P ( S5 )

试题二十八

(第 3 空)进程P1 、 P2 、 P3 、 P4 、 P5和P6的前趋图如下所示。
若用PV操作控制进程−P1 、 P2 、 P3 、 P4 、 P5−和P6并发执行的过程,需要设置信号量S1 、 S2 、S3 、S4 、S5 、S6 、S7和S8 ,且信号量S1~S8 的初值都等于零。下面P1~P6的进程执行过程中,空①和空②处应分别为( ),空③和空④应分别为( ),空⑤和空⑥应分别为( )。
A. V ( S6 )和  V ( S8 )      B. P ( S6 )和  P ( S7 )
C. P ( S6 )和  V ( S8 )      D. P ( S8 )和  P ( S8 )

试题二十八 答案: C

解析: 执行进程前需要进行P操作,执行进程后需要进行V操作。根据前驱图, P5进程需要等待P4进程的通知,需要执行一个P操作,故空⑤应该填 P( S6 )。 P5进程运行完需要利用V操作 V ( S8 )通知P6进程,故空⑥应该填 V( S8 )

试题二十九

以下关于增量模型优点的叙述中,不正确的是( )。
A.能够在较短的时间提交一个可用的产品系统     B.可以尽早让用户熟悉系统
C.优先级高的功能首先交付,这些功能将接受更多的测试      D.系统的设计更加容易

试题二十九 答案: D

解析: 专业名词解析: −−−增量模型:增量模型是一种软件开发方法,其主要特点是将系统划分为多个可交付的增量,每个增量都包含一部分功能。随着时间的推移,逐步完成整个 系统的开发。

选项解析:

A.−能够在较短的时间提交一个可用的产品系统:通过逐步增加功能,第一个可 交付版本所需要的成本和时间很少。

BC.−优先级高的功能首先交付,这些功能将接受更多的测试,同时,用户可以 尽早接触和熟悉系统的部分功能,提供及时的反馈和意见。

D.−这个说法不正确。增量模型强调逐步迭代开发,每个迭代周期都需要完成一 部分功能,因此需要预先规划好所需功能,并且要考虑未来的扩展性和兼容 性,因此系统的设计并不比其它开发模型更加容易。


试题三十

以下敏捷开发方法中,( )使用迭代的方法,把一段短的时间(如30天)的迭
代称为一个冲刺,并按照需求优先级来实现产品。
A.极限编程( XP )    B.水晶法( Crystal )
C.并列争求法( Scrum )    D.自适应软件开发( ASD )

试题三十 答案: C

解析: A.−极限编程(−XP−): 4 大价值观、 5 个原则、 12 个最佳 实践

B.−水晶法(−Crystal−):认为每一个不同的项目都需要一套不同的策略、约定和方法 论,认为人对软件质量有重要的影响(以人为本),因此随着项目质量和开发人员素质的提 高,项目和过程的质量也随之提高。通过更好地交流和经常性交付,软件生产力得到提高

C.−并列争求法(−Scrum−):把每 30 天一次的迭代称为一个“冲刺”,并按需求的优先级 来实现产品。多个自组织和自治的小组并行地递增实现产品。协调是通过简短的日常情况 会议来进行,就像橄榄球中的“并列争球”

D.−自适应软件开发(−ASD−):核心是三个非线性的、重叠的开发阶段:猜测、合作与学 习。 ASD 有 6 个基本的原则:有一个使命作为指导;特征被视为客户价值的关键点;过程中 等待是很重要的,因此“重做”与“做”同样关键;变化不被视为改正,而是被视为对软件 开发实际情况的调整;确定的交付时间迫使开发人员认真考虑每一个生产的版本的关键需 求;风险也包含其中


试题三十一

若模块A通过控制参数来传递信息给模块B ,从而确定执行模块B中的那部分语句。则这两个模块的耦合类型是( )耦合。
A.数据         B.标记          C.控制         D.公共

试题三十一 答案: C

解析:

A.−数据耦合:指两个模块之间有调用关系,传递的是简 单的数据值,相当于高级语言中的值传递

B.−标记耦合:指两个模块之间传递的是数据结构

C.−控制耦合:指一个模块调用另一个模块时,传递的是控制变量(控制参数),被调用模 块通过该控制变量的值有选择地执行模块内的某一功能。因此,被调用模块应具有多个功 能,哪个功能起作用受调用模块控制

D.−公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合


试题三十二

在设计中实现可移植性设计的规则不包括( )。
A.将设备相关程序和设备无关程序分开设计         B.可使用特定环境的专用功能
C.采用平台无关的程序设计语言                           D.不使用依赖于某一平台的类库

试题三十二 答案: B

解析: A.−将设备相关程序和设备无关程序分开设计:这是一种 良好的设计原则,将与特定设备相关的代码和与设备无关的代码分开,以便在不同平台上 重新使用设备无关的代码,提高可移植性

B.−可使用特定环境的专用功能:这意味着使用只能在特定环境或平台上使用的功能或特 性。这会导致代码依赖于该特定环境,降低了可移植性

C.−采用平台无关的程序设计语言:选择平台无关的程序设计语言可以使代码更容易移植到 不同的平台上。这意味着代码在不同的操作系统或硬件上都能够运行,提高了可移植性

D.−不使用依赖于某一平台的类库:避免使用依赖于特定平台或操作系统的类库可以增加代 码的可移植性。如果代码依赖于某个特定平台的类库,那么在将代码移植到其他平台时可 能会遇到问题


试题三十三

以下关于管道—过滤器软件体系结构风格优点的叙述中,不正确的是( )。
A.构件具有良好的高内聚、低耦合的特点                     B.支持软件复用
C.支持并行执行                                                            D.适合交互处理应用

试题三十三 答案: D

解析: 本题考察软件体系结构的基础知识。管道过滤器体系结构是一种传统的体系结构风格,该体系结构由一组成为过滤器的构件以及连接构件的管道组 成,管道将数据从一个过滤器传送到另一个过滤器。该风格具有以下优点:

( 1 ).软件构件具有良好的隐蔽性和高内聚、低耦合的特点( A )

( 2 ).允许设计者将整个系统的输入输出行为看成是多个过滤器的行为的简单合成

( 3 ).支持软件复用( B )

( 4 ).系统维护和增强系统性能简单

( 5 ).允许对一些如吞吐量、死锁等属性的分析

( 6 ).支持并行执行( C )


试题三十四

(第 1 空)以下流程图中,至少需要( )个测试用例才能覆盖所有路径。采用 McCabe 方法计算程序复杂度为( )。


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

试题三十四 答案: B

解析: 专业名词解析:
−−−路径覆盖:是软件测试中白盒测试的方式之一,同时也是最强覆盖,路径覆盖是指覆盖被测试程序中所有可能的路径
−−答案解析:该流程图需要用−4−个用例实现覆盖所有路径:
用例一: begin 、语句1 、判断1 ( N )、语句6 、 end
用例二: begin 、语句1 、判断1 ( Y )、语句2 、判断2 ( N )、语句3 、语句5 、语句6 、 end
用例三: begin 、语句1 、判断1 ( Y )、语句2 、判断2 ( Y )、判断3( N )、语句4 、语句5 、语句6 、 end
用例四: begin 、语句1 、判断1 ( Y )、语句2 、判断2 ( Y )、判断3( Y )、判断1 ( Y )......

试题三十五

(第 2 空)以下流程图中,至少需要( )个测试用例才能覆盖所有路径。采用 McCabe 方法计算程序复杂度为( )。
A. 2                 B. 3                    C. 4                D. 5

试题三十五 答案: C

解析: 专业名词解析: McCabe 度量法:是通过定义环路复杂度,建立程序复杂性的度量,它基于一个程序模块的程序图中环路的个数。

答案解析:采用McCabe方法计算程序的复杂度,有两种计算方式:

方法一:边的数量       节点的数量  +  2

方法二:闭合区域数量 + 1

采用方法二比较直接且简单,首先需要确定流程图中的环路数。该流程图中有3个环路,因此程序的复杂度为3+1=4 ;若采用方法一,边的数量   节点的数量 + 2 = 13   11 + 2 = 4


试题三十六

在软件系统交付给用户使用后,为了使用户界面更友好,对系统的图形输出进行改进,该行为属于( )耦维护。
A.改正性          B.适应性          C.改善性             D.预防性

试题三十六 答案: C

解析: 答案解析: 题目所述,属于改善性维护,是指对软件系统进行改进,以提高其质量、效 率、易用性、可维护性等方面的特征,使其满足用户或市场的不断变化的需求。

选项解析:

A.改正性维护:是指修复软件系统中已知的问题或缺陷

B.适应性维护:是指对软件系统进行适应性修改,以适应变化的环境、硬件、 操作系统等

D.预防性维护:是指在软件系统还没有发生实际问题之前,对可能发生问题的 代码进行被动或主动的检查和改进,以预防未来可能出现的问题


试题三十七

(第 1 空)采用面向对象方法开发学生成绩管理系统,学生的姓名、性别、出生日期、期末考试成绩、查看成绩操作均被( )在学生对象中。系统中定义不同类,不同类的对象之间通过( )进行通信。
A.封装         B.继承          C.多态          D.信息

试题三十七 答案: A

解析: 答案解析: 封装是面向对象程序设计中的一种基本特性,它将数据和行为组合在一个类中,并且对外部隐藏实现的细节,只暴露出一些公共的方法接口(方法),以 保证数据的安全和代码的可维护性。在这个学生成绩管理系统中,学生的姓 名、性别、出生日期、期末考试成绩、查看成绩操作都应该是学生对象的属性 或方法,被封装在学生对象中。

试题三十八

(第 2 空)采用面向对象方法开发学生成绩管理系统,学生的姓名、性别、出生日期、期末考试成绩、查看成绩操作均被( )在学生对象中。系统中定义不同类,不同类的对象之间通过( )进行通信。
A.继承          B.多态          C.消息         D.重载

试题三十八 答案: C

解析: 答案解析: 面向对象程序设计中对象之间的通信方式,它是指向对象发送的请求。在这个 学生成绩管理系统中,不同类的对象之间需要进行通信,比如教师对象需要获 取学生对象的成绩信息,这些通信都是通过消息来完成的。


试题三十九

对采用面向对象方法开发的系统进行测试时,通常从不同层次进行测试。测试类中定义的每个方法属于( )层。
A.算法                 B.类               C.模板             D.系统

试题三十九 答案: A

解析: 答案解析: 一般来说,对面向对象软件的测试可分为下列 4 个层次进行

A.算法层:测试类中定义的每个方法,基本上相当于传统软件测试中的单元测试

B.类层:测试封装在同一个类中的所有方法与属性之间的相互作用。在面向对 象软件中类是基本模块,因此可以认为这是面向对象测试中所特有的模块测试

C.模板层:测试一组协同工作的类之间的相互作用,大体上相当于传统软件测 试中的集成测试,但是也有面向对象软件的特点(例如,对象之间通过发送消 息相互作用)

D 系统层:把各个子系统组装成完整的面向对象软件系统,在组装过程中同时 进行测试。软件工程中传统的测试用例设计技术,如逻辑覆盖、等价类划分和 边界值分析等方法,仍然可以作为测试类中每个方法的主要技术。面向对象测试的主要目标也是用尽可能低的测试成本和尽可能少的测试用例,发现尽可能 多的错误。但是,面向对象程序中特有的封装、继承和多态等机制,也给面向对象测试带来一些新特点,增加了测试和调试的难度。


试题四十

在面向对象系统设计中,如果重用了一个包中的某个类,那么就要重用该包中所的类,这属于( )原则
A.共同封闭          B.共同重用              C.开放—封闭            D.接口分离

试题四十 答案: B

解析:

A.共同封闭原则(CommonClosurePrinciple , CCP):包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响

B.共同重用原则(CommonReusePrinciple , CRP):一个包中的所有类应该是共同重用的。 如果重用了包中的一个类,那么就要重用包中的所有类

C.−开放-封闭原则( Open & ClosePrinciple , OCP):软件实体(类、模块、函数等)应

该是可以扩展的,即开放的;但是不可修改的,即封闭的

D.接口分离原则(InterfaceSegregationPrinciple , ISP):不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对 可能的变化


试题四十一

(第 1 空)以下关于−UML−序列图的描述是( ),下图所示−UML−图中消息可能执行的顺序是( )。


A.系统在它的周边环境的语境中所提供的外部可见服务   B.某一时刻一组对象以及它们之间的关系
C.系统内从一个活动到另一个活动的流程    D.以时间顺序组织的对象之间的交互活动

试题四十一 答案: D

解析: 选项 A 是指用例图,用例图显示了一组用例、参与者以及它们之间的关系,可以使用用例图展示系统具有的功能,可以理解为系统提供的服务。选项 B 对象图展示某一时刻一组对象以及它们之间的关系。 选项 C 活动图展示了系统内从一个活动到另一个活动的流程。 选项 D 序列图描述了以时间顺序组织的对象之间的交互活动。


试题四十二

(第 2 空)以下关于−UML−序列图的描述是( ),下图所示−UML−图中消息可能执行的顺序是( )。
A.a→b→c→a→b     B.c→b→a→c→b     C.a→b→a→b→c     D.a→b→c→a→b→c

试题四十二 答案: C

解析: 根据图中的标注 loop(循环)是在消息 a 与消息 b 的处进行 的。因此消息 c 的顺序排列在循环结束之后。


试题四十三

UML 包图展现由模型本身分解而成的组织单元及其依赖关系,以下关于包图的叙述中,不正确的是( )。
A.可以拥有类、接口构件、节点        B.一个元素可以被多个包拥有
C.一个包可以嵌套其他包                  D.一个包内元素不能重名

试题四十三 答案: B

解析: 一个模型元素不能被一个以上的包所拥有,也就是说一个 元素如果放到了这个包里,那它就不能再放到别的包里了。 就好像一个学生在 A 班,就不能又在 B 班。


试题四十四

(第 1 空)在某招聘系统中,要求实现求职简历自动生成功能。简历的基本内容包括求职者的姓名、性别、年龄及工作经历等。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。针对此需求,设计如下所示的类图。该设计采用了( )模式,由 xx 示例指定创建对象的种类,声明一个复制自身的接口,并且通过复制这些 Resume xx WorkExperience 的对象来创建新的对象。该模式属于( )模式。


A.单例( Singleton )             B.抽象工厂( AbstractFactory )
C.生成器( Builder )             D.原型( Prototype )

试题四十四 答案: D

解析: 该类图采用了原型模式。原型模式的主要思想是通过复制 现有的对象来创建新的对象,从而避免创建过程中的重复工作。在该类图中, Resume类 实现了Cloneable接口,它定义了一个可复制自身的方法clone()。当需要创建新的简历对象时,系统会根据已有的简历对象调用clone()方法来复制一个新的简历对象。


试题四十五

(第 2 空)在某招聘系统中,要求实现求职简历自动生成功能。简历的基本内容包括求职者的姓名、性别、年龄及工作经历等。希望每份简历中的工作经历有所不同,并尽量减少程序中的重复代码。针对此需求,设计如下所示的类图。该设计采用了( )模式,由 xx 示例指定创建对象的种类,声明一个复制自身的接口,并且通过复制这些 Resume xx WorkExperience 的对象来创建新的对象。该模式属于( )模式。

A.混合型               B.行为型                C.结构型         D.创建型

试题四十五 答案: D

解析: 该类图采用了原型模式。原型模式的主要思想是通过复制 现有的对象来创建新的对象,从而避免创建过程中的重复工作。在该类图中, Resume类 实现了Cloneable接口,它定义了一个可复制自身的方法clone()。当需要创建新的简历 对象时,系统会根据已有的简历对象调用clone()方法来复制一个新的简历对象。同时, 由于原型模式是一种通过复制现有对象来创建新对象的设计模式,属于创建型模式。


试题四十六

(第 1 空)某旅游公司欲开发一套软件系统,要求能根据季节,节假日等推出不同的旅行定价包,如淡季打折、一口价等。实现该要求适合采用( )模式,该模式的主要意图是( )
A.策略模式( Strategy )               B.状态( State )
C.观察者( Observer )                 D.命令( Command )

试题四十六 答案: A

解析: 策略模式适合于解决一类问题,该类问题有多种不同的解决方法,需要根据不同的情况采用不同的解决方法。在这种情况下,可以使用策略模式将每种解决方法封装成一个独立的策略对象,客户端可以根据需要选择不同的策略对象对于旅游定价系统来说,不同的季节和节假日需要采取不同的定价策略,因此可以把不同的定价策略封装成独立的策略对象,并通过策略模式实现动态选择不同的策略


试题四十七

(第 2 空)某旅游公司欲开发一套软件系统,要求能根据季节,节假日等推出不同的旅行定价包,如淡季打折、一口价等。实现该要求适合采用( )模式,该模式的主要意图是( )
A.将一个请求封装为对象,从而可以用不同的请求对客户进行参数化
B.当一个对象的状态发生改变时,依赖于它的对象都得到通知并被自动更新
C.允许一个对象在其内部状态改变时改变它的行为
D.定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换

试题四十七 答案: D

解析: 对于旅游定价系统来说,不同的季节和节假日需要采取不同的定价策略,因此可以把不同的定价策略封装成独立的策略对象,并通过策略模式实现动态选择不同的策略,因此选项 D 是策略模式的意图

选项解析:

A.将一个请求封装为对象,从而可以用不同的请求对客户进行参数化:属于 Command(命令)设计模式的意图

B.当一个对象的状态发生改变时,依赖于它的对象都得到通知并被自动更新: 属于 Observe(观察者)设计模式的意图

C.允许一个对象在其内部状态改变时改变它的行为:属于 State(状态)设计模式的意图

D.−定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换:属 于 Strategy−(策略)设计模式的意图


试题四十八

Python中采用于( )原方法来获取一个对象的类型。
A. str()              B. type()         C. id()               D. object()

试题四十八 答案: B

解析:

A.str():是将对象转换为字符串的方法

B.type():函数返回对象的类型

C. id():是返回对象的唯一标识符的方法

D.object():函数返回的对象是所有类的基类,它没有任何属性和方法,只有Python内置对象所共有的一些特殊属性和方法,例如__doc__、__class__、__delattr__、__ getattribute__等


试题四十九

在Python语言中,语句 x = ( )不能定义一个元组。
A. (1, 2, 1, 2)           B. 1, 2, 1, 2              C. tuple()          D. (1)

试题四十九 答案: D

解析:

AB.在Python语言中,用逗号分隔一组值,可以创建一 个元组, A 和 B 均可以

C.python 中, tuple()−是一个空元组的构造方式

D.由于括号 () 既可以用来表示数学中的一个表达式,也可以用来括起元组,因此(1) 并不表示一个元组,它实际上等价于整数1 。如果想要定义只有一个 元素的元组,需要在元素后面加上逗号来消除歧义,例如(1,)−表示只包含一个元素的元组


试题五十

关于Python语言的叙述中,不正确的是( )。
A. for语句可以用在序列(如列表、元组和字符串)上进行迭代访问
B.循环结构如for和while后可以加else语句
C.可以用if...else−和−switch...case语句表示选择结构
D.支持嵌套循环

试题五十 答案: C

解析: 选项C中的“可以用if...else和switch...case语句表示选择结构”是不正确的。在Python中,没有 switch...case语句结构; Python 中 可以使用 if 语句来实现选择结构, if语句允许在条件为真时执行一个代码块,否则执 行另一个代码块,同样地, for和while 也是可以,循环结构后可以加上else语句,支 持嵌套循环


试题五十一

在数据库应用系统的开发过程中,开发人员需要通过视图层、逻辑层次上的抽象来对用户屏蔽系统的复杂性,简化用户与系统的交互过程。错误的是( )。
A.视图层是最高层次的抽象                     B.逻辑层是比视图层更低一层的抽象
C.物理层是最低层次的抽象                     D.物理层是比逻辑层更高一层的抽象

试题五十一 答案: D

解析: 本题描述数据库系统中的三级模式抽象程度,三级模式: 外模式(视图层)、模式(逻辑层)、内模式(物理层)。其中,视图层是最高层次的抽象,逻辑层是比视图层更低一层的抽象,物理层是最低层次的抽象


试题五十二

给定关系模式R ( U, F ),其中U为属性集, F是U上的一组函数,属于自反律的是( )。
A.若Y∈X∈U ,则X→Y为F所蕴含           B.若X→Y , Y→Z ,则X→Y为F所蕴含
C.若X→Y , Z∈Y ,则X→Z为F所蕴含    D.若X→Y , X→Z ,则X→YZ为F所蕴含

试题五十二 答案: A

解析:

A.若Y∈X∈U ,则X→Y为F所蕴含。这是自反律,也称为自反规则,表示一个属性集合X决定了其中的一个属性Y

B.若X→Y, Y→Z ,则X→Z为F所蕴含。这是传递律,表示如果一个属性集合X决定 了另一个属性集合Y ,而Y又决定了另一个属性集合Z ,那么X也决定了Z

C.若X→Y, Z∈Y ,则X→Z为F所蕴含。这是增广律,表示如果一个属性集合X决定 了另一个属性集合Y ,而Z属于Y ,那么X也决定了Z

D.若X→Y, X→Z ,则X→YZ为F所蕴含。这是合并律,表示如果一个属性集合X同时决定了另一个属性集合Y和属性集合Z ,那么X也决定了YZ


试题五十三

(第 1 空)给定关系模式R ( U, F ), U = { A, B, C, D},函数依赖集F = { AB→C, CD→B}。关系模式 R( ),主属性和非主属性个数分别为( )。

A.只有1个候选关键字ACB                     B.只有一个候选关键字BCD
C.有2两个候选关键字ABD和ACD          D.有2两个候选关键字ACB和BCD


试题五十四

(第 2 空)给定关系模式R ( U, F ), U = { A, B, C, D},函数依赖集F = { AB→C, CD→B}。关系模式 R( ),主属性和非主属性个数分别为( )。
A. 4和0                B. 3和1                   C. 2和2            D. 1和3

试题五十三 答案: C    试题五十四 答案: A   

解析: 由题可知, AB→C, CD→B ,只在函数依赖左侧出现,一 定是决定属性,只在函数依赖右侧出现,一定不是决定属性,当属性在函数依赖左侧和右 侧出现则考虑选择。因此, A和D 属性考虑是候选键, AD+ = AD ,无法推导出U , C和 B在左侧和右侧都出现,先将B加入AD ,那么ABD+ = ABCD ,可推导出U ,在判断, 将C加入AD ,那么ACD+ = ABCD ,可推导出U ,综上所述,有两个候选关键字ABD 和ACD 根据主属性概念,存在候选关键字中的属性即主属性, ABCD 均为主属性,没有非主属性, 因此, R中有4个主属性, 0个非主属性


试题五十五

(第 1 空)如果将Students表的插入权限赋予用户User1 ,并允许其将该权限授予他人,那么正确的SQL 语句如下: GRANT( ) TABLE Students TO User1 ( )。
A. INSERT       B. INSERT ON       C. UPDATE     D. UPDATE ON

试题五十五 答案: B

解析: INSERTON表示授予INSERT权限, Students表示授予权限的对象, User1是被授权的用户


试题五十六

(第 2 空)如果将Students表的插入权限赋予用户User1 ,并允许其将该权限授予他人,那么正确的SQL 语句如下: GRANT( ) TABLE Students TO User1 ( )。
A. FOR ALL      B. PUBLIC      C. WITH GRANT OPTION      D. WITH CHECK OPTION

试题五十六 答案: C

解析: 根据题意,允许该用户将所授予的权限授权给他人使用 WITHGRANTOPTION,补全 SQL 语句: GRANT INSERT ON Students TO  User1  WITH  GRANT  OPTION


试题五十七

利用栈对算术表达式−10 * (40–30 / 5) + 20求值时,存放操作数的栈(初始为空)的容量至少为( ),才能满足暂存该表达式中的运算数或运算结果的要求。
A. 2               B. 3                C. 4               D. 5

试题五十七 答案: C

解析: 在计算算术表达式的值时,通常需要使用两个栈:一个运算符栈和一个操作数栈。对于给定的表达式10 * (40–30 / 5) + 20 ,可以按照以下 步骤进行计算: 将表达式转换为后缀(逆波兰)表达式: 10 40 30 5 / * 20 − + 从左到右扫描表达式,遇到数字就将其压入操作数栈中,遇到运算符就从操作数栈中弹出相应的操作数进行计算, 计算结果再压入操作数栈中。在这个过程中,需要使用一个运算符栈来保存运算符及其优先级在扫描完整个表达式后,操作数栈中所剩余的元素即为表达式的计算结果。因此,在扫描 后缀表达式时,遇到10 、 40 、 30 、 5等数字都压入操作数栈,而当遇到 / 时才进行出栈操作。遇到第一个符号之前操作数栈中已有4个元素,之后进行运算再将结果重新压入操作数栈,不断计算得到最终结果。因此操作数栈的容量至少为4才能满足运算结果的要求


试题五十八

设有5个字符,根据其使用频率为其构造哈夫曼编码。以下编码方案中( )是不可能的。
A. { 111, 110, 101, 100, 0 }
B. { 0000, 0001, 001, 01, 1 }
C. { 11, 10, 01, 001, 000 }
D. { 11, 10, 011, 010, 000 }

试题五十八 答案: D

解析: 在构造哈夫曼编码的过程中,出现频率高的字符赋予较短的编码,出现频率低的字符赋予较长的编码。因此,哈夫曼编码可以保证每个字符的编码都是唯一的。选项D中,出现次数最多的字符编码为11 ,但是出现次数次多的字符编码为011 ,违背了哈夫曼编码的原则。因此,选项D不可能是一个合法的哈夫曼编码, 而对于选项A 、 B 、 C ,都是常见的哈夫曼编码,符合哈夫曼编码的特征


试题五十九

设有向图G具有n个顶点、 e条弧,采用邻接表存储,则完成广度优先遍历的时间复杂度为( )。
A. O ( n + e )            B. O ( n^2 ) C.           O ( e^2 )     D. O(n * e)

试题五十九 答案: A

解析: 对于具有n个顶点、 e条弧的有向图G ,采用邻接表存 储方式进行广度优先搜索,则遍历每个节点时,需要遍历其所有邻接边,时间复杂度为O( e);同时,每个节点最多入队一次,出队一次,因此存储所有节点所需的队列空间是O(n) 的,也就是总共要遍历n个顶点和e条边。所以时间复杂度为O(n + e)


试题六十

对某有序顺序表进行折半查找(二分查找)时,进行比较的关键字序列不可能是( )。
A. 42, 61, 90, 85, 77                   B. 42, 90, 85, 61, 77
C. 90, 85, 61, 77, 42                  D. 90, 85, 77, 61, 42

试题六十 答案: C

解析: 折半查找每次都会将查找的区间缩小一半,即初始区间为[l, r],第一次查找的中间值为mid ,则会将待查找的key值和mid中间值进行比较,若 key < mid ,则查找区间划分为[l, mid–1],若 key > mid ,则查找区间划分为[mid + 1, r]。对于题目中的C选项,可以发现第一次查找的mid值为90 ,那么可以暂时将区间的情况划分为[l, 90, r],第二次查找的mid值为85 ,则区间划分为[l, 85, 90-1], 第三次查找的mid值为61 ,则区间划分为[l, 61, 85-1],第四次查找的mid值为77 ,则区间划分为[61+1, 77, 85-1],第五次查找的mid值为42 ,可以发现42并不在区间中。也就是不可能二分查找到mid值为42 ,反观选项 A 、 B 、 D均可正确查找


试题六十一

设由三棵树构成的森林中,第一棵树、第二棵树和第三棵树的结点总数分别为n1 、 n2和n3 。将该森林转换为一颗二叉树,那么该二叉树的右子树包含( )个结点。
A. n1                   B. n1 + n2                C. n3              D. n2 + n3

试题六十一 答案: D

解析: 将一棵树转换成二叉树的方法是,对于每个结点,其左子树即为原来的第一个孩子,右子树连向下一个兄弟结点。假设第一棵树转换成的二叉树为T1 ,第二棵树转换成的二叉树为T2 ,第三棵树转换成的二叉树为T3 。将三棵树合并成 一棵二叉树的过程是,将T2作为T1的右子树,再将T3作为T2的右子树。因此,该二叉树的右子树包含第二棵树和第三棵树中所有结点。所以,该二叉树的右子树包含结点 总数为n2 + n3

试题六十二

(第 1 空)对一组数据进行排序,要求排序算法的时间复杂度为O ( nlgn ),且要求排序是稳定的,则可采用( )算法。若要求排序算法的时间复杂度为O ( nlgn ),且在原数据上进行,即空间复杂度为O ( 1 ),则可以采用( )算法。
A.直接插入排序                 B.堆排序                C.快速排序                D.归并排序

试题六十二 答案: D

解析: 要求算法的时间复杂度为O(nlgn),题目未特殊说明,则该时间复杂度表示平均情况,满足此条件的有堆排序、快速排序、归并排序,又要求排序是稳定的,因此只有归并排序满足题目要求,故选择 D 选项


试题六十三

(第 2 空)对一组数据进行排序,要求排序算法的时间复杂度为O ( nlgn ),且要求排序是稳定的,则可采用( )算法。若要求排序算法的时间复杂度为O ( nlgn ),且在原数据上进行,即空间复杂度为O ( 1 ),则可以采用( )算法。
A.直接插入排序                 B.堆排序                 C.快速排序                D.归并排序

试题六十三 答案: B

解析: 要求算法的时间复杂度为O(nlgn),题目未特殊说 明,则该时间复杂度表示平均情况,满足此条件的有堆排序、快速排序、归并排序,又要求算法的空间复杂度为O(1),因此只有堆排序满足题目要求,故选择 B 选项


试题六十四

(第 1 空)采用Kruskal算法求解下图的最小生成树,采用的算法设计策略是( )。该最小生成树的权值是( )。


A.分治法                 B.动态规划            C.贪心法           D.回溯法

试题六十四 答案: C

解析: Kruskal 算法是一种使用贪心策略的最小生成树算法。该 算法按照边权值的大小依次选择边,并保证在选择每条边时不会形成环,直到选出n−1 条边为止


试题六十五

(第 2 空)采用Kruskal算法求解下图的最小生成树,采用的算法设计策略是( )。该最小生成树的权值是( )。
A. 14                      B. 16                C. 20            D. 32

试题六十五 答案: A

解析: 在给定的图中,各条边的权值如下:

AB : 8AC : 1AD : 5BC : 5BE : 3

CD : 5CE : 4CF : 4DF : 2EF : 9

按照边权值从小到大的顺序,首先选取权值为1的边AC ,接着选取权值为2的边DF , 接着选取权值为3的边BE ,接着选取权值为4的边CE和CF 。图中顶点数为6 ,此时已选取5条边。最小生成树构造完毕,且不存在环(注意每次选取权值最小的边时,要留意是否构成环,构成则不能选取),最小生成树的权值为: 1 + 2 + 3 + 4 + 4 = 14


试题六十六

www的控制协议是( )。
A. FTP              B. HTTP            C. SSL                D. DNS

试题六十六 答案: B

解析:

A. FTP ( FileTransferProtocol ,文件传输协议):是另一种常见的Internet协议。 FTP协议用于在网络上进行文件传输,支持上传和下载文件

B. "www"的控制协议是 HTTP ( HypertextTransferProtocol ):是用于在网络上传输超文本的协议,是当今互联网最常用的协议之一

C. SSL ( SecureSocketsLayer ,安全套接字层):是一种加密协议,用于保护在 Internet上进行的通信数据。 SSL通常在HTTP上使用,称为HTTPS

D. DNS ( DomainNameSystem ,域名系统):用于将域名解析为IP 地址,以便计算机能够 访问互联网。 DNS是一个应用层协议,常用于网络中的命名服务


试题六十七

(第一空)在Linux操作系统中通常使用( )。作为Web服务器,其默认的Web目录为( )。
A. IIS                  B. Apache                     C. NFS                D. MYSQL

试题六十七 答案: B

解析: 在Linux操作系统中通常使用Apache作为Web服务器, Apache是一个开放源代码的 HTTP服务器软件,也是最流行的Web服务器之一


试题六十八

(第二空)在Linux操作系统中通常使用( )。作为Web服务器,其默认的Web目录为( )。
A. /etc/httpd                        B. /var/log/httpd
C. /etc/home                       D. /home/httpd

试题六十八 答案: D

解析: 默认情况下,在Apache中网站文件存放的根目录为/ var/www/html或/var/www 。而 Apache记录的日志文件一般存放在/var/log/httpd目录下。在Linux中,一般使用Apache作为Web服务器,其站点主目录是/home/httpd


试题六十九

SNMP的传输层协议是( )。
A. UDP                     B. TCP                 C. IP            D. ICM

试题六十九 答案: A

解析: SNMP ( SimpleNetworkManagementProtocol )的传输层协议是UDP ( UserDatagramProtocol )。 UDP−是一种无连接的、不可靠的传输协议,它不提供数据包的可靠性、顺序性和流量控制。 UDP直接封装应用层数据,将其发送到目标地址,并不需要建立和维护连接

SNMP使用UDP作为传输层协议的主要原因是为了保持数据传输的效率和简单性。 UDP具有较低的开销,不需要在通信开始时建立连接,并且不需要等待确 认或重传丢失的数据包。这使得 UDP非常适用于 SNMP 这种轻量级的网络管理 协议


试题七十

某电脑无法打开任意网页,但是互联网即时聊天软件使用正常。造成该故障的原因可能是( )。
A. IP地址配置错误                B. DNS配置错误           C.网卡故障            D.链路故障

试题七十 答案: B

解析: 根据题目描述,如果电脑无法打开任意网页,但互联网即时 聊天软件正常工作,这可能是DNS配置错误。因为互联网聊天软件可能是通过 IP 地址而不是域名进行通信,因此可以正常工作。然而,当你尝试打开网页时,因为 DNS 配置错 误,计算机无法将域名解析为正确的 IP 地址,从而导致无法访问网页


试题七十一

(第 1 空)Low-code and no code software development solutions have emerged as viable and convenient alternatives to the traditional development process. Low-code is a rapid application development (RAD) approach that enables automated code generation through ( ) building blocks like drag-and-drop and pull-down menu interfaces. This( ) allows low-code users to focus on the differentiator rather than the common denominator of programming. Low-code is a balanced middle ground between manual coding and no-code as its users can still add code over auto-generated code. No-code is also a RAD approach and is often treated as a subset of the modular plug-and-play, lowcode development approach. While in low-code there is some handholding done by developers in the form of scripting or manual coding, no-code has a completely ( ) approach, with100% dependence on visual tools. A−low-code−application−platform−(LCAP)−—−also−called−a−low-code−development−
platform (LCDP) —−contains−an−integrated−development−environment−(IDE)−with−( ) features like APIs, code templates, reusable plug-in modules and graphical connectors to automate a significant percentage of the application development process. LCAPs are typically available as cloud-based Platform-as-a-Service (PaaS) solutions. A low-code platform works on the principle of lowering complexity by using visual tools and techniques like process modeling, where users employ visual tools to define workflows, business rules, user interfaces and the like. Behind the scenes, the complete workflow is automatically converted into code. LCAPs are used predominantly by professional developers to automate the generic aspects of coding to redirect effort on the last mile of ( ).
A. visual                        B. component-based
C. object-oriented          D. structural

试题七十一 答案: A

解析: 低代码是一种快速应用程序开发( RAD )方法,通过可视 化构建块(如拖放和下拉菜单界面)实现自动化代码生成。因此A选项最符合题意

A. visual :可视化

B. component-based :基于组件的

C. object-oriented :面向对象的

D. structural :结构化的


试题七十二

(第 2 空)Low-code and no code software development solutions have emerged as viable and convenient alternatives to the traditional development process. Low-code is a rapid application development (RAD) approach that enables automated code generation through ( ) building blocks like drag-and-drop and pull-down menu interfaces. This( ) allows low-code users to focus on the differentiator rather than the common denominator of programming. Low-code is a balanced middle ground between manual coding and no-code as its users can still add code over auto-generated code. No-code is also a RAD approach and is often treated as a subset of the modular plug-and-play, lowcode development approach. While in low-code there is some handholding done by developers in the form of scripting or manual coding, no-code has a completely ( ) approach, with100% dependence on visual tools. A−low-code−application−platform−(LCAP)−—−also−called−a−low-code−development−
platform (LCDP) —−contains−an−integrated−development−environment−(IDE)−with−( ) features like APIs, code templates, reusable plug-in modules and graphical connectors to automate a significant percentage of the application development process. LCAPs are typically available as cloud-based Platform-as-a-Service (PaaS) solutions. A low-code platform works on the principle of lowering complexity by using visual tools and techniques like process modeling, where users employ visual tools to define workflows, business rules, user interfaces and the like. Behind the scenes, the complete workflow is automatically converted into code. LCAPs are used predominantly by professional developers to automate the generic aspects of coding to redirect effort on the last mile of ( ).
A. block                 B. automation                C. function              D. method

试题七十二 答案: B

解析: 这种自动化使得低代码用户能够将注意力集中在编程的差 异化方面,而不是公共部分。因此B选项最符合题意

A. block :块

B. automation :自动化

C. function :功能

D. method :方法


试题七十三

(第 3 空)Low-code and no code software development solutions have emerged as viable and convenient alternatives to the traditional development process. Low-code is a rapid application development (RAD) approach that enables automated code generation through ( ) building blocks like drag-and-drop and pull-down menu interfaces. This( ) allows low-code users to focus on the differentiator rather than the common denominator of programming. Low-code is a balanced middle ground between manual coding and no-code as its users can still add code over auto-generated code. No-code is also a RAD approach and is often treated as a subset of the modular plug-and-play, lowcode development approach. While in low-code there is some handholding done by developers in the form of scripting or manual coding, no-code has a completely ( ) approach, with100% dependence on visual tools. A−low-code−application−platform−(LCAP)−—−also−called−a−low-code−development−
platform (LCDP) —−contains−an−integrated−development−environment−(IDE)−with−( ) features like APIs, code templates, reusable plug-in modules and graphical connectors to automate a significant percentage of the application development process. LCAPs are typically available as cloud-based Platform-as-a-Service (PaaS) solutions. A low-code platform works on the principle of lowering complexity by using visual tools and techniques like process modeling, where users employ visual tools to define workflows, business rules, user interfaces and the like. Behind the scenes, the complete workflow is automatically converted into code. LCAPs are used predominantly by professional developers to automate the generic aspects of coding to redirect effort on the last mile of ( ).
A. medern B. hands-off C. generic D. labor-free

试题七十三 答案: B

解析: 低代码开发中,开发人员可能会通过编写脚本或手动编码 来进行一些辅助操作。而无代码开发则完全采用“无干预”的方式,完全依赖于可视化工 具,不需要进行任何手动编码。因此B选项最符合题意

A. medern :现代

B. hands-off :无干预

C. generic :通用

D. labor-free :免人工


试题七十四

(第 4 空)Low-code and no code software development solutions have emerged as viable and convenient alternatives to the traditional development process. Low-code is a rapid application development (RAD) approach that enables automated code generation through ( ) building blocks like drag-and-drop and pull-down menu interfaces. This( ) allows low-code users to focus on the differentiator rather than the common denominator of programming. Low-code is a balanced middle ground between manual coding and no-code as its users can still add code over auto-generated code. No-code is also a RAD approach and is often treated as a subset of the modular plug-and-play, lowcode development approach. While in low-code there is some handholding done by developers in the form of scripting or manual coding, no-code has a completely ( ) approach, with100% dependence on visual tools. A−low-code−application−platform−(LCAP)−—−also−called−a−low-code−development−
platform (LCDP) —−contains−an−integrated−development−environment−(IDE)−with−( ) features like APIs, code templates, reusable plug-in modules and graphical connectors to automate a significant percentage of the application development process. LCAPs are typically available as cloud-based Platform-as-a-Service (PaaS) solutions. A low-code platform works on the principle of lowering complexity by using visual tools and techniques like process modeling, where users employ visual tools to define workflows, business rules, user interfaces and the like. Behind the scenes, the complete workflow is automatically converted into code. LCAPs are used predominantly by professional developers to automate the generic aspects of coding to redirect effort on the last mile of ( ).
A. reusable           B. built-in                 C. existed            D. well-konwn

试题七十四 答案: B

解析: 低代码应用程序平台−(LCAP)−也称为低代码开发平台−( LCDP),包含一个集成开发环境(IDE),具有API 、代码模板等内置功能,可重复使用的 插件模块和图形连接器,使大部分应用程序开发过程自动化。因此B选项最符合题意

A. reusable :可重用

 B. built-in :内置

C. existed :存在

D. lwell-konwn :众所周知


试题七十五

(第 5 空)Low-code and no code software development solutions have 
emerged as viable and convenient alternatives to the traditional development process. 
Low-code is a rapid application development (RAD) approach that enables automated code 
generation through ( ) building blocks like drag-and-drop and pull-down menu interfaces. This( ) 
allows low-code users to focus on the differentiator rather than the common denominator of programming. Low-code is a balanced middle ground between manual coding and no-code as its 
users can still add code over auto-generated code. No-code is also a RAD approach and is often treated as a subset of the modular plug-and-play, lowcode development approach. While in low-code there is some handholding done by developers in the form of scripting or manual coding, no-code has a completely ( ) approach, with100% dependence on visual tools. 
A−low-code−application−platform−(LCAP)−—−also−called−a−low-code−development−
platform (LCDP) —−contains−an−integrated−development−environment−(IDE)−with−( ) features like APIs, code templates, reusable plug-in modules and graphical connectors to automate a significant percentage of the application development process. LCAPs are typically available as cloud-based Platform-as-a-Service (PaaS) solutions. 
A low-code platform works on the principle of lowering complexity by using visual tools and techniques like process modeling, where users employ visual tools to define workflows, business rules, user interfaces and the like. Behind the scenes, the complete workflow is automatically converted into code. LCAPs are used predominantly by professional developers to automate the generic aspects of coding to redirect effort on the last mile of ( ).

A. delivery             B. automation            C. development           D. success

试题七十五 答案: C

解析: LCAP 主要由专业开发人员使用,自动化编码的通用方面, 以便将精力集中在开发的最后阶段。因此C选项最符合题意

A. delivery :交付

B. automation :自动化

C. development :开发

D. success :成功

下午案例题

试题一

【说明】

随着农业领域科学种植的发展,需要对农业基地及农事进行的信息化管理,为租户和农户等人员提供种植相关服务.现欲开发农事管理服务平台.其主要功能是:

(1)人员管理平台管理员管理租户:租户管理农户并为其分配负责的地块,租户和农户以人员类型区分

(2)基地管理户填写基地名称、地域等描述信息在显示的地图上绘制地块

(3)种植管理租户设定作物及其从种植到采收的整个农事过程包括农事活动及其实施计划.农户根据相应农事过程提醒进行农事活动并记录。系统会在设定时间向农户进行农事提醒,对逾期未实施活动向租户发出逾期告警

(4)投入品管理租户统一维护化肥杀虫剂等投入品信息农户在农事活动中设定投入品的实际消耗

(5)信息服务:用户按查询条件发起农事信息请求对相关地块农事活动实施情况(如与农事过程比对)等农事信息进行第选、对比和统计等处理.并将响应信息进行展示.系统也给其他第三方软件提供APP接口,通过接口访问的方式提供账号密码和查询条件发起农事信息请求返回特定格式的农事信息,无查询条件时默返回账号下所有信息多查询条件时返回满足全部条件的信息。

现采用结构化方法对农事管理服务平台进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图

问题1:使用说明中的词语,给出图1-1中的突体E1一E4的名称

E1:平台管路员

E2:农户

E3:租户

E4:用户

解析:

E1:根据 "(1)人员管理。平台管理员管理租户" 的描述,并结合图1-2 0层数据图中 E1 -> P1 信息,因此判断出 E1 是平台管理员。

E3: 根据 "(2)基地管理。租户填写基地名称、地域等描述信息,在显示的地图上绘制地块 " 的描述,并结合图1-2 0层数据图中 E3 -> P2 信息,因此判断出 E3 租户。

E2:根据 "(3)种植管理。  .....系统会在设定时间向农户进行农事提醒,对逾期未实施活动向租户发出逾期警告。" 的描述,其中关键句:系统向农户进行农事提醒,并结合图1-2 0层数据图 P3 -> E2 信息,因此可以判断出 E2 是农户。

E4:根据 "(5)信息服务。 .....系统也给其他第三方软件提供 APP 接口,通过接口访问的方式,提供账号,密码和查询条件发起农事信息请求 ....." 的描述,第三方软件可以发起农事信息请求,并结合图1-2 0层数据图 E4 -> P5 信息,因此可以判断出 E4 是第三方软件,当题目描述中有提及的名词需要格外留意。

问题2:使用说明中的词活,给出图1-2中数据存储D1-D4的名称

D1:用户信息表

D2:基地及地块数据表

D3:农事过程表

D4:农事活动表

解析:

D1:与 D1 关联的是 P1 即人员管理,根据题目 "(1)人员管理。...租户和农户以人员类型区分 " 以及图1-2 0层数据图中 E3 -> P1 和 E1 -> P1 分别将租户信息和农户信息输入 P1 进行人员管理,虽然题目并未明确给出 D1 的具体名称,但经过上述判断亦可知 D1 用户信息表 或 人员表。

D2:根据 "(2)基地管理 和(3)种植管理" 的描述未得到直接且明确的信息,但从图1-2 0层数据图中的 P2 -> D2 和 D2 -> P3 的数据流可知,经加工 P2 后输出基地及地块数据存入 D2,P3 能够从 D2 取出地块信息作为输入,因此可以推断出 D2 是基地及地块数据表。

D3、D4:根据 "(3)种植管理" 这段描述未得到直接且明确的信息,仍然需要从图1-2 0层数据图去寻找解题关键,P3 - > D3 种植管理输出农事过程存储至 D3,P3 -> D4 种植管理输出农事活动存储至 D4,因此可以推断出 D3 是农事过程表,D4 是农事活动表。

问题3:根据说明和图中术语补充1-2中缺失的数据流及其起点和终点

数据流名称    起点    终点
投入品消耗    D4    P4
地块信息    D2    P5
农事活动信息    D4    P5
农事过程信息    D3    P5

解析:

首先根据原则 1:父图与子图平衡原则,对比两张图后,实体与农事管理服务平台未有缺失的数据流,说明后续判断中绝不会有从实体指向平台缺失数据流,也不会有从平台指向实体的缺失数据流。需要根据原则 2 继续判断,图1-2 0层数据流图,五个加工既有输入数据流也有输出数据流,继续使用原则 3 判断,此时需要将题目逐词逐句精读还原子图,精读并对比子图(1)~(3)并未有缺失数据流,根据 "(4)投入品管理。租户统一维护化肥,杀虫剂等投入品信息。农户在农事活动中设定投入品的实际消耗" 因此缺失数据流 "投入品实际消耗 D4 -> P4";根据 "(5)信息服务。....对相关地块农事活动实施情况(如与农事过程比对)等农事信息进行筛选、对比和统计等处理..." 的描述,提及关键词地块、农事活动、农事过程,但子图 P5 并未有这些数据流,因此缺失数据流:地块信息 D2 -> P5、农事过程信息 D3 -> P5、农事活动信息 D4 -> P5。

问题4:根据说明.给出”农事信息请求"数据流的组成

账号、密码、查询条件

解析:

根据 "(5)信息服务。...系统也给其他第三方软件提供 APP 接口,通过接口访问的方式,提供账号,密码和查询条件发起农事信息请求...." 的描述可知,第三方软件进行 "农事信息请求" 的数据流的组成需要:账号、密码、查询条件

试题二

【说明】

某新能源汽车公司为了提升效率。需开发一个汽车零件采购系统请完成系统的数据库设计

[概念结构设计]

(1)记录供应商的信息包括供应商的名称地地和一个电

(2)记录零件的信息包括零件的编码名称知价格

(3)纪录车型信息,包括车型的编号名称和规格

(4)记录零件采购信息某个车型的某种零件可以从多家供应商采购,某种零件也可以被多个车型采用,某家供应商也可以供应多种零件,还包括采购数量和采购日期

[逻辑结构设计]

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

供应商(名称,地址,电话)

零件(编码各称,价格)

车型(编号,各称,规格)

采购(车型编号,供应商名称,(a),(b),采购日期)

问题1:根据描进补充图1的实体联系图(不增加新的实体)

解析:
根据"记录零件采购信息,某个车型的某种零件可以从多家供应商采购,某种零件也可以被多个车型采用,某家供应商也可以供应多种零件,还包括采购数量和采购日期"的描述可得,供应商和车型和零件的是*:*:*关系,将供应商、车型、零件与采购连在一起,线段上标记*;联系类型"采购"有采购数据和采购日期属性因此这两个属性也必须绘制在E-R图中。

问题2:补充逻结构设计结果中的(a),(b)两处空缺并标注主键和外键完整性约束

解析:
根据"记录零件采购信息,某个车型的某种零件可以从多家供应商采购,某种零件也可以被多个车型采用,某家供应商也可以供应多种零件,还包括采购数量和采购日期"的描述可得,供应商和车型和零件的是*:*:*关系,将供应商、车型、零件与采购连在一起,线段上标记*;联系类型"采购"有采购数据和采购日期属性因此这两个属性也必须绘制在E-R图中。

问题3:该汽车公司现新增如下需求:记录车型在全国门店的销售情况,门店信息包括门店的编号地址和电话,销售包括销售数量和销售日期等。 对原有设计进行以下修改以实现该需求:

(1)在图1中体现门店信息及其车型销售情况、并标明新增的实体和联系及其心要属性

(2)给出新增加的关系模式并标注主键和外键完整性约束

解析:

根据题目描述 "记录车型在全国门店的销售情况",因此 E-R 图需要新增门店实体,门店包含属性门店的编号,地址和电话。门店和车型的关系是多对多( * :*)联系是销售包含销售日期、销售数量属性。

多对多关系无法直接表示,所以需要通过引入一个关系模式来解决这种问题,关系模式的主键即为多方的主键组合,多方主键即为采购的外键。门店包含属性门店的编号,地址和电话销售,其中编号为主键没有外键;销售关系模式的主键包含车型编号,门店编号,这里需要特判主键是否需要包含销售日期,假设主键为(车型编号,门店编号), A 客户购买了 B 门店的 C 车型,该数据将被记录到销售表中,此刻又有一位 D 客户购买了 B 门店的 C 车型,系统需要向销售表插入该数据,但此刻却插入不了,因此销售的主键应该包含销售日期。

试题三

【说明】

某高校图书馆购买了若千学术资源的镜像数据库(MinorDB)资源,现要求开发一套数字图书馆(Digitallibrary)系统,面向校内用户(User)提供学术资源(Resoure)的浏览检索和下载服务系统的主要要求描述如下:

(1)系统中存储了每个镜像数据库的基本信息,包括:数据库名称,访问地址,数据库属性以及数据库简介等信息,用户进入某个镜像数据降后,可以浏览检索以及下载其中的学术资源。

(2)学术资源包括会议论文(ConferencePaper)、期刑论文(JoumalArtide)以及学位(Thesis)等:系统中存储了每个学术资源的题名、作者、发表时间、来源(哪个镜像数据库)、被引次数、下载次数等信息。对于会议论文,还需记录会议名称,召开时间以及召开地点;同一次会议的论文被收录在会议集(Proceeding)中。对于期刊论文,还需记录期刊名称,出版月份期号以及主办单位;同一期号的论文被收录在一本期刊(Edition)中。对于学位论文,记录了学位类别(博士硕士): 毕业学校,专业及指导教师。会议集包含发表在该会议(在某个特定时间段,特定地点召开)上的所有文章。期刊的每一期在特定时间发行,其中包含若千篇文章。

(3)系统用户(User)包括在校学生(Student),教师(Teacher以及其他在职人员(Staf)。用户使用学校的统一身份认证登录系统后,使用系统提供的各项服务。

(4)系统提供多种资源检索的方式,主要包括:按照资源的题名检索(SearchbvTite),按照作者名称检票(SearchByAathor),按照来源检索(SearchBy Source)等。

(5)用户可以下载资源,系统记录每个资源被下载的次数现采用面向对象分析与设计方法开发该系统,得到如图1所示的用例图以及图2所示的初始类图

图1 用例图

图2 类图

问题1:根据说明中的描述,给发图2中的C1-C8所对应向类名

C1:Resource或学术资源

C2:Conference Paper或会议论文

C3:JournalArticle或期刑论文

C4:Thesis或学位

C5:User或系统用户

C6:Student或在校学生

C7:Teacher或教师

C8:Staff或其他在职人员

(注:以上中英文均可,且不限顺序)

解析:根据题目描述 " 学术资源包括会议论文(ConferencePaper)、期刑论文(JounalArticle)以及学位论文 (Thesis)等  "、"系统用户(User)包括在校学生(Student),教师(Teacher)以及其他在职人员(Staff)"、"...同一次会议的论文被收录在会议集(Proceeding)中 "...同一期号的论文被收录在一本期刊(Edition)中",又根据类图分析,C1 和 C2、C3、C4 是泛化关系,C5 和 C6、C7、C8 是泛化关系,C5 可以检索资源(Search),C2 和 Proceeding、C3 和 Edition 是聚合关系,根据上面信息很容易推测出 C1 ~ C8 所对应的类名。

问题2:根据说明中的描述,给出图2的类C1一C4的关键属性

C1:题名、作者、发表时间、来源、被引次数、下载次数

C2:会议名称,召开时间、召开地点

C3:期刊名称、期号、主办单位

C4:毕业学校,专业、指导老师

问题3:在该系统的开发过程中遇到了新的要求:用户能够在系统中对其所关注的数字资源注册他引通知,若该资源的他引次数发生变化,系候可以及时通知该用户,为了实现这个新的要求,可以在图2所系的类图中增加哪种设计模式?用150字以内文字解释选择该模式的原因。

增加观察者模式

原因:观察者模式定义对象间的一对多的关系关系,当一个对象的对象状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

试题四

【说明】

在某系统中,类interval代表由下界(lower bound)和上界(upper bound)定义的区间。要求采用不同的格式显示区间范围。如[lower bound.upper bound]:[lower bound...upper bound];[lower bound-upper bound]等现采用策略(strategy)模式实现该要求,得到如图5-1所示的类图。

import java.util.*
enUm TYPE { COMMA, DOTS, LINE};
interface Printstrategy {
    (1)
}
class Interval {
    private double lowerBound;
    private double upperBound;
    public Interval(double p lower,double p_upper){
        lowerBound =plower;upperBound=pupper;
    }

    public void printInterval(Printstrategy ptr){
        (2)
    }
    public double getLower(){ return lowerBound;}
    public double getupper(){ return upperBound;}
}

class PrintIntervalsComma implementsPrintstrategy {
    public void doPrint(Interval val){
        System.out.println("[" + val.getLower()+"," + val.getUpper()+ "]");
    }
}

class PrintIntervalsDots implements Printstrategy{
    public void doPrint(Interval val){
        System.out.println("[" + val.getLower()+ "…" + val.getUpper()+ "]");
    }
}

class PrintIntervalsLine implements Printstrategy {
    public void doPrint(Interval val){
        System.out.println("[" + val.getLower()+ "_" + val.getUpper()+ "]");
    }
}

class Strategy {
    public static PrintStrategy getstrategy(TYPE type){
        PrintStrategy st =null;
        switch(type){
            case COMMA:
                (3)
                break;
            case DOTS:
                (4)
                break;
            case LINE:
                (5)
                break;
        }
        return st;
    }

    public static void main(string[] args){
        Interval a = new Interval(1.7.2.1);    
        a.printInterval(getStrategy(TYPE.COMMA));
        a.printInterval(getStrategy(TYPE.DOTS));
        a.printInterval(getStrategy(TYPE.LINE));
    }
}

(1)void doPrint (interval val)

(2)pr.doPrint(this)

(3)st= new printintervalscomma()

(4)st = new prinIntervalsDots()

(5)st = new printIntervalsLine()

试题五

【说明】

在某系统中,类interval代表由下界(lower bound)和上界(upper bound)定义的区间。要求采用不同的格式显示区间范围。如[lower bound.upper bound]:[lower bound...upper bound];[lower bound-upper bound]等现采用策略(strategy)模式实现该要求,得到如图6-1所示的类图。

#include
using namespace std;
class Printstrategy {
    public:
    (1);
}
class Interval {
    private:
    double lowerBound;
    double upperBound;

public:
    Interval(double P_lower,double p_upper){
        lowerBound=p lower;
        upperBound=P_upperj;
    }
    void PrintInterval(print strategyprt){
        (2);
    }
    double getlower(){
        return lowerBoundy;
    }
    double getUpper{
        return upperBound;
    }
}

class PrintIntervalsComma:public Printstrategy{
    public:
        void doPrint (Interval *val){
        }
};

class PrintIntervalsDots:public Printstrategy{
    public:
        void doPrint(Interval *val){
        }
};

class PrintIntervalsLine:public Printstrategy{
    public:
        void doPrint(Interval *val){
        }

    enum TYPE{ COMMA, DotS, LINE }

    Printstrategy* getstrategy(int type){
    PrintStrategy *st;
    switch(type){
        case COMMA:
        (3);
        break;
        case Dots:
        (4);
        break:
        Case LINE:
        (5);
        break;
        }
        return st;
    }

    int main(){
        Interval a(1.7,2.1);
        a.PrintInterval(getstrategy(COMMA));
        a.PrintInterval(getstrategy(Dots));
        a.PrintInterval(getstrategy(LINE));
    }
}

(1)virtual void doPrint(Interval*val)=0

(2)prt->doPrint(this);

(3)st=new PrintIntervalsComma()

(4)st=new PrintIntervalsDots()

(5)st=new PrintIntervalsLine()

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值