版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年软考-软件设计师真题回忆版上午考试科目:基础知识1.在计算机中,若某浮点数的阶码为8位(含1位阶符),采用补码表示;尾数为24位(含1位数符),采用补码表示。则该浮点数所能表示的最大数值是()。A.2B.2C.2D.22.某计算机系统的指令流水线由5个段组成,各段执行时间分别为:取指20ns、译码20ns、执行40ns、访存30ns、写回20ns。若采用同步流水线方式,且不考虑流水线启动时间和相关冲突,则该流水线的最大吞吐率为()。A.25×10B.33.3×10C.50×10D.12.5×103.在Cache映射方式中,()方式比较灵活,冲突概率低,但实现复杂,通常采用相联目录表来管理。A.直接映射B.全相联映射C.组相联映射D.混合映射4.若某计算机字长为32位,内存按字节编址,则内存地址空间大小最大为()。A.2GBB.4GBC.8GBD.16GB5.以下关于总线的叙述中,错误的是()。A.总线是连接多个部件的信息传输线,是共享的传输介质B.总线周期通常包括申请阶段、寻址阶段、传输阶段和结束阶段C.系统总线中包含数据总线、地址总线和控制总线D.在总线仲裁中,集中仲裁方式包括独立请求方式、计数器定时查询方式和菊花链查询方式,其中菊花链查询方式对电路故障最敏感6.某计算机采用三级Cache,访问时间分别为L1:2ns,L2:10ns,L3:50ns,主存访问时间为200ns。已知L1、L2、L3的命中率分别为0.95、0.85、0.75,则该存储系统的平均访问时间为()。A.4.5nsB.5.85nsC.8.25nsD.12.5ns7.在操作系统中,P、V操作是原语,用于信号量的管理。若信号量S的初值为3,当前值为-1,则表示有()个等待进程。A.0B.1C.2D.38.某系统中有3个并发进程,都需要同类资源4个。若系统中该类资源共有5个,则该系统()。A.必然死锁B.可能死锁C.不会死锁D.无法确定9.下列关于段页式存储管理的叙述中,正确的是()。A.段式存储管理有利于内存共享,页式存储管理有利于内存利用率的提高B.段页式存储管理中,地址变换需要两次查表C.段页式存储管理中,段内地址是连续的,页内地址也是连续的D.段页式存储管理消除了内存外部碎片,但存在内部碎片10.在磁盘调度算法中,()算法可能会随时改变磁头的移动方向,导致磁头可能在磁道间来回移动,但该算法能较好地避免“饥饿”现象。A.先来先服务(FCFS)B.最短寻道时间优先(SSTF)C.扫描算法(SCAN)D.循环扫描算法(C-SCAN)11.某分时系统采用时间片轮转调度算法,时间片为Q。现有3个进程P1、P2、P3,到达时间分别为0、1、2,服务时间分别为5、3、1。若Q=2,则进程的平均周转时间为()。A.5.33B.6.33C.7.33D.8.3312.文件系统采用多级索引结构。若一个文件有10个直接块指针,1个一级间接指针,1个二级间接指针,1个三级间接指针。盘块大小为4KB,指针占4B。则该文件的最大长度为()。A.4KB+4MB+4GB+4TBB.40KB+4MB+4GB+4TBC.40KB+4MB+4GB+4PBD.10*4KB+1024*4KB+1024^2*4KB+1024^3*4KB13.ISO/IEC9126软件质量模型中,()是指在指定条件下使用时,软件产品满足明确和隐含需求的能力。A.可靠性B.易用性C.效率D.适用性14.在软件工程中,()用于描述软件系统的功能需求,而不涉及具体的实现细节。A.数据流图(DFD)B.状态转换图(STD)C.实体关系图(ERD)D.类图15.结构化分析方法(SA)是一种面向数据流的分析方法,其核心思想是()。A.自顶向下,逐步求精B.自底向上,逐步集成C.面向对象,抽象封装D.数据驱动,快速原型16.模块的内聚性越高,则模块的独立性越强。以下内聚类型中,内聚性最高的是()。A.逻辑内聚B.时间内聚C.顺序内聚D.功能内聚17.在软件测试中,()方法侧重于检查程序内部逻辑结构,通常要求程序源码可用。A.黑盒测试B.白盒测试C.灰盒测试D.静态测试18.以下关于McCabe环路复杂度计算方法的叙述中,正确的是()。A.V(G)=E-N+2,其中E为边数,N为节点数B.V(G)=P+1,其中P为判定节点数C.V(G)=D.以上都是19.在面向对象技术中,()是指一个对象在不同时刻可以表现为不同的形态,即同一个消息被不同的对象接收时产生不同的行为。A.封装B.继承C.多态D.抽象20.UML2.0中,()图用于描述系统的静态结构,包括类、接口及其关系。A.用例图B.类图C.序列图D.活动图21.设计模式中,()模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。A.FactoryMethod(工厂方法)B.AbstractFactory(抽象工厂)C.Builder(建造者)D.Prototype(原型)22.在TCP/IP协议簇中,()协议负责将IP地址解析为MAC地址。A.ARPB.RARPC.ICMPD.IGMP23.IPv4地址为29,子网掩码为92,则该地址的子网网络地址和直接广播地址分别为()。A.,55B.4,27C.28,91D.28,5524.在OSI参考模型中,()层负责在两个端系统之间提供可靠的、面向连接的数据传输服务。A.数据链路层B.网络层C.传输层D.会话层25.以下关于防火墙技术的叙述中,错误的是()。A.包过滤防火墙工作在网络层或传输层B.应用层代理防火墙可以理解应用层协议C.状态检测防火墙通过跟踪连接状态来动态决定数据包是否通过D.防火墙可以完全防止内部网络受到外部攻击,无需配合其他安全措施26.公钥加密体制中,()用于发送方用自己的私钥对数据进行签名,接收方用发送方的公钥进行验证。A.发送方私钥,接收方公钥B.发送方公钥,接收方私钥C.发送方私钥,发送方公钥D.接收方公钥,发送方私钥27.在关系数据库中,若关系R和S的连接操作是基于R中的属性A和S中的属性B相等进行的,且结果中包含R和S的所有列,则这种连接称为()。A.自然连接B.等值连接C.外连接D.笛卡尔积28.SQL语句中,用于修改表结构的命令是()。A.MODIFYB.UPDATEC.ALTERD.CHANGE29.关系模式R(U,F),其中U=A,B,C,D,E,F=A→B,B→C,C→D,D→E。则关系模式R的候选码为()。A.AB.BC.CD.D30.将E-R图转换为关系模式时,若实体间的联系是1:n,则将()。A.1端实体的码加入n端的关系中B.n端实体的码加入1端的关系中C.联系本身转换为一个独立的关系D.不需要转换31.在数据结构中,一个栈的输入序列为1,2,3,4,5,则可能的输出序列为()。A.5,4,3,2,1B.1,2,3,4,5C.2,1,4,3,5D.以上都有可能32.一棵完全二叉树有1001个节点,其叶子节点的个数为()。A.500B.501C.251D.25033.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。A.1B.2C.3D.434.哈希表长为m,哈希函数为H(k)=k±odp(p≤m),通常p应选择()。A.小于m的最大奇数B.小于m的最大素数C.等于mD.任意数35.若关键码序列为(25,13,30,7,12,17),采用希尔排序,增量序列为{3,1},则第一趟排序后的结果为()。A.(25,13,30,7,12,17)B.(12,13,17,7,25,30)C.(7,12,17,25,13,30)D.(25,7,30,13,12,17)36.算法的时间复杂度取决于()。A.问题的规模B.待处理数据的初态C.A和BD.算法的设计者37.在最坏情况下,以下排序算法中时间复杂度为O(nA.归并排序B.快速排序C.堆排序D.基数排序38.程序设计语言编译过程中,语法分析器的任务是()。A.分析单词串如何构成语句和程序B.分析单词串的含义C.优化目标代码D.分配存储空间39.编译过程中,优化阶段的主要目的是()。A.提高程序的正确性B.提高程序的执行效率C.减少程序的大小D.增强程序的可读性40.在有限自动机中,DFA和NFA的主要区别在于()。A.DFA的状态转换是确定的,NFA的状态转换是不确定的B.DFA能识别的语言类比NFA多C.NFA需要更多的存储空间D.DFA没有初始状态41.以下关于C++中虚函数的叙述中,正确的是()。A.虚函数是静态绑定的B.构造函数可以声明为虚函数C.析构函数可以声明为虚函数,且建议这样做以防止内存泄漏D.纯虚函数可以有实现体42.Java中,用于实现线程同步的关键字是()。A.synchronizeB.synchronizedC.lockD.volatile43.Web服务中,SOAP协议通常基于()协议传输。A.HTTPB.FTPC.SMTPD.POP344.在XML中,()用于定义XML文档的结构。A.CSSB.XSLC.DTD或XMLSchemaD.XQuery45.以下关于知识产权的叙述中,正确的是()。A.著作权的保护期是50年,不可续展B.商标权的保护期是10年,可以无限续展C.专利权的保护期是20年,不可续展D.商业秘密不受法律保护46.根据我国《民法典》,受委托创作的作品,著作权的归属由委托人和受托人通过合同约定;未作合同约定或者合同未作明确约定的,著作权属于()。A.委托人B.受托人C.双方共有D.国家47.在嵌入式系统设计中,()指标通常指系统在规定时间内和规定条件下完成规定功能的能力。A.可靠性B.实时性C.功耗D.体积48.以下关于网络流媒体技术的叙述中,错误的是()。A.流媒体技术采用流式传输B.用户可以边下载边播放C.流媒体文件必须完全下载后才能播放D.常见的流媒体协议有RTSP、MMS等49.在项目管理中,关键路径是指()。A.耗时最长的路径B.耗时最短的路径C.资源消耗最多的路径D.最重要的任务路径50.以下关于敏捷开发方法的叙述中,正确的是()。A.敏捷开发不需要文档B.敏捷开发强调适应变化而非遵循计划C.Scrum是敏捷开发的一种具体实现D.B和C51.在数字图像处理中,JPEG标准采用的是()压缩技术。A.无损压缩B.有损压缩C.行程编码D.LZW编码52.以下关于音频文件格式的叙述中,()是波形声音文件格式。A.MIDIB.WAVC.MP3D.WMA53.某公司拟开发一套物流管理系统,该系统需要处理大量的货物信息、车辆信息和订单信息。为了保证数据的一致性和完整性,应优先选择()。A.文件系统B.层次数据库C.网状数据库D.关系数据库54.系统架构设计中,()架构模式将系统划分为表示层、业务逻辑层和数据访问层。A.MVCB.分层C.客户/服务器(C/S)D.浏览器/服务器(B/S)55.以下关于中间件的叙述中,错误的是()。A.中间件位于操作系统和应用软件之间B.中间件用于屏蔽异构性和分布性C.CORBA是一种典型的中间件标准D.中间件就是数据库管理系统56.在软件维护中,为了适应新的法律法规或市场环境而修改软件,这属于()维护。A.改正性B.适应性C.完善性D.预防性57.以下算法中,()常用于解决图的顶点着色问题。A.Dijkstra算法B.Floyd算法C.回溯法D.Prim算法58.设有递归算法如下:```cintfunc(intn){if(n<=1)return1;returnn*func(n-1);}```调用`func(5)`的返回值为()。A.5B.15C.120D.72059.在C语言中,若`inta[5]={10,20,30,40,50};int*p=a;`,则表达式`*p++`的值为()。A.10B.20C.a的地址D.a+1的地址60.以下关于正则表达式的叙述中,()表示匹配以字母a开头,以字母b结尾的字符串。A.^a.*b$B.^a.*?b$C.^a+b+$D.^a\w*b$61.某计算机字长为32位,采用大端方式存储。若变量`intx=0x12345678`,则其首字节的内容是()。A.0x12B.0x34C.0x56D.0x7862.在数据库系统中,事务的隔离性是指()。A.事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态B.事务的执行是原子的,要么全做要么全不做C.一个事务的执行不能被其他事务干扰D.事务一旦提交,对数据库的修改是永久的63.以下关于E-R图中联系的叙述中,正确的是()。A.联系只能是二元联系B.联系可以有属性C.实体之间只能有一种联系D.联系的基数只能是1:1或1:N64.在软件设计中,如果模块A调用模块B,则模块A和模块B之间存在()耦合。A.数据耦合B.标记耦合C.控制耦合D.内容耦合65.以下关于黑盒测试方法的叙述中,()属于等价类划分法。A.边界值分析B.错误推测C.因果图D.将输入域划分为若干等价类,从每个等价类中选取代表性数据66.在UML的扩展机制中,()用于扩展UML的词汇,允许在模型中创建新的构造块。A.构型B.标记值C.约束D.模版67.设计模式中,()模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。A.Observer(观察者)B.Mediator(中介者)C.Memento(备忘录)D.Command(命令)68.在网络安全中,XSS攻击属于()。A.注入攻击B.跨站脚本攻击C.跨站请求伪造D.中间人攻击69.IPv6地址长度为()位。A.32B.64C.128D.25670.以下关于软件开发生命周期(SDLC)的叙述中,()阶段的主要任务是确定系统必须做什么。A.需求分析B.系统设计C.编码D.测试71.Theterm()referstotheprocessofcreatinganewsoftwaresystemorapplicationfromscratch.A.SoftwaremaintenanceB.SoftwaredevelopmentC.SoftwaretestingD.Softwaredeployment72.Inobject-orientedprogramming,()isamechanismthatallowsaclasstousethepropertiesandmethodsofanotherclass.A.EncapsulationB.InheritanceC.PolymorphismD.Abstraction73.A()isacollectionofdataitems,allofthesametype,accessedusingacommonnameandanindex.A.StructureB.UnionC.ArrayD.List74.The()protocolisusedfortransmittingwebpagesovertheInternet.A.FTPB.SMTPC.HTTPD.POP375.WhichofthefollowingisNOTavalidprincipleoftheAgileManifesto?A.CustomercollaborationovercontractnegotiationB.WorkingsoftwareovercomprehensivedocumentationC.ProcessesandtoolsoverindividualsandinteractionsD.Respondingoverfollowingaplan上午考试答案1-5:ACBBD6-10:CBCAB11-15:CDAAA16-20:DBBCB21-25:CACCD26-30:CBCAA31-35:DBBBB36-40:CABBA41-45:CBACC46-50:BCACD51-55:BDBDB56-60:BCCCA61-65:ABCBD66-70:AABCA71-75:BCBCC下午考试科目:应用技术试题一(算法设计与分析)阅读以下说明和C代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某系统需要处理大量字符串匹配任务。为了提高效率,设计了一种基于哈希的快速字符串查找算法。该算法首先对模式串进行预处理,计算出一个哈希值,然后对文本串中所有等长的子串计算哈希值并进行比较。如果哈希值相同,再进行精确的字符串比较以避免哈希冲突。假设字符集为ASCII码可见字符(共95个),字符串仅包含小写字母(a-z)。哈希函数定义为:H(s)=(∑其中,s为字符串,k为字符串长度,p为一个素数基数,q为一个大素数模数。代码中采用了“滚动哈希”技术,即利用前一个子串的哈希值在O(1)时间内计算下一个子串的哈希值。【C代码】```c#include<stdio.h>#include<string.h>#include<stdlib.h>#defineP31#defineQ1000000007unsignedlonglongpower(intbase,intexp){unsignedlonglongres=1;for(inti=0;i<exp;i++){res=(res*base)%Q;}returnres;}//计算字符串s的哈希值unsignedlonglonghash(char*s,intlen){unsignedlonglongh=0;for(inti=0;i<len;i++){h=(h*P+(s[i]-'a'+1))%Q;}returnh;}//在文本text中查找模式串patternvoidsearch(char*pattern,char*text){intm=strlen(pattern);intn=strlen(text);if(m>n)return;unsignedlonglongp_hash=hash(pattern,m);unsignedlonglongt_hash=hash(text,m);unsignedlonglongh=power(P,m-1);for(inti=0;i<=n-m;i++){if(p_hash==t_hash){//哈希值相同,进行精确比较intj;for(j=0;j<m;j++){if(text[i+j]!=pattern[j]){break;}}if(j==m){printf("Patternfoundatindex%d\n",i);}}//计算下一个子串的哈希值if(i<n-m){t_hash=((t_hash-(text[i]-'a'+1)*h)*P+(text[i+m]-'a'+1))%Q;//处理负数情况if((longlong)t_hash<0){t_hash+=Q;}}}}intmain(){chartext[]="ababcabcababc";charpattern[]="abc";search(pattern,text);return0;}```【问题1】(6分)请解释代码中变量`h`(即`power(P,m-1)`的结果)在滚动哈希计算中的作用。【问题2】(9分)已知模式串为"abc",文本串为"ababc"。请列出在循环过程中,变量`t_hash`(文本串当前窗口的哈希值)在每次循环开始时的值(假设第一次计算`hash(text,m)`得到的值为H0,后续值依次为H【问题3】(10分)该算法在最坏情况下的时间复杂度是多少?请结合代码分析(例如:所有子串哈希冲突且都匹配失败,或者全部匹配成功)。试题二(面向对象程序设计)阅读以下说明和Java代码,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某图书管理系统需要设计一个书籍借阅模块。系统中有书籍和用户两类主要对象。书籍有ISBN、书名、作者和状态(在馆/借出)等属性;用户有ID、姓名、借阅列表等属性。系统要求记录每一次借阅操作,包括借阅人、书籍、借阅时间和归还时间。为了扩展性,系统设计了一个接口`Borrowable`,包含`borrow`和`returnBook`方法。`Book`类实现了该接口。此外,还有一个`Loan`类用于记录借阅记录。现采用策略模式设计罚款计算功能,不同的用户类型(如学生、教师)可能有不同的罚款策略。【Java代码】```javaimportjava.util.*;//借阅接口interfaceBorrowable{voidborrow(Useruser);voidreturnBook(Useruser);}//罚款策略接口interfaceFineStrategy{doublecalculateFine(intdaysOverdue);}//具体策略:学生罚款策略classStudentFineStrategyimplementsFineStrategy{publicdoublecalculateFine(intdaysOverdue){returndaysOverdue*1.0;}}//具体策略:教师罚款策略classTeacherFineStrategyimplementsFineStrategy{publicdoublecalculateFine(intdaysOverdue){returndaysOverdue*0.5;}}classUser{privateStringid;privateStringname;privateList<Loan>loans=newArrayList<>();privateFineStrategyfineStrategy;//策略对象publicUser(Stringid,Stringname,FineStrategyfineStrategy){this.id=id;=name;this.fineStrategy=fineStrategy;}publicvoidaddLoan(Loanloan){loans.add(loan);}publicdoublecalculateTotalFine(){doubletotal=0;for(Loanloan:loans){if(loan.isOverdue()){total+=fineStrategy.calculateFine(loan.getDaysOverdue());}}returntotal;}}classBookimplementsBorrowable{privateStringisbn;privateStringtitle;privatebooleanisAvailable;publicBook(Stringisbn,Stringtitle){this.isbn=isbn;this.title=title;this.isAvailable=true;}publicvoidborrow(Useruser){if(isAvailable){this.isAvailable=false;//创建借阅记录并关联Loanloan=newLoan(this,user);user.addLoan(loan);System.out.println(user.getName()+"borrowed"+title);}else{System.out.println(title+"isnotavailable.");}}publicvoidreturnBook(Useruser){this.isAvailable=true;//更新借阅记录状态(略)System.out.println(user.getName()+"returned"+title);}publicStringgetTitle(){returntitle;}publicbooleanisAvailable(){returnisAvailable;}}classLoan{privateBookbook;privateUseruser;privateDateborrowDate;privateDatereturnDate;publicLoan(Bookbook,Useruser){this.book=book;this.user=user;this.borrowDate=newDate();//当前时间}publicbooleanisOverdue(){//简化逻辑:假设超过14天未归还即为逾期longdiff=newDate().getTime()-borrowDate.getTime();longdays=diff/(1000*60*60*24);returndays>14&&returnDate==null;}publicintgetDaysOverdue(){longdiff=newDate().getTime()-borrowDate.getTime();return(int)(diff/(1000*60*60*24)-14);}}publicclassLibrarySystem{publicstaticvoidmain(String[]args){FineStrategystudentStrategy=newStudentFineStrategy();Userstudent=newUser("001","Alice",studentStrategy);Bookbook1=newBook("978-7-111","DesignPatterns");book1.borrow(student);book1.returnBook(student);}}```【问题1】(8分)请指出上述代码中体现了哪些设计模式?(至少列出两种),并说明类或接口分别对应模式中的什么角色。【问题2】(7分)若要增加一种“管理员”用户类型,其罚款规则为:逾期10天内不罚款,超过10天的部分每天罚款2元。请写出实现该功能的Java类代码。【问题3】(10分)在`Book`类的`borrow`方法中,如果`isAvailable`为false,直接打印信息返回。请结合开闭原则(Open-ClosedPrinciple),评价这种处理方式是否合理?如果不合理,应如何改进?试题三(数据库设计)阅读以下说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】某电商公司需要设计一个订单管理数据库。该系统主要涉及以下实体:1.客户:客户ID,姓名,地址,电话。2.商品:商品ID,名称,单价,库存量。3.订单:订单ID,下单时间,总金额,状态,所属客户。4.订单明细:订单ID,商品ID,购买数量。一个客户可以下多个订单,一个订单包含多个商品,一个商品可以出现在多个订单中。【问题1】(6分)请设计ER图,包含上述实体及其联系。联系类型需注明(1:1,1:n,m:n)。【问题2】(6分)将ER图转换为关系模式。请标出每个关系模式的主码(下划线表示)和外码(文字说明)。【问题3】(8分)为了提高查询“某客户在2024年所有订单的总消费”的效率,应在哪个表上建立索引?请写出SQL语句。【问题4】(5分)若要保证订单下单时,商品的库存量必须大于购买数量,且下单后库存量自动减少。请结合事务和触发器技术,简要说明实现思路。试题四(嵌入式系统设计)阅读以下说明,回答问题1至问题3。【说明】某温度监测系统采用单片机作为核心控制器,连接温度传感器、LCD显示屏和蜂鸣器。系统每隔1秒读取一次温度,若温度超过设定阈值(如30℃),则蜂鸣器报警,并在LCD上显示“WARNING”,否则显示当前温度值。【问题1】(10分)请画出该系统的硬件连接框图,并说明数据流向。【问题2】(5分)在软件设计中,若采用前后台系统(Foreground/Background),通常将温度采集和显示处理放在后台(主循环),将报警处理放在前台(中断)。请说明这样设计的理由。【问题3】(11分)假设温度传感器通过I2C总线连接,I2C起始信号的时序要求是:SCL为高电平时,SDA由高变低。请用C语言(或伪代码)编写一个产生I2C起始信号的函数`voidI2C_Start()`。假设端口定义如下:`sbitSCL=P1^0;sbitSDA=P1^1;`。试题五(数据结构应用)阅读以下说明和C++代码,回答问题1至问题2。【说明】为了高效管理内存中的空闲块,系统维护一个空闲内存块链表。每个块包含起始地址和大小。当有内存分配请求时,采用“首次适应算法”查找第一个能满足大小要求的空闲块进行分配。当释放内存时,将释放的块插入链表,并尝试与相邻的空闲块合并。【C++代码】```cppstructBlock{intstartAddr;intsize;Block*next;Block(ints,intsz):startAddr(s),size(sz),next(nullptr){}};classMemoryManager{private:Block*head;//空闲链表头,按地址升序排列public:MemoryManager(){//初始化:假设整个内存空间为0-1023head=newBlock(0,1024);}//分配内存intallocate(intreqSize){Block*prev=nullptr;Block*curr=head;while(curr!=nullptr){if(curr->size>=reqSize){//找到合适的块intaddr=curr->startAddr;curr->startAddr+=reqSize;curr->size-=reqSize;//如果块刚好用完,移除该节点if(curr->size==0){if(prev==nullptr){head=curr->next;}else{prev->next=curr->next;}deletecurr;}returnaddr;}prev=curr;curr=curr->next;}return-1;//分配失败}//释放内存voiddeallocate(intstartAddr,intsize){Block*newBlock=newBlock(startAddr,size);Block*curr=head;Block*prev=nullptr;//寻找插入位置while(curr!=nullptr&&curr->startAddr<startAddr){prev=curr;curr=curr->next;}//插入链表if(prev==nullptr){newBlock->next=head;head=newBlock;}else{prev->next=newBlock;newBlock->next=curr;}//合并相邻块(需实现)merge();}voidmerge(){//合并逻辑待完善//...}};```【问题1】(12分)请完善`merge`函数的代码,实现合并相邻空闲块的功能。注意:链表是按地址排序的,需检查当前块是否与下一块相邻(即`curr->startAddr+curr->size==curr->next->startAddr`),如果是则合并。【问题2】(8分)分析上述`allocate`代码,若当前空闲块大小为100,请求分配大小为30,分配后该空闲块节点的`startAddr`和`size`各变为多少?若请求分配大小为100呢?下午考试答案试题一【问题1】变量`h`的值是Pm-1Hnew其中,FirstChar×h这一项利用了哈希函数的多项式定义,将最高位字符移出。【问题2】初始窗口"aba":计算得H0移动窗口"bab":1.减去'a'的贡献:H02.乘以P(相当于剩余字符左移一位):(...)×P。3.加上'b':(...)+b。得到H1移动窗口"abc":1.减去'b'的贡献:H12.乘以P。3.加上'c'。得到H2【问题3】时间复杂度为O(n×m)。分析:虽然哈希比较是O(1),但在最坏情况下(例如文本串为"aaaa...aaa",模式串为"aaaab"),每个子串的哈希值都与模式串相同,导致对每个位置都进行精确的字符串比较。精确比较在最坏情况下需要比较m个字符。共有n-m+1个位置,因此总时间复杂度为O(n×m)。试题二【问题1】1.策略模式:`FineStrategy`是策略接口。`StudentFineStrategy`和`TeacherFineStrategy`是具体策略。`User`是环境类,持有`FineStrategy`引用。2.简单工厂模式(隐含在main中创建对象的过程,或者如果有一个专门创建User的工厂类):代码中虽未显式定义工厂类,但`main`方法中根据类型创建策略对象体现了工厂的思想。若严格按代码,主要体现的是策略模式。另外,`Loan`类作为记录类,体现了关联关系。【问题2】```javaclassAdminFineStrategyimplementsFineStrategy{publicdoublecalculateFine(intdaysOverdue){if(daysOverdue<=10){return0.0;}else{return(daysOverdue-10)*2.0;}}}```【问题3】评价:不太合理。违反了开闭原则。如果未来增加“预约”、“锁定”等其他不可借用的状态
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 6396-2026复合钢板力学及工艺性能试验方法
- 高龄女性卵母细胞减数分裂异常机制研究进展总结2026
- 股权质押贷款合同(范本)
- 造船合同协议书范本专业版(范本)
- 2027届辽宁省葫芦岛市建昌县四上数学期末教学质量检测模拟试题含解析
- 甘肃省甘南藏族自治州2027届数学三上期末调研模拟试题含解析
- 山西省太原市华阳双语学校2027届三上数学期末质量检测试题含解析
- 楚雄彝族自治州元谋县2027届三上数学期末质量检测模拟试题含解析
- 平度市2027届数学四上期末达标检测试题含解析
- 保险业务员个人总结范文
- 2026年湖南有色黄沙坪矿业有限公司招聘80人笔试参考题库及答案详解
- 《养生保健》课件-5.上肢部保健按摩
- 2026年浙江省大学生乡村医生专项计划招聘考试历年参考题库含答案详解
- 建设电工劳务分包合同
- (2026年)女性避孕方法临床应用的中国专家共识(2026年扩展版)
- 2026年党员应知应会基础知识试题(附答案)
- 2026年药食同源食品与新食品原料(新资源食品)食用量标准大全
- 大疆创新人力资源管理实践完全指南
- 2026年城乡规划设计院招聘试题(含答案)
- 重性精神病应急处置流程
- 《论语》全文翻译(二十篇)
评论
0/150
提交评论