上午
题目:在CPU中,用( )给出将要执行的下一条指令在内存中的地址。
选项:[{"A":"程序计数器","B":"指令寄存器","C":"主存地址寄存器","D":"状态条件寄存器"}]
答案:[['A']]
解析:A选项程序计数器PC:存储下一条要执行指令的地址。本题选择A选项。B选项指令寄存器IR:存储即将执行的指令。C选项主存地址寄存器MAR:用来保存当前CPU所访问的内存单元的地址。D选项状态条件寄存器PSW:存状态标志与控制标志 。
题目:以下关于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选项的说法是正确的。
题目:采用DMA方式传送数据时,每传送一个数据都需要占用一个( )。
选项:[{"A":"指令周期","B":"总线周期","C":"存储周期","D":"机器周期"}]
答案:[['C']]
解析:DMA是直接内存存取,传送数据的时间只与内存相关,与CPU的时间无关。
题目:以下关于闪存(Flash Memory)的叙述中,错误的是( )。
选项:[{"A":"掉电后信息不会丢失,属于非易失性存储器","B":"以块为单位进行删除操作","C":"采用随机访问方式,常用来代替主存","D":"在嵌入式系统中可以用Flash来代替ROM存储器"}]
答案:[['C']]
解析:闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位,区块大小一般为256KB到20MB。闪存是电子可擦除只读存储器(EEPROM)的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。由于其断电时仍能保存数据,闪存通常被用来保存设置信息。闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM,也不能替换主存,因此C选项错误。但是在嵌入式中,可以用闪存代替ROM存储器。
题目:若磁盘的转速提高一倍,则( )。
选项:[{"A":"平均存取时间减半","B":"平均寻道时间加倍","C":"旋转等待时间减半","D":"数据传输速率加倍"}]
答案:[['C']]
解析:磁盘的平均存取时间、数据传输速率与磁盘转速以及移臂调度时间都相关,所以无法直接通过磁盘的转速提高一倍就直接提高效率。磁盘的平均寻道时间与磁盘转速无关,至于移臂调度有关,也无法因此加倍。只有C选项中,磁盘的旋转延迟时间至于磁盘转速相关,转速提高一倍,其时间会减半。
题目:异常是指令执行过程中在处理器内部发生的特殊事件,中断是来自处理器外部的请求事件。以下关于中断和异常的叙述中,正确的是( )。
选项:[{"A":"“DMA传送结束”、“除运算时除数为0”都为中断","B":"“DMA传送结束”为中断,“除运算时除数为0”为异常","C":"“DMA传送结束”为异常、“除运算时除数为0”为中断","D":"“DMA传送结束”、“除运算时除数为0”都为异常"}]
答案:[['B']]
解析:DMA处理过程由DMAC负责,传送后会给CPU发送通知,此时属于处理器外部事件,因此属于中断。异常指当前运行指令引起的中断事件。包括错误情况引起的故障,如除零算数错误,缺页异常;也包括不可恢复的致命错误导致的终止,通常是一些硬件错误。
题目:下列协议中,属于安全远程登录协议的是( )。
选项:[{"A":"TLS","B":"TCP","C":"SSH","D":"TFTP"}]
答案:[['C']]
解析:A选项:TLS安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性。B选项:TCP是可靠的传输层协议,与安全无关。C选项:SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。本题选择C选项。D选项:TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
题目:下列攻击类型中,( )是以被攻击对象不能继续提供服务为首要目标
选项:[{"A":"跨站脚本","B":"拒绝服务","C":"信息篡改","D":"口令猜测"}]
答案:[['B']]
解析:A选项:跨站脚本(cross-site scripting,XSS),一种安全攻击,其中,攻击者在看上去来源可靠的链接中恶意嵌入译码。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。不影响服务的提供。B选项:拒绝服务,对信息或其它资源的合法访问被无条件地阻止,会让服务器拒绝提供服务。本题选择B选项。C选项:信息篡改,指主动攻击者将窃听到的信息进行修改(如删除和/或替代部分或者全部信息)之后再将信息传送给原本的接受者。与提供服务无关。D选项:口令猜测,攻击者攻击目标时常常把破译用户的口令作为攻击的开始。只要攻击者能猜测或者确定用户的口令,他就能获得机器或者网络的访问权,并能访问到用户能访问到的任何资源。与提供服务无关。
题目:下列算法中属于非对称加密算法的是( )。
选项:[{"A":"DES","B":"RSA","C":"AEC","D":"MD5"}]
答案:[['B']]
解析:典型的对称加密算法:DES,3DES,AEC等。典型的非对称加密算法:RSA,ECC等。本题选B选项。典型的摘要算法:SHA,MD5等。
题目:SQL是一种数据库结构化查询语言,SQL注入攻击的首要目标是( )。
选项:[{"A":"破坏Web服务","B":"窃取用户口令等机密信息","C":"攻击用户浏览器,以获得访问权限","D":"获得数据库的权限"}]
答案:[['D']]
解析:SQL注入攻击,就是通过把SQL命令插入到 Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。其首要目的是获取数据库访问权限。
题目:通常使用( )为IP数据报文进行加密。
选项:[{"A":"IPSec","B":"PP2P","C":"HTTPS","D":"TLS"}]
答案:[['A']]
解析:A选项:IPSec工作于网络层,为IP数据报文进行加密。B选项:PP2P工作于数据链路层,用于链路加密。C选项:HTTPS是HTTP与SSL的结合体,为传输层以上层次数据加密。D选项:TLS安全传输层协议用于在两个通信应用程序之间提供保密性和数据完整性。
题目:根据《计算机软件保护条例》的规定,对软件著作权的保护不包括( )。
选项:[{"A":"目标程序","B":"软件文档","C":"源程序","D":"开发软件所有的操作方法"}]
答案:[['D']]
解析:《计算机软件保护条例》保护的是软件程序以及文档,其中软件程序包括源程序和目标程序。开发软件所用的思想、处理过程、操作方法或者数学概念不受软件著作权保护。本题选择D选项。
题目:甲、乙两互联网公司于2020年7月7日就各自开发的库存管理软件分别申请“宏达”和“鸿达”商标注册,两个库存管理软件相似,甲第一次使用时间为2019年7月,乙第一次使用时间为2019年5月,此情景下,( )能获准注册。
选项:[{"A":" “宏达”","B":"“宏达”和“鸿达”均","C":"由甲、乙协商哪个","D":"“鸿达”"}]
答案:[['D']]
解析:本题考查的是商标权确定知识产权人的过程。根据我国《中华人民共和国商标法》第三十一条 两个或者两个以上的商标注册申请人,在同一种商品或者类似商品上,以相同或者近似的商标申请注册的,初步审定并公告申请在先的商标;同一天申请的,初步审定并公告使用在先的商标,驳回其他人的申请,不予公告。即首先第一原则是,谁先申请谁获得,本题中甲乙双方于2020年7月7日申请注册,属于同时申请。其次,同时申请时,谁先使用谁获得,根据题干甲于2019年7月使用,乙于2019年5月使用,乙先使用,因此最终成功注册是乙的“鸿达”商标。本题选择D选项。如果无法区分谁先使用,则协商归属,协商不成可以抽签决定。
题目:A经销商擅自复制并销售B公司开发的OA软件光盘已构成侵权,C企业在未知情形下从A处购入100张并已安装使用,在C企业知道了所使用的软件为侵权复制的情形下,以下说法正确的是( )。
选项:[{"A":" C企业的使用行为侵权,须承担赔偿责任","B":" C企业的使用行为侵权,支付合理费用后可以继续使用这100张软件光盘","C":" C企业的使用行为不侵权,可以继续使用这100张软件光盘","D":" C企业的使用行为不侵权,不需承担任何法律责任"}]
答案:[['B']]
解析:根据《计算机软件保护条例》第三十条 软件的复制品持有人不知道也没有合理理由应当知道该软件是侵权复制品的,不承担赔偿责任;但是,应当停止使用、销毁该侵权复制品。如果停止使用并销毁该侵权复制品将给复制品使用人造成重大损失的,复制品使用人可以在向软件著作权人支付合理费用后继续使用。本题中C企业已安装使用,“如果停止使用并销毁该侵权复制品将给复制品使用人造成重大损失的,复制品使用人可以在向软件著作权人支付合理费用后继续使用。”,该行为侵权,支付费用后可继续使用。本题选择B选项。
题目:下列关于结构化分析方法的数据字典中加工逻辑的叙述中,不正确的是( )。
选项:[{"A":" 对每一个基本加工,应该有一个加工逻辑","B":" 加工逻辑描述输入数据流变换位输出数据的加工规则","C":" 加工逻辑必须描述实现加工的数据结构和算法","D":" 结构化语言,判定树和判定表可以用来表示加工逻辑"}]
答案:[['C']]
解析:本题是对数据字典中加工逻辑相关概念的考查。数据字典包含4类条目:数据流、数据项、数据存储和基本加工。其中基本加工条目是用来说明DFD中基本加工的处理逻辑的,由于下层的基本加工是由上层加工分解而来,只要有了基本加工的说明就可理解其他加工。对每一个基本加工,都应该有一个加工逻辑来说明。A选项描述正确。加工描述了输入数据流到输出数据流之间的编号,也就是输入数据流经过什么处理后变成了输出数据流。加工逻辑对其进行说明,也就是描述了改过程的加工规则,B选项描述正确。加工逻辑是位于需求分析阶段,此时具体的数据结构和算法并没有进行设计,C选项描述错误。本题选择C选项。常用的加工逻辑描述方法有结构化语言、判定表和判定树三种,D选项描述正确。
题目:在软件设计阶段进行模块划分时,一个模块的( )。
选项:[{"A":" 控制范围应该在其作用范围之内","B":" 作用范围应该在其控制范围之内","C":" 作用范围与控制范围互不包含","D":" 作用范围与控制范围不受任何限制"}]
答案:[['B']]
解析:本题是对模块设计原则的考查。模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集合。模块作用域:指受该模块内一个判定所影响的所有模块的集合。模块的作用域应该在控制域范围之内,本题选择B选项。
题目:下面是一个软件项目活动图,其中顶点表示项目里程碑,连接顶点的边表示包含的活动,边上的权重表示活动的持续时间(天),则关键路径长度为( ),在该活动图中,活动( )晚16天开始不会影响上班。
选项:[{"A":" 20","B":" 25","C":" 27","D":" 48"},{"A":" AC","B":" BE","C":" FI","D":" HJ"}]
答案:[['D'],['B']]
解析:本题是对进度网络图分析的考查。将各个活动的最早开始和完成时间、最晚开始和完成时间、持续时间和总时差分别进行标注,结果如下:其中最长路径为A-D-F-H-J,即为关键路径,其时间为完成整个项目的最短时间,也就是项目工期,结果为48天,选择D选项。第二空关于总时差的分析:A选项AC的总时差是8天,超过8天延误会推迟工期;B选项BE的总时差是21天,延误16天并没有超过21天,不会影响最终工期,本题选择B选项。C选项FI的总时差为14天,超过14天延误会推迟工期;D选项HJ是关键路径活动,总时差为0,不能有任何延误。
题目:下列关于风险的叙述中,不正确的是( )。
选项:[{"A":"风险是可能发生的事件","B":"如果能预测到风险,则可以避免其发生","C":"风险是可能会带来损失的事件","D":"对于风险进行干预,以期减少损失"}]
答案:[['B']]
解析:风险是可能发生的事件,并且可能会带来损失,预测到风险后,可以进行干预以期减少损失,但是无法避免。B选项的描述是错误的。
题目:算数表达式a*(b+c/d)-e的后缀式为( )。
选项:[{"A":" a b c d/+*e-","B":" a b c de*+/-","C":" a*b+c/d-e","D":" ab*cd/+e-"}]
答案:[['A']]
解析:该表达式的树形结构如下: 其后序遍历即为后缀表达式为:abcd/+*e-本题选择A选项。
题目:以编译方式翻译C/C++源程序的过程中,类型检查在( )阶段处理
选项:[{"A":"词法分析","B":"语义分析","C":"语法分析","D":"目标代码生成"}]
答案:[['B']]
解析:词法分析阶段处理的错误:非法字符、单词拼写错误等。语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误。静态语义分析阶段(即语义分析阶段)处理的错误:运算符与运算对象类型不合法等错误。本题选择语义错误。目标代码生成(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误等。
题目:Java语言符合的特征有( )和自动的垃圾回收处理①采用即时编译②采用静态优化编译③对象在堆空间分配④对象在栈空间分配
选项:[{"A":"①③","B":"①④","C":"②③","D":"②④"}]
答案:[['A']]
解析:JAVA是解释型语言,可以生成中间代码后再边解释为目标代码边执行,也就是即时编译,可以根据运行机器优化代码,采用的是动态优化编译。所以①的说法正确,②的说法错误。Java 程序最初都是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁,就会把这些代码认定为“ 热点代码 ”(Hot Spot Code),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成本地机器码,并以各种手段尽可能地进行代码优化,这个过程就叫即时编译,运行时完成这个任务的后端编译器被称为即时编译器。JAVA的栈空间只存放基本类型、引用类型变量和方法,而堆中存储实例对象。③的说法正确,④的说法错误。本题综合选择A选项。
题目:云计算有多种部署模型(Deployment Models)。若云的基础设施是为某个客户单独使用而构建的,那么该部署模型属于( )。
选项:[{"A":"公有云","B":"私有云","C":"社区云","D":"混合云"}]
答案:[['B']]
解析:A选项公有云通常指第三方提供商为用户提供的能够使用的云,公有云一般可通过 Internet 使用,可能是免费或成本低廉的,公有云的核心属性是共享资源服务。B选项私有云(Private Clouds)是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制。该公司拥有基础设施,并可以控制在此基础设施上部署应用程序的方式。本题针对某个客户单独使用,属于B选项私有云。C选项社区云一般指社群云。社群云(Community cloud),也称社区云,是由几个组织共享的云端基础设施,它们支持特定的社群,有共同的关切事项,例如使命任务、安全需求、策略与法规遵循考量等。D选项混合云融合了公有云和私有云,是近年来云计算的主要模式和发展方向。我们已经知道私有云主要是面向企业用户,出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到了既省钱又安全的目的。
题目:若计算机系统的字长为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个字。
题目:进程P有5个页面,页号为0-4,页面变换表及状态位、访问位和修改位的含义如下图所示,若系统给进程P分配了3个存储块,当访问的页面3不在内存时,应该淘汰表中页号为( )的页面
选项:[{"A":"0","B":"1","C":"2","D":"4"}]
答案:[['A']]
解析:被淘汰的页面首先必须在内存,也就是在0、2、4页面中进行选择。优先淘汰访问位为0的页面,此时0、2、4页面访问位都为1,无法判断。进一步淘汰的是修改位为0的页面,此时符合要求淘汰的是0号页面,选择A选项。
题目:进程P1、P2、P3、P4、P5和P6的前驱图如下所示:若用PV操作控制进程P1、P2、P3、P4、P5和P6开发执行的过程,需要设置6个信号量S1、S2、S3、S4、S5和S6,且信号量S1~S6的和值都等于零。下面的进程执行图中a和b处分别填写( ),c和d处应分别填写( ),e和f处应分别填写( )。
选项:[{"A":"V(S1)和P(S2)V(S3)","B":"P(S1)和P(S2)V(S3)","C":"V(S1)和V(S2)V(S3)","D":"P(S1)和V(S2)V(S3)"},{"A":"P(S2)和P(S4)","B":"V(S4)和P(S3)","C":"P(S2)和V(S4)","D":"V(S2)和V(S4)"},{"A":"P(S4)V(S5)和V(S6)","B":"P(S4)V(S5)和P(S6)","C":"P(S4)P(S5)和V(S6)","D":"P(S4)P(S5)和P(S6)"}]
答案:[['D'],['B'],['C']]
解析:本题是常规的前趋图与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选项。
题目:关于螺旋模型,下列陈述中不正确的是( ),( )。
选项:[{"A":"将风险分析加入到瀑布模型中","B":"将开发过程划分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符","C":"适合于大规模、复杂且具有高风险的项目","D":"可以快速的提供一个初始版本让用户测试"},{"A":"支持用户需求的动态变化","B":"要求开发人员具有风险分析能力","C":"基于该模型进行软件开发,开发成本低","D":"过多的迭代次数可能会增加开发成本,进而延迟提交时间"}]
答案:[['D'],['C']]
解析:第一空选项中,可以快速提供一个初始版本给用户的是增量模型而不是瀑布模型。D选项描述错误。其他描述都是正确的。第二空选项中,在螺旋模型中过多的迭代次数会增加开发成本,C选项开发成本低的描述是错误的。其他描述都是正确的。
题目:模块A通过非正常入口转入模块B内部,则这两个模块之间是( )耦合
选项:[{"A":"数据","B":"公共","C":"外部","D":"内容"}]
答案:[['D']]
解析:数据耦合是通过参数表传递简单信息。公共耦合是多个模块访问同一个公共数据环境。外部耦合是一组模块访问同一个全局简单变量而没有通过参数表传递。内容耦合是一个模块直接访问另一个模块的内部数据;一个模块不通过正常入口转到另一个模块的内部;两个模块有一部分程序代码重叠;一个模块有多个入口。本题描述的是内容耦合。
题目:软件详细设计阶段的主要任务不包括( )。
选项:[{"A":"数据结构设计","B":"算法设计","C":"模块之间的接口设计","D":"数据库的物理设计"}]
答案:[['C']]
解析:软件详细设计阶段的主要任务包括:对模块内的数据结构进行设计;对数据库进行物理设计;对每个模块进行详细的算法设计;代码设计、输入/输出设计、用户界面设计等其他设计。软件概要设计阶段的主要任务包括(1) 软件系统总体结构设计,将系统划分成模块;确定每个模块的功能;确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结构的质量。(2) 数据结构及数据库设计。本题A、B、D属于详细设计阶段的任务,C选项属于概要设计阶段的任务,本题选择C选项。
题目:以下关于文档的叙述中,不正确的是( )。
选项:[{"A":"文档也是软件产品的一部分,没有文档的软件就不能称之为软件","B":"文档只对软件维护活动有用,对开发活动意义不大","C":"软件文档的编制在软件开发工作中占有突出的地位和相当大的工作量","D":"高质量文档对于发挥软件产品的效益有着重要的意义"}]
答案:[['B']]
解析:文档是开发中的重要工具,对开发有较大意义,B选项的说法是错误的。其他A、C、D的说法都是正确的。
题目:用白盒测试技术对下面流程图进行测试,至少采用( )个测试用例才可以实现路径覆盖。
选项:[{"A":"3","B":"4","C":"6","D":"8"}]
答案:[['A']]
解析:给程序流程图每个结点进行标号如下:图示中不同的路径为:①②;①③;①③④。需要满足路径覆盖,则测试用例至少需要3组,以(x,y;result)格式记录,则可以设计为:(0,3;result)--①②;(0,1;result)--①③;(0,0;result)--①③④本题选择A选项。
题目:软件可维护性是一个系统在特定的时间间隔内可以正常进行维护活动的概率。用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选项一般用来表示可靠性或可用性指标。
题目:某搜索引擎在交付后,开发人员修改了其中的索引方法,使得用户可以更快地得到搜索结果。这种修改属于( )维护
选项:[{"A":"正确性","B":"适应性","C":"完善性","D":"预防性"}]
答案:[['C']]
解析:在系统运行过程中,软件需要维护的原因是多样的,根据维护的原因不同,可以将软件维护分为以下四种:(1)改正性维护。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就称为改正性维护。(2)适应性维护。在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就称为适应性维护。(3)完善性维护。在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。更快地得到搜索结果,即提升了搜索引擎的性能,扩充功能或提升性能是完善性维护的工作,本题选择C选项。(4)预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护可定义为“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。
题目:面向对象分析时,执行的活动顺序通常是( )。
选项:[{"A":"认定对象、组织对象、描述对象的相互作用、确定对象的操作","B":"认定对象、定义属性、组织对象、确定对象的操作","C":"认定对象、描述对象间的相互作用、确定对象的操作、识别包","D":"识别类及对象、识别关系、定义属性、确定对象的操作"}]
答案:[['A']]
解析:本题考查面向对象分析的基本概念。面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。认定对象是指:在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的“名词”作为一个对象,这通常是研究问题定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象。实质性对象是系统稳定性的基础。例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系统中。组织对象含义是:分析对象间的关系,将相关对象抽象成类,其目的是为了简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑;如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。描述对象间的相互作用是:描述出各对象在应用系统中的关系。如一个对象是另一个对象的一部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。最后定义对象的操作和内部信息。本题选择A选项。
题目:采用面向对象方法进行系统设计时,不应该强迫客户依赖于他们不用的方法,接口属于客户,不属于它所在的类层次结构。即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这属于( )。
选项:[{"A":"单一责任","B":"开放-封闭","C":"接口分离","D":"里氏替换"}]
答案:[['C']]
解析:单一职责原则:设计目的单一的类。开放-封闭原则:对扩展开放,对修改封闭。里氏替换原则:子类可以替换父类。依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程。接口隔离原则:使用多个专门的接口比使用单一的总接口要好。不强迫客户依赖于他们不用的方法,即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。本题题干看起来类似于依赖倒置原则,但依赖倒置不涉及强迫客户依赖于他们不用的方法。本题描述的应该是接口隔离原则。本题选择C选项。
题目:假设Bird和Cat是Animal的子类,Parrot是Bird的子类,bird是Bird的一个对象,cat是Cat的一个对象,parrot是Parrot的一个对象。以下叙述中,不正确的是( )。假设Animal类中定义接口move(), Bird、Cat和Parrot分别实现自己的move (),调用move()时,不同对象收到同一消息可以产生各自不同的结果,这一现象称为( )。
选项:[{"A":"cat和bird可看作是Animal的对象","B":"parrot和bird可看作是Animal的对象","C":"bird可以看作是Parrot的对象","D":"parrot可以看作是Bird的对象"},{"A":"封装","B":"继承","C":"消息传递","D":"多态"}]
答案:[['C'],['D']]
解析:cat、bird、parrot都可看作是Animal的对象,parrot可以看作是Bird的对象。而bird可以看作是Parrot的对象也就是鸟是鹦鹉类的对象,显然不正确。第一空选择C选项。不同对象接收到相同消息给出不同结果,这是多态的描述,第二空选择D选项。封装:隐藏对象的属性和实现细节,仅对外公开接口(信息隐藏技术)。继承与泛化:复用机制(单重继承和多重继承),子类可以继承父类的一些属性和方法。消息和消息通信:对象之间进行通信的一种构造叫作消息。消息是异步通信的(消息传递:接收到信息的对象经过解释,然后予以响应)。
题目:当UML状态图用于对系统、类或用例的动态方面建模时,通常是对( )建模。以下UML状态图中,假设活动的状态是A,事件b=0发生并且a>5,发生条件是c状态到d状态的转换条件的是( ),D变为活动的状态,有关状态图的叙述中,不正确的是( )。
选项:[{"A":"系统的词汇","B":"反应型对象","C":"活动流程","D":"对象快照"},{"A":"一旦状态A的exit动作完成,或如果当前执行do动作,则终止执行","B":"一旦状态A和B的所有动作完成","C":"一旦正在进行的状态A完成","D":"一旦状态B的exit动作完成"},{"A":"动作可以在状态内执行,也可以在状态转换时执行","B":"当触发转换的事件发生并且转换没有指定的监护条件时,对象将离开当前状态,并且其do动作终止","C":"when (b=5)称为时间事件","D":"状态由事件触发"}]
答案:[['B'],['B'],['D']]
解析:当对系统、类或用例的动态方面建模时,通常是对反应型对象建模,第一空选择B选项。状态图通常包含简单状态和组合状态、转换(事件和动作)。状态是指对象的生命周期中某个条件或者某个状态,在此期间对象将满足某些条件、执行某些活动或等待某些事件,是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。嵌套在另外一个状态中的状态称为子状态(本题中的A、B为子状态),含有子状态的状态称为组合状态(也叫作超状态,C是组合状态)。状态C完成才会在when b=5[a>5]时,让D进入激活状态,当前状态为A,当A完成时进入状态B,状态B完成后才完成组合状态C。因此第二空应该选择B选项,需要状态A和B都完成。转换是两个状态之间的一种关系,表示对象将在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警戒(监护)条件满足时进入目标状态。动作是一个可执行的原子操作,是不可中断的,其执行时间可以忽略不计。转换由事件触发,而不是状态由事件触发,第三空D选项描述错误。
题目:股票交易中,股票代理(Broker)根据客户发出的股票操作指示进行股票的买卖操作,设计如下所示类图。该设计采用( )模式将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作,其中,( )声明执行操作的接口。该模式属于( )模式,该模式适用于:( )。
选项:[{"A":"命令(Command)","B":"观察者(Observer)","C":"状态(State)","D":"中介者(Mediator)"},{"A":"Operation","B":"sellOperation/BayOperation/ViewOperation","C":"Broker","D":"Stock"},{"A":"结构类型","B":"结构型对象","C":"创建类型","D":"行为型对象"},{"A":"一个对象必须通知其他对象,而它又不能假定其他对象是谁","B":"抽象出特执行的动作以参数化某对象","C":"一个对象的行为决定于其状态且必须在运行时刻根据状态改变行为","D":"一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象"}]
答案:[['A'],['A'],['D'],['B']]
解析:根据题干情景描述“将一个请求封装为一个对象,从而使得以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作”,此时使用的是命令模式。第一空选择A选项。其标准类图和基本情况如下:其中作为声明接口的应该是最高层次,根据图示应该为Operation,第二空选择A选项。命令模式属于行为型对象模式,第三空选择D选项。命令模式适用于:(1)抽象出待执行的动作以参数化某对象。(2)在不同的时刻指定、排列和执行请求。(3)支持取消操作。(4)支持修改日志。(5)用构建在原语操作上的高层操作构造一个系统。第四空选择B选项。A选项描述的是观察者模式,C选项描述的是状态模式,D选项描述的是中介者模式。
题目:设有描述简单算术表达的上下文无关文法如下,其中id表示单字母。E→E+T|TT→F*T|FF→id与使用该文法描述的表达式a+b*c*d相符的语法树为( ),下图所示有限自动机(DFA)是( )。
选项:[{"A":"
","B":"
","C":"
","D":"暂无"},{"A":"确定的有限自动机,它能识别以bab结尾的","B":"确定的有限自动机,他不能识别以bab结尾的","C":"非确定的有限自动机,他能识别以bab结尾的","D":"非确定的有限自动机,他不能识别以bab结尾的"}]
答案:[['A'],['D']]
解析:本题考查的是表达式和有限自动机相关内容。利用推导式构造语句a+b*c*d的过程如下:整理之后的语法树,结构如下:第一空选择A选项。第二空根据有限自动机判断,从初始状态开始,接收字符a可能会保持原状态不变,也可能会转入下一个状态,是不确定的,所以不确定的有限自动机。其次改自动机识别倒数第3个字符只有a,所以无法识别bab结尾的字符串,第二空选择D选项。
题目:函数foo、hoo的含义如下所示,函数调用hoo(a,x)的两个参数分别采用引用调用(call by reference)和值调用(call by value)方式传递,则函数调用foo(5)的输出结果为( )。
选项:[{"A":"2,5\t","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选项。
题目:如下图如下E-R图中,两个实体R1、R2之间有一个联系E,当E的类型为( )时必须将E转换成—个独立的关系模式?
选项:[{"A":"1:1","B":"1:*","C":"*:1","D":"*: *"}]
答案:[['D']]
解析:本题考查的是E-R转换为关系模式的转换规则。其中1:1和1:*类型的联系可以归并到实体中,而 *:*联系必须单独转换为1个独立的关系模式。本题选择D选项。
题目:给定关系R (U,F),其中U={A,B,C,D,E,H},F={A→B,B→DH,A→H,C→E}。关系有( ),F中( )。
选项:[{"A":"一个候选码A","B":"2个候选码A、B","C":"一个候选码AC","D":"两个候选码A、C"},{"A":"不存在传递依赖,但存在冗余函数依赖","B":"既不存在传递依赖,也不存在冗余函数依赖","C":"存在传递依赖A→D和A→H,但不存在冗余函数依赖","D":"存在传递依赖A→D和A→H,并且还存在冗余函数依赖"}]
答案:[['C'],['D']]
解析:第一空关于候选键分析,其中A和C是入度为0的属性,所以候选键集合必须包含AC组合键,本题选择C选项。第二空,本题A→B,B→DH,存在传递函数依赖A→DH,此时根据armstrong公理,可以分解得到A→D和A→H,此时F中A→H是冗余函数依赖。第二空选择D选项。
题目:某销售公司员工关系E(工号、姓名、部门名、电话、住址),商品关系C(商品号、商品名、库存数)和销售关系EC(工号、商品号、销售数、销售日期)。查询“销售部1”在2020年11月11日销售“HUWEI Mate40”商品的员工工号、姓名、部门名及其销售的商品名,销售数的关系代数表达式为π1,2,3,7,8( ( ) ⋈ ( ( ) ⋈ ( ) ) )
选项:[{"A":"σ3=销售部1(E)","B":"σ3=销售部1(C)","C":"σ3=‘销售部1’(E)","D":"σ3=‘销售部1’(C)"},{"A":"π2,3(σ2=‘HUWEI Mate40 ’(C))","B":"π1,2(σ2= ‘HUWEI Mate40 ’(C))","C":"π2,3(σ2=‘HUWEI Mate40 ’(EC))","D":"π1,2(σ2=‘HUWEI Mate40 ’(EC))"},{"A":"σ4=‘2020年11月11日’(C)","B":"σ3=‘2020年11月11日’(C)","C":"σ4=‘2020年11月11日’(EC)","D":"σ3=‘2020年11月11日’(EC)"}]
答案:[['C'],['B'],['C']]
解析:本题考查的是关系代数相关知识内容。本题看起来逻辑非常复杂,涉及到了3个关系表的联合使用,但结合选项来看,可以快速找到正确答案。首先对于第一空,选择的对象一定是表E或表C,而此时C是没有部门名的,因此筛选对象一定是表E,其次判断某个列的取值,需要用引号标注,排除错误格式A,本题选择的应该是C选项。接着对于第二空,选择的对象一定是表C或表EC,而此时EC是没有商品名的,因此筛选对象一定是表C,并且投影需要保留商品号和商品名,因此投影的列号是1和2,本题选择的应该是B选项。接着对于第二空,选择的对象一定是表C或表EC,而此时C是没有销售日期的,因此筛选对象一定是表EC,并且位于EC的第4列即列号为4,本题选择的应该是C选项。
题目:设有栈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选项。
题目:当二叉数中的结点数目确定时,( )的高度一定是最小的。
选项:[{"A":"二叉排序数","B":"完全二叉树","C":"线索二叉树","D":"最优二叉树"}]
答案:[['B']]
解析:完全二叉树是让二叉树的每一层的结点都尽可能全满,除了最底层,此时树的高度一定是最小的。排序二叉树可能会得到单枝树,每一层只有1个结点,此时树的高度可能最大。线索二叉树与二叉树遍历序列相关,高度并没有确定性,最优二叉树与结点的权值相关,构成的树的高度也是不确定的。本题选择B选项。
题目:( )是对稀疏矩阵进行压缩存储的方式。
选项:[{"A":"二维数组和双向链表","B":"三元组顺序表和十字链表","C":"邻接矩阵和十字链表","D":"索引顺序表和双向链表"}]
答案:[['B']]
解析:存储矩阵的一般方法是采用二维数组,其优点是可以随机地访问每一个元素,因而能够较容易地实现矩阵的各种运算。但对于稀疏矩阵而言,若用二维数组来表示,会重复存储了很多个0了,浪费空间,而且要花费时间来进行零元素的无效计算。所以必须考虑对稀疏矩阵进行压缩存储。稀疏矩阵的三元组表的顺序存储结构称为三元组顺序表,常用的三元组表的链式存储结构是十字链表。
题目:设用线性探查法解决冲突构造哈希表,且哈希函数为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选项。
题目:对于一个初始无序的关键字序列,在下面的排序方法中,( )第一趟排序结束后,一定能将序列中的某个元素在最终有序序列中的位置确定下来。①直接插入排序②冒泡排序③简单选择排序④堆排序⑤快速排序⑥归并排序
选项:[{"A":"①②③⑥","B":"①②③⑤⑥","C":"②③④⑤","D":"③④⑤⑥"}]
答案:[['C']]
解析:选择类排序,每一轮会选择最值(最大值或最小值)与第一个位置进行交换,此时确定第一个元素位置。③④都满足要求。冒泡排序,每一轮会让最值相邻交换直至放到最终的位置,②满足要求。快速排序,每一轮会根据基准元素划分左右数组,此时基准元素的位置可以确定,因此⑤也满足要求。其他排序方式每一轮只能确定元素的当前位置,不能确定该元素的最终位置。本题选择C选项。
题目:对数组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']]
解析:A数组初始构造如下:从最底层依次调整不符位置:此时满足大顶堆,此时序列记为:8、4、7、2、3、5、6、1。本题选择C选项。
题目:最大尺寸和问题描述为,在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(n2)","C":"O(n2lgn)","D":"O(n3)"}]
答案:[['A']]
解析:本题中将数组不断进行二分,这个过程的时间复杂度为O(log2n),划分后求解问题需要2个并列的for循环对划分后的数组进行求和比较,此时时间复杂度为O(n),划分和求和过程应该是嵌套的,所以时间复杂度综合为O(nlgn),本题应该选择A选项。其算法过程可以设计如下:int MaxSubSum(int *Array,int left ,int right){int sum=0;int i ;if(left==right){/*分解到单个整数,不可继续分解*/if(Array[left]>0)sum=Array[left];elsesum=0; //和小于等于0时,最大和记作0}/*if*/else{/*从left和right的中间分解数组*/int center=(left+right)/2; /*划分位置*/int leftsum=MaxSubSum(Array,left,center);int rightsum=MaxSubSum(Array,center+1,right);/*计算包含center的最大值,判断是情形1(前半段)--Array[1...n]的最大子段和与Array[1...n/2]的最大子段和相同、情形2(后半段)--Array[1...n]的最大子段和与Array[n/2+1...n]的最大子段和、还是情形3(跨越中间元素)--Array[1...n]的最大子段和为Array[i...j]的最大子段和,且1≤i≤n/2,n/2+1≤j≤n。*/int s1=0;int lefts=0;for(i=center;i>=left;i--){lefts+=Array[i];if(lefts<s1)s1=lefts;}/*for*/int s2=0;int rights=0;for(i=center+1;i<=right;i++){rights+=Array[i];if(rights>s2)s2=rights;}/*for*/sum=s1+s2;/*情形1*/if(sum<leftsum)suml=leftsum;/*情形2*/if(sum<lrightsum)suml=rightsum;}/*else*/return sum;}
题目:在求解某问题时,经过分析发现该问题具有最优子结构和重叠子问题性质。则适用( )算法设计策略得到最优解。若了解问题的解空间,并以广度优先的方式搜索解空间,则采用的是( )算法策略。
选项:[{"A":"分治","B":"贪心","C":"动态规则","D":"回溯"},{"A":"动态规则","B":"贪心","C":"回溯","D":"分支限界"}]
答案:[['C'],['D']]
解析:要想直接解决一个较大的问题,有时是相当困难的,分治法的设计思想是将一个难以解决的大问题分解成一些规模较小的相同问题,以便各个击破,分而治之。动态规划法与分治法类似,其基本思想也是将带求解问题分解为若干个子问题,先求解子问题再从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题,经分解得到的子问题往往不是独立的。若用分治法来解这类问题,则相同的子问题会被求解多次,以至于最后解决原问题需要耗费指数级时间。此时用一个中间表记录重复子问题的解,可以避免大量的重复计算。这就是动态规划法的基本思路。动态规划法的应用场景一般会出现“最优子结构”的描述,并且针对重复子问题的计算通过记录-查表,可以提高效率。本题第一空描述的是C选项动态规划法。贪心法也经常用于解决最优化问题,与之不同的是,贪心法在解决问题的策略上是仅根据当前已有的信息做出选择,而且一旦做出选择,无论未来如何都不会改变。也就是只考虑当前最优,不考虑全局最优。一般不涉及划分和求解重复子问题。回溯法可以系统地搜索一个问题的所有解或任意解。它在包含问题的解空间树中,按照深度优先的策略的策略,从根结点出发搜索解空间树。分支限界法类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法,但在一般情况下,分支限界法与回溯法的求解目标不同。分支限界法的求解目标是找出满足约束条件的一个解即可。由于求解目标不同,其探索方式与回溯法也不同,分支限界法以广度优先或以最小耗费优先的方式搜索解空间树。本题第二空描述的是D选项分支限界法。
题目:IPv6地址长度为( )bit。
选项:[{"A":"16","B":"32","C":"64","D":"128"}]
答案:[['D']]
解析:本题考查IPv6的基本概念。IPv6地址由128位二进制表示。
题目:在地址栏输入www.abc.com,浏览器默认的应用层协议是( )。
选项:[{"A":"HTTP","B":"DNS","C":"TCP","D":"FTP"}]
答案:[['A']]
解析:本题考查URL基本知识。在没有录入协议的情况下,URL默认是HTTP协议。本题选择A选项。
题目:使用电子邮件客户端向服务器发送邮件的协议是( )。
选项:[{"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)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
题目:以下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客户端手工向服务器进行注册。其他:ipconfig /all:显示本机TCP/IP配置的详细信息。ipconfig /renew:DHCP客户端手工向服务器刷新请求。ipconfig /showclassid:显示网络适配器的DHCP类别信息。ipconfig /setclassid:设置网络适配器的DHCP类别。ipconfig /renew “Local Area Connection”:更新“本地连接”适配器的由 DHCP 分配 IP 地址的配置。ipconfig /showclassid Local*:显示名称以 Local 开头的所有适配器的 DHCP 类别 ID。ipconfig /setclassid “Local Area Connection” TEST:将“本地连接”适配器的 DHCP 类别 ID 设置为 TEST。
题目:在网络系统设计时,不可能使所有设计目标都能达到最优,下列措施中最为合理的是( )。
选项:[{"A":"尽量让最低建设成本目标达到最优","B":"尽让最短的故障时间达到最优","C":"尽量让最大的安全性目标达到最优","D":"尽量让优先级较高的目标达到最优"}]
答案:[['B']]
解析:暂无。
题目:Designing object -oriented software is hard,and designing( )object -oriented software is even harder.You must find pertinent(相关的)objects,factor them into class at the right granularity,define class interfaces and inheritances,and establish key relationships among them.You design should be specific to the problem at hand but also( )enough to address future problems and requirements.You also want to avoid redesign,or at least minimize it.Experienced object -oriented designers will tell you that a reusable and flexible design is difficult if not impossible to get "right" the first time.Before a design is finished,they usually try to reuse it several times,modifying it each time.Yet experienced object-oriented designers do make good designs.Meanwhile new designers are( )by the options available and tend to fall back on non-object-oriented techniques they've used before.lt takes a long time for novices to learn what good object-oriented design is all about.Experienced designers evidently know something inexperienced ones don't.What is it?One thing expert designers know not to do is solve every problem from first principles.Rather, they reuse solutions that have worked for them in the past.When they find a good( ).They use it again and again.Such experience is part of what makes them experts.Consequently,you'll find( )patterns of classes and communicating objects in many object-oriented systems.
选项:[{"A":"runnable","B":"right","C":"reusable","D":"pertinent"},{"A":"clear","B":"general","C":"personalized","D":"customized"},{"A":"excited","B":"shocken","C":"surprised","D":"overwhelmed"},{"A":"tool","B":"component","C":"system","D":"solution"},{"A":"recurring","B":"right","C":"experienced","D":"past"}]
答案:[['C'],['B'],['D'],['D'],['A']]
解析:设计面向对象的软件很难,而设计(可复用的)面向对象软件就更难了。你必须找到合适的(相关的)对象,以适当的粒度将它们划分为类,定义类接口和继承,并在它们之间建立关键关系。你的设计应该针对眼前的问题,但(一般 )足以解决未来的问题和要求。你也要避免重新设计,或者至少最小化它。有经验的面向对象设计师会告诉你,一个可重用和灵活的设计是很难第一次就“正确”的。在设计完成之前,他们通常会尝试多次重复使用,每次都是这样。然而,有经验的面向对象设计师确实能做出好的设计。同时,新的设计师们对可用的选项感到不安(第三题选项不知所措的意思),他们倾向于使用以前使用的非面向对象技术。电影要花很长时间才能了解好的面向对象的设计。经验丰富的设计师显然知道一些缺乏经验的东西。它是什么?有一件事专家设计师知道不能做的就是从第一原理解决每一个问题。相反,他们选择了过去对他们有效的解决方案。当他们找到一个好的(解决方案)。他们一次又一次地使用它。这样的经验是他们成为专家的部分原因。因此,您将在许多面向对象系统中找到第五题个类和通信对象的模式。A. runnable可运行的B.right对的C. reusable可复用的D. pertinent中肯的,相关的A. clear清除B. general总则C. personalized个性化D.customized定制A. excited兴奋B. shocken 震惊C. surprised惊讶于D. overwhelmed不知所措A.tool工具B. component组成部分C. system系统D. solution解决方案A.recurring循环B.right是吗C.experienced经验丰富D.past过去
下午
题目:数据流图道闸控制,大概的意思:道闸控制请求道闸控制系统,道闸控制系统会返回道闸状态,正常同行状态,如果是进场车辆,….,更新车位空余状态。如果是离场车辆,…….更新车位空余状态。如果道闸控制系统坏了,得不到返回状态,那么通知管理员去维修。管理员收到告警信息,去维修,以利于车辆同行
选项:
1. 补充实体E1-E5(5分)
2. 补充D1-D3(3分)
3. 确实的数据流,起点,终点(4分)
4. 用结构化语言描述“道闸控制”加工(3分)
题目:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发个信息系统。请根据下述需求描述完成该系统的数据库设计。[需求描述](1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话。(2)记录社区团购点的信息,包括团购点编号、地址和一个电话。(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点下订单,不直接与蔬菜供应商发生联系。(4)记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期。[概念模型设计]根据需求阶段收集的信息,设计的实体联系图(不完整)如图1-1所示。 图1-1 实体联系图[逻辑结构设计]根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):蔬菜供货商(供货商编号,地址,电话)社区团购点(团购点编号,地址,电话)供货(供货商编号,(a))客户(姓名,客户电话)订单(订单编号,团购点编号,订单内容,日期,(b))
选项:
【问题1】(6分)
根据问题描述,补充图1-1的实体联系图。
【问题2】 (4分)
补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。
【问题3】(5分)
若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取’联系,对图1进行补充。“快递” 关系模式包括快递编号、客户电话和日期。
【问题1】
【问题2】
(a):团购点编号。主键为:(供货商编号,团购点编号),外键为:供货商编号,团购点编号。
(b):客户电话。 主键为:订单编号,外键为:团购点编号,客户电话。
【问题3】
若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取’联系,对图1进行补充。“快递” 关系模式包括快递编号、客户电话和日期。
图1-1 实体联系图
题目:阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务。该系统的主要功能描述如下:(1)注册。患者扫描医院提供的二维码进行注册,注册过程中,患者需提供其病历号,系统根据病历号自动获取患者基本信息。(2)登录。已注册的患者可以登录系统进行线上抓药,未册的患者系统拒绝其登陆。(3)确认处方。患者登录后,可以查看医生开具的所有处方。患者选择需要抓药的处方和数量(需要抓几副药), 同时说明是否需要煎制。选择取药方式:自行到店取药或者送药上门,若选择送药上门,患者需要提供提供收货人姓名、联系方式和收货地址。系统自动计算本次抓药的费用,患者可以使用微信或支付宝等支付方式支付费用。支付成功之后,处方被发送给药师进行药品配制。
选项:
【问题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:支付宝支付
U3和U4可互换。
【问题2】
C1:支付方式
C2;微信支付
C3:支付宝支付
C4:处方
C5:药品
C2和C3可互换。
【问题3】
include(包含)包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
本系统中,确认药方过程中系统会自动计算本次抓药的费用,患者可以使用微信或支付宝等支付方式支付费用,所以确认药方包含支付过程。
extend (扩展)扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
generalize(泛化)泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。
本系统中患者可以使用微信或支付宝等支付方式支付费用,即支付可以有不同种方式,包括微信支付、支付宝支付等,所以微信支付和支付宝支付是支付的特殊化,支付是二者的泛化。
注:本题分值较少,写明定义即可,可以不结合本题实例进行说明。
题目:阅读下列说明和代码,回答问题1和问题2,将解答写在答题纸的对应栏内。【说明】凸多边形是指多边形的任意两点的连线均落在多边形的边界或内部。相邻的点连线落在多边形边界上,称为边;不相邻的点连线落在多边形内部,称为弦。假设任意两点连线上均有权重,凸多边形最优三角剖分问题定义为:求将凸多边形划分为不相交的三角形集合,且各三角形权重之和最小的剖分方案。每个三角形的权重为三条边权重之和。假设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分别为该三角形三条边的权重。求解凸多边形的最优剖分方案,即求解最小剖分的权重及对应的三角形集。[C代码]#include<stdio.h>#define N 6 //凸多边形规模int m[N+1] [N+1]; //m[i][j]表示多边形Vi-1到Vj最优三角剖分的权值int S[N+1] [N+1]; //S[i][j]记录多边形Vi-1到Vj最优三角剖分的k值int W[N+1] [N+1]; //凸多边形的权重矩阵,在main函数中输入/*三角形的权重a,b,c,三角形的顶点下标*/int get_ triangle_weight(int a,int b,int c){return W[a][b]+W[b][c]+W[c][a];}/*求解最优值*/void triangle_partition(){int i,r,k,j;int temp;/*初始化*/for(i=1;i<=N;i++){m[i][i]=0;}/*自底向上计算m,S*/for(r=2;(1);r++){/*r为子问题规模*/for(i=1;k<=N-r+1;i++){(2);m[i][j]= m[i][j]+m[i+1][j]+get_triangle_weight(i-1,i,j); /*k=j*/S[i][j]=i;for(k=j+1;k<j;k++){/*计算 [i][j]的最小代价*/temp=m[i][k]+m[k+1][j]+ge_triangle_ weight(i-1,k,j);if((3)){/*判断是否最小值*/ m[i][j]=temp;S[i][j]=k;}}}}}/*输出剖分的三角形i,j:凸多边形的起始点下标*/void print_triangle(int i,int j){if(i==j) return;print_triangle(i,S[i][j]);print_ triangle((4));print(“V%d- -V%d- -V%d\n“,i-1,S[i][j],j);}
选项:
【问题1】(8分)
根据题干说明,填充C代码中的空(1)~(4)。
【问题2】(7分)
根据题干说明和C代码,该算法采用的设计策略为(5)。
算法的时间复杂度为(6),空间复杂度为(7)(用O表示)
【问题1】(8分)
(1)i<=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)
题目:阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】层叠菜单是窗口风格的软件系统中经常采用的一种系统功能组织方式。层叠菜单(如图6-1示例)中包含的可能是一个菜单项(直接对应某个功能),也可能是一个子菜单,现在采用组合(composite)设计模式实现层叠菜单,得到如图6-2所示的类图层叠菜单(如图6-1示例)暂缺 图6-2 类图
选项:
import java.util.*;
abstract class MenuComponent { // 构成层叠菜单的元素
(1) String name; // 菜单项或子菜单名称
public viod printName() { System.out.println(name); }
public (2) ;
public abstract boolean removeMenuElement(MenuComponent element);
public (3) ;
}
class MenuItem extends MenuComponent {
public MenuItem(String name) { this.name=name; }
public boolean addMenuElement(MemuComponent element) { return false; }
public boolean removeMenuElement(MenuComponent element){ return false; }
public List<MenuComponent> getElement(){ return null; }
}
class Menu extends MemuComponent {
private (4);
public Menu(String name){
this.name = name;
this.elementList = new ArrayList<MenuComponent>;
}
public boolean addMenuElement(MenuComponent element){
return elementList.add(element);
}
public boolean removeMenuElement(MenuComponent element){
return elementList.remove(element);
}
public List<MenuComponent> getElement() {return elementList;}
}
class CompositeTest {
public static void main(String[] args) {
MenuComponent mainMenu = new Menu(“AB”); //此处字符不清晰,以“AB”代替原文
MenuComponent subMenu = new Menu(“Chart”);
MenuComponent element = new MenuItem(“On This Sheet”);
(5);
subMenu.addMenuElement(element);
printMenus(mainMenu);
}
private static void printMenus(MenuComponent ifile){
ifile.printName();
List<MenuComponent> children = ifile.getElement();
if(children == null) return; //打印
for(MenuComponent element; children){
printMenus(element);
}
}
}
(1)protected
(2)abstract boolean addMenuElement(MemuComponent element)
(3)abstract List<MenuComponent> getElement()
(4)ArrayList<MenuComponent> elementList
(5)mainMenu.addMenuElement(subMenu)