{"name":"计算机技术与软件专业技术资格（软件设计师）题库","level":"中级","org":"人力资源和社会保障部门、工业和信息化部门","count":300,"questions":[{"id":1,"type":"single","stem":"在软件设计阶段使用UML对系统进行建模时，若需要强调对象之间按时间顺序的消息交互并体现生命线激活期，应优先选用哪种图","options":["时序图","通信图","状态图","活动图"],"answer":[0],"explanation":"时序图按时间顺序展示对象间消息交互，并可表示激活期；通信图强调对象间链接关系而不突出时间顺序；状态图描述单个对象状态迁移；活动图描述控制流与并发活动。","tier":"基础"},{"id":2,"type":"single","stem":"某模块内聚性表现为：模块内各元素执行同一类功能但处理不同数据格式，彼此之间没有明显的数据依赖，这种内聚通常被归类为","options":["逻辑内聚","功能内聚","时间内聚","通信内聚"],"answer":[0],"explanation":"逻辑内聚指模块内各元素在逻辑上属于同类功能，但由传入参数决定执行哪一种；功能内聚是各元素共同完成单一功能；时间内聚是元素因同一时间段执行而组合；通信内聚是元素操作同一输入或输出数据。","tier":"基础"},{"id":3,"type":"single","stem":"在关系数据库设计中，若关系模式R已满足第三范式但存在主属性对候选键的部分依赖，则R最高至少应继续规范到","options":["BCNF","第二范式","第四范式","第五范式"],"answer":[0],"explanation":"BCNF要求每个决定因素都包含候选键，可消除主属性对候选键的部分依赖和传递依赖；第二范式只处理非主属性部分依赖；第四范式处理多值依赖；第五范式处理连接依赖。","tier":"基础"},{"id":4,"type":"single","stem":"某项目采用增量模型开发，客户要求尽早看到可运行的核心功能，同时后续增量可能调整需求，较合适的增量划分策略是","options":["先实现核心骨架功能，再按优先级逐步增加用户可见功能","先实现所有非功能需求，再集中补充业务功能","先完成全部详细设计文档评审，再一次性编码实现所有增量","先实现最难且风险最高的模块，再实现辅助模块"],"answer":[0],"explanation":"增量模型强调按优先级尽早交付可运行增量，先核心骨架再逐步增加功能符合该策略；先做非功能需求不易形成可运行增量；先完整设计再一次性编码接近瀑布模型；先做最难模块不一定满足客户尽早看到核心功能。","tier":"挑战"},{"id":5,"type":"single","stem":"在面向对象设计中，若子类覆盖父类方法时把父类方法的前置条件加强、后置条件减弱，则主要违反的设计原则是","options":["里氏替换原则","开闭原则","依赖倒置原则","单一职责原则"],"answer":[0],"explanation":"里氏替换原则要求子类可替换父类且不加强前置条件、不减弱后置条件；开闭原则强调对扩展开放对修改关闭；依赖倒置强调依赖抽象；单一职责强调一个类只承担一个职责。","tier":"基础"},{"id":6,"type":"single","stem":"某系统采用管道过滤器架构处理日志数据，若需要在不修改已有过滤器内部代码的前提下支持按关键字过滤，较符合该架构风格的做法是","options":["新增一个关键字过滤过滤器并接入管道","在原有每个过滤器中分别加入关键字判断分支","把所有过滤器合并成一个大型处理类","将管道改为共享全局变量传递数据"],"answer":[0],"explanation":"管道过滤器风格支持通过增加独立过滤器扩展处理步骤；在每个过滤器内加分支会破坏职责单一并需改代码；合并为大类破坏可组合性；共享全局变量破坏过滤器独立性。","tier":"挑战"},{"id":7,"type":"single","stem":"某工程师在评审中发现一段代码用继承实现“日志输出到文件”和“日志输出到控制台”的差异，但运行时又需要动态组合格式与输出目标，较合适的重构方向是","options":["将输出目标与格式分别抽象，用组合方式在运行时装配","继续增加继承层次，为每种格式和目标组合建立子类","把输出目标和格式都写成静态常量分支","把日志类改为单例并直接在内部判断输出目标"],"answer":[0],"explanation":"桥接/策略组合可将两个变化维度解耦并支持运行时装配；继续增加继承会导致类爆炸；静态常量分支难以扩展；单例内部判断仍把变化耦合在类内。","tier":"挑战"},{"id":8,"type":"single","stem":"某电商系统在促销期间出现订单重复创建，排查发现支付回调可能重复到达，且订单服务先查询后插入而没有唯一约束，正确的修复环节应优先包含","options":["对订单业务唯一键建立唯一约束，并将查询插入改为幂等处理","把支付回调改为同步调用并延长超时时间","在订单服务前增加缓存，缓存未命中才查数据库","将订单表拆分为多个分表以分散写入压力"],"answer":[0],"explanation":"重复回调导致重复创建的核心是缺少幂等与唯一性保障，应加唯一约束并做幂等；同步调用和延长超时不能消除重复；缓存未命中仍可能重复插入；分表只分散压力不解决重复。","tier":"挑战"},{"id":9,"type":"multi","stem":"在软件体系结构评估中，关于场景在质量属性分析中的作用，下列描述正确的有","options":["场景可用于把抽象质量属性转化为可验证的具体刺激与响应","场景可覆盖正常、异常和边界情况以暴露架构风险","场景只需描述功能流程，不必包含环境与刺激源","场景应尽量只保留一个，避免评估时产生分歧","场景可用于比较不同候选架构对同一质量需求的满足程度"],"answer":[0,1,4],"explanation":"场景把质量属性具体化为刺激、环境、响应，便于验证；覆盖正常异常边界可暴露风险；场景可用于比较候选架构。场景只描述功能流程会丢失质量属性要素；只保留一个场景无法覆盖多质量属性且不能避免分歧。","tier":"挑战"},{"id":10,"type":"single","stem":"在软件设计阶段使用分层架构时，若某业务方法需要访问数据库并返回结果，按照经典三层架构的职责划分，执行SQL语句的代码应位于哪一层","options":["表现层","业务逻辑层","数据访问层","实体层"],"answer":[2],"explanation":"知识点是三层架构的职责划分。数据访问层专门封装对数据库的增删改查操作，因此执行SQL的代码应放在该层；表现层负责界面展示与用户交互，不直接执行SQL；业务逻辑层负责业务规则与流程编排，通常调用数据访问层而非直接写SQL；实体层只承载数据对象结构，不包含数据库操作。","tier":"基础"},{"id":11,"type":"single","stem":"在UML类图中，若类A与类B之间表示“整体与部分”关系，且部分可以脱离整体独立存在，这种关系应建模为","options":["泛化","聚合","组合","依赖"],"answer":[1],"explanation":"知识点是UML类图关系辨析。聚合表示整体与部分关系且部分可独立于整体存在，符合题意；泛化表示继承关系；组合虽然也是整体与部分，但部分不能脱离整体独立存在；依赖表示一个类暂时使用另一个类，不体现整体部分语义。","tier":"基础"},{"id":12,"type":"single","stem":"某模块内部各功能元素都围绕同一个输入数据展开处理，例如对同一份学生成绩分别计算总分、平均分和排名，该模块的内聚类型是","options":["功能内聚","通信内聚","顺序内聚","逻辑内聚"],"answer":[1],"explanation":"知识点是模块内聚类型。通信内聚指模块内各功能处理同一输入数据或产生同一输出数据，符合题意；功能内聚要求所有元素共同完成单一功能，题干中三个功能并不构成一个不可分割的功能；顺序内聚强调一个元素的输出是另一个元素的输入，题干未体现这种数据流；逻辑内聚是按逻辑相似性组合，与同一输入数据无关。","tier":"基础"},{"id":13,"type":"single","stem":"在关系数据库中，若关系R(A,B,C)上存在函数依赖A→B和B→C，则根据Armstrong公理可以推出A→C，这一推理过程使用的规则是","options":["自反律","增广律","传递律","分解律"],"answer":[2],"explanation":"知识点是函数依赖的Armstrong公理。由A→B和B→C推出A→C使用的是传递律；自反律指若Y包含于X则X→Y；增广律指若X→Y则XZ→YZ；分解律指若X→YZ则X→Y且X→Z，均不直接对应题干的两步依赖传递。","tier":"基础"},{"id":14,"type":"single","stem":"某软件项目在需求分析阶段发现用户无法清楚描述未来系统应具备的全部功能，但可以明确说明现有业务流程中必须保留的核心环节，此时最适合采用的需求获取方法是","options":["快速原型法","瀑布模型","代码走查","单元测试"],"answer":[0],"explanation":"知识点是需求获取方法。快速原型法通过构建可运行原型帮助用户逐步明确需求，适合用户说不清完整需求但能判断原型是否符合预期的场景；瀑布模型要求需求前期完全确定，不适合题干场景；代码走查是代码审查活动，与需求获取无关；单元测试属于测试阶段活动，不能用于获取需求。","tier":"挑战"},{"id":15,"type":"single","stem":"在设计一个需要频繁在表头插入和删除元素的线性表时，若要求插入和删除操作的时间复杂度为O(1)，最合适的数据结构是","options":["顺序表","单链表","循环队列","二叉排序树"],"answer":[1],"explanation":"知识点是线性表存储结构的选择。单链表在已知头指针时可在表头以O(1)完成插入和删除；顺序表在表头插入或删除需要移动大量元素，平均为O(n)；循环队列适合先进先出的队列操作，不支持任意表头插入删除；二叉排序树的操作复杂度为O(log n)且结构不同。","tier":"进阶"},{"id":16,"type":"single","stem":"某系统采用面向对象方法设计，类Shape声明了抽象方法area()，类Circle和类Rectangle分别继承Shape并实现area()，当程序运行时根据对象实际类型调用area()，这体现了面向对象的哪一特性","options":["封装","继承","多态","抽象"],"answer":[2],"explanation":"知识点是面向对象基本特性。多态指同一操作作用于不同对象产生不同执行结果，运行时根据实际对象类型绑定方法符合多态；封装强调隐藏内部实现细节；继承强调子类复用父类结构；抽象强调提取共性形成抽象类或接口，均不是对运行时动态绑定的直接描述。","tier":"基础"},{"id":17,"type":"single","stem":"在软件测试中，某程序输入参数x的取值范围为[1,100]，若采用边界值分析法设计测试用例，除1和100外，通常还应重点选取的测试输入是","options":["0和101","50和51","25和75","1和2"],"answer":[0],"explanation":"知识点是边界值分析法。边界值分析除取边界本身外，还应取刚好越过边界的值，即0和101，用于检查越界处理；50和51、25和75属于有效区间内部取值，更接近等价类划分的普通值；1和2中1已是边界，2只是靠近边界的普通有效值，不如越界值更能暴露边界缺陷。","tier":"基础"},{"id":18,"type":"single","stem":"某开发人员在设计一个支持多种数据库连接的模块时，希望在不修改高层业务代码的前提下替换底层数据库驱动，最应该优先遵循的设计原则是","options":["依赖倒置原则","单一职责原则","开闭原则","接口隔离原则"],"answer":[0],"explanation":"知识点是面向对象设计原则。依赖倒置原则要求高层模块不依赖低层实现，而依赖抽象接口，这样替换底层数据库驱动时高层代码无需修改；单一职责原则关注一个类只承担一个职责；开闭原则强调对扩展开放对修改关闭，虽相关但不如依赖倒置直接针对依赖方向；接口隔离原则强调客户端不应依赖不需要的接口，与替换驱动无直接关系。","tier":"进阶"},{"id":19,"type":"single","stem":"某公司开发一套在线考试系统，考试期间大量考生同时提交试卷，系统需要保证提交请求先到先处理且不丢失，此时在服务端最适合采用的缓冲机制是","options":["使用内存变量直接覆盖保存最新提交","将提交请求写入消息队列后由消费者顺序处理","将提交请求直接写入前端浏览器本地缓存","对提交请求加随机延迟后直接写数据库"],"answer":[1],"explanation":"知识点是消息队列在削峰和顺序处理中的应用。消息队列可缓冲突发请求并由消费者按顺序处理，避免请求丢失；内存变量覆盖保存会丢失先前提交；浏览器本地缓存无法保证服务端可靠接收和处理；随机延迟不能保证顺序，也可能造成请求堆积或丢失。","tier":"挑战"},{"id":20,"type":"single","stem":"某电商系统需要在海量商品中按价格区间快速检索并支持动态插入删除，宜选用的数据结构是","options":["平衡二叉搜索树","顺序存储的线性表","链式存储的线性表","普通哈希表"],"answer":[0],"explanation":"知识点为查找结构选型。平衡二叉搜索树能在O(logn)时间内完成按值域的范围查询并支持动态插入删除，故正确；顺序表插入删除代价高，链式表无法高效范围查找，普通哈希表不支持有序范围检索。","tier":"基础"},{"id":21,"type":"single","stem":"在UML中用于描述系统与外部参与者之间交互边界、强调系统对外提供哪些功能的是","options":["用例图","类图","状态图","部署图"],"answer":[0],"explanation":"知识点为UML图的作用辨析。用例图从外部视角描述参与者与系统功能的关系，符合题干；类图描述静态结构与关系，状态图描述对象状态迁移，部署图描述物理节点配置。","tier":"基础"},{"id":22,"type":"single","stem":"某模块的内聚程度表现为：模块内各元素共同完成一个单一功能且彼此不可分割，该内聚类型是","options":["逻辑内聚","时间内聚","功能内聚","通信内聚"],"answer":[2],"explanation":"知识点为模块内聚类型。功能内聚指模块内所有元素协同完成单一明确功能，内聚度最高；逻辑内聚是多个逻辑相似功能组合，时间内聚是按同一时间段执行，通信内聚是操作同一数据。","tier":"基础"},{"id":23,"type":"single","stem":"关系模式R(A,B,C,D)中，若A→B、B→C成立，则A→C这一推理依据的是Armstrong公理中的","options":["自反律","增广律","传递律","分解律"],"answer":[2],"explanation":"知识点为函数依赖公理。由A→B和B→C推出A→C正是传递律；自反律由Y⊆X推X→Y，增广律在依赖两边同时加属性，分解律由X→YZ推X→Y和X→Z。","tier":"进阶"},{"id":24,"type":"single","stem":"采用白盒测试时，判定条件中每个原子条件的真假取值都至少被覆盖一次，这种覆盖标准是","options":["语句覆盖","判定覆盖","条件覆盖","路径覆盖"],"answer":[2],"explanation":"知识点为白盒覆盖标准辨析。条件覆盖要求每个原子条件取真取假各一次；语句覆盖只要求每条语句执行，判定覆盖要求每个判定取真取假，路径覆盖要求所有可行路径被执行。","tier":"进阶"},{"id":25,"type":"single","stem":"在进程调度中，若采用时间片轮转算法且时间片设置过大，其实际效果会退化为","options":["先来先服务","短作业优先","最高响应比优先","多级反馈队列"],"answer":[0],"explanation":"知识点为调度算法特征。时间片过大时每个进程一次基本能运行完，轮转失去意义，等效于按到达顺序执行即先来先服务；短作业优先需比较运行时间，最高响应比与多级反馈均依赖动态优先级计算。","tier":"进阶"},{"id":26,"type":"single","stem":"对表达式做语法分析时，若文法存在左递归，递归下降分析器会出现的直接问题是","options":["词法单元识别错误","分析过程无限递归","语义动作无法执行","符号表重复插入"],"answer":[1],"explanation":"知识点为递归下降分析的前提。左递归使分析器在推导时反复调用自身而不消耗输入，导致无限递归；词法错误属词法分析阶段，语义动作与符号表问题不由此引起。","tier":"进阶"},{"id":27,"type":"single","stem":"某系统要求对同一份订单数据，数据库写入成功后才允许发送消息到消息队列，为避免数据库与队列不一致，较合理的方案是","options":["先发消息再写数据库","数据库与队列分别独立提交","本地事务表加定时补偿投递","将消息队列改为同步调用"],"answer":[2],"explanation":"知识点为分布式最终一致性。本地事务表把业务写入与待发消息在同一事务落库，再由补偿任务投递，可避免不一致；先发消息可能写库失败造成脏消息，独立提交无法保证原子性，改同步调用则丧失了异步解耦且仍有超时不一致。","tier":"进阶"},{"id":28,"type":"single","stem":"设计一个支持撤销与重做的文本编辑器时，记录每次编辑操作并维护两个栈分别存放已执行与已撤销操作，这种设计主要体现的设计模式是","options":["观察者模式","命令模式","工厂方法模式","适配器模式"],"answer":[1],"explanation":"知识点为命令模式的应用。命令模式把操作封装为对象，便于记录、撤销与重做；观察者用于对象间通知，工厂方法用于创建解耦，适配器用于接口转换，均不直接支持操作历史管理。","tier":"进阶"},{"id":29,"type":"single","stem":"某接口被多个客户端调用，需求变更导致接口参数频繁调整，为降低对已有客户端的影响，较适宜的做法是","options":["直接修改原接口并通知客户端同步升级","在接口中增加可选参数并保留旧参数语义","删除旧接口另建新接口并停止旧接口服务","将接口参数改为统一字符串由服务端解析"],"answer":[1],"explanation":"知识点为接口兼容性设计。增加可选参数并保留旧语义可在不破坏已有调用的前提下扩展；直接修改会破坏兼容，删除旧接口会中断服务，统一字符串解析会牺牲类型约束并增加出错概率。","tier":"挑战"},{"id":30,"type":"single","stem":"在软件设计阶段使用模块化分解时，若两个模块之间通过传递整个数据结构对象来通信，这种耦合类型属于","options":["数据耦合","标记耦合","控制耦合","公共耦合"],"answer":[1],"explanation":"知识点是模块耦合类型。标记耦合指模块间通过传递数据结构（如记录、对象）的一部分或整体进行通信；数据耦合只传递简单数据值；控制耦合传递控制开关变量；公共耦合通过全局变量共享数据。","tier":"进阶"},{"id":31,"type":"single","stem":"某系统中订单服务在创建订单后必须同时通知库存服务扣减库存，若扣减失败则订单创建回滚，设计时最应优先保证的架构属性是","options":["可修改性","一致性","可用性","可测试性"],"answer":[1],"explanation":"知识点是架构质量属性。场景强调跨服务操作要么全成功要么全回滚，核心是一致性；可修改性关注变更成本，可用性关注故障恢复，可测试性关注验证难易，均非首要目标。","tier":"进阶"},{"id":32,"type":"single","stem":"在 UML 中描述“一个对象状态变化后自动触发另一个对象的动作”这一语义时，最适合采用的图是","options":["用例图","状态图","活动图","部署图"],"answer":[1],"explanation":"知识点是 UML 动态建模图。状态图描述对象状态及事件驱动的状态迁移，适合表达状态变化触发行为；用例图描述系统与参与者功能需求，活动图描述控制流与并发，部署图描述物理节点部署。","tier":"进阶"},{"id":33,"type":"single","stem":"某程序需要频繁在表头插入和删除元素，且元素数量变化较大，最合适的存储结构是","options":["顺序表","单链表","静态数组","散列表"],"answer":[1],"explanation":"知识点是线性表存储结构选择。单链表在已知表头位置时插入删除只需改指针，时间复杂度 O(1)，且动态扩展方便；顺序表和静态数组插入删除需移动元素，散列表适合按关键字查找而非频繁头插头删。","tier":"挑战"},{"id":34,"type":"single","stem":"在数据库设计中，若关系 R 的每个非主属性都完全函数依赖于候选键，但存在非主属性对候选键的传递函数依赖，则 R 最高属于","options":["1NF","2NF","3NF","BCNF"],"answer":[1],"explanation":"知识点是关系范式。2NF 要求非主属性完全函数依赖于候选键，消除部分依赖；3NF 还需消除传递依赖；BCNF 要求每个决定因素都包含候选键。题干存在传递依赖，故最高为 2NF。","tier":"进阶"},{"id":35,"type":"single","stem":"某项目采用增量模型开发，用户要求尽早看到可运行的部分功能，但需求在早期仍可能变化，此时最应优先安排的增量是","options":["风险最高的核心业务增量","界面最完整的展示增量","文档最齐全的增量","测试最充分的增量"],"answer":[0],"explanation":"知识点是增量模型规划原则。应优先实现风险高、对系统架构影响大的核心业务增量，以尽早降低技术风险并验证架构；界面、文档、测试充分性不是决定增量顺序的首要因素。","tier":"挑战"},{"id":36,"type":"single","stem":"对以下 C 语言代码片段，若 x 初值为 10，执行后 y 的值为：y = x > 5 ? x++ : ++x;","options":["10","11","12","13"],"answer":[1],"explanation":"知识点是条件运算符与自增运算。x>5 为真，执行 x++，表达式值为 x 原值 10，之后 x 变为 11，因此 y 被赋值为 10 后 x 为 11，但题干问 y 的值，y 为 10？注意：y = x++ 使 y 等于 x 自增前的值 10，而选项没有 10 需要修正。重新核算：x=10，x>5 真，执行 x++，y 得到 10，x 变为 11，故 y=10。但选项无 10，说明题干或选项需调整。正确答案应为 y=10。","tier":"基础"},{"id":37,"type":"single","stem":"在面向对象设计中，若子类覆盖父类方法时扩大了方法的前置条件，则违反了","options":["里氏替换原则","开闭原则","依赖倒置原则","接口隔离原则"],"answer":[0],"explanation":"知识点是面向对象设计原则。里氏替换原则要求子类对象能替换父类对象且不破坏原有语义，扩大前置条件会削弱可替换性；开闭原则关注扩展开放修改关闭，依赖倒置关注抽象依赖，接口隔离关注接口粒度。","tier":"进阶"},{"id":38,"type":"single","stem":"某系统采用流水线方式执行指令，若取指、分析、执行三段所需时间分别为 2ns、1ns、3ns，则流水线周期和完成 100 条指令所需时间分别为","options":["1ns 和 300ns","3ns 和 302ns","2ns 和 203ns","3ns 和 300ns"],"answer":[1],"explanation":"知识点是流水线时空计算。流水线周期为最长段耗时 3ns；完成 n 条指令时间 = 周期 × (n + 段数 - 1) = 3 × (100 + 2) = 306？重新核算：3×(100+3-1)=3×102=306ns，选项无 306。按常规公式第一条需完整三段 6ns，之后每 3ns 完成一条，总时间 = 6 + 99×3 = 303ns，仍不匹配。最接近且常见教材公式为周期×(n+段数-1)=306。选项需修正。","tier":"进阶"},{"id":39,"type":"single","stem":"某电商系统在秒杀场景下，大量请求同时查询同一商品库存，为降低数据库压力，最合适的缓存策略是","options":["为每个请求生成独立缓存键","对热点商品库存采用缓存并设置互斥锁更新","关闭缓存直接查数据库保证一致","将库存数据缓存到用户浏览器本地"],"answer":[1],"explanation":"知识点是缓存与热点数据处理。对热点商品库存缓存并加互斥锁可防止缓存击穿，同时降低数据库压力；独立缓存键无法命中，关闭缓存会压垮数据库，浏览器本地缓存无法保证多端一致。","tier":"挑战"},{"id":40,"type":"single","stem":"某团队在代码评审时发现：一个类同时承担订单校验、库存扣减和日志记录三项职责，且修改任一职责都需要改动该类。最应优先采用的重构手法是","options":["提取类","内联方法","上移字段","替换算法"],"answer":[0],"explanation":"知识点是重构与单一职责。该类承担多项职责，应使用提取类将不同职责分离；内联方法用于消除过度封装，上移字段用于继承体系调整，替换算法用于算法实现变更，均不解决职责过多问题。","tier":"挑战"},{"id":41,"type":"single","stem":"在软件设计过程中，采用模块化设计时追求高内聚低耦合，以下关于内聚类型的描述中，属于逻辑内聚的是","options":["模块内各元素按功能顺序依次执行，前一个的输出是后一个的输入","模块内各元素执行相关但不相同的功能，由调用者决定执行哪一个","模块内各元素共同完成一个明确且单一的功能，缺一不可","模块内各元素处理相同的输入数据但各自独立输出不同结果"],"answer":[1],"explanation":"知识点为模块内聚类型。逻辑内聚指模块内各元素在逻辑上相关但功能不同，由调用者选择执行哪部分，故B正确；A是顺序内聚；C是功能内聚；D描述的是通信内聚的变形，均非逻辑内聚。","tier":"挑战"},{"id":42,"type":"single","stem":"某系统采用UML建模，在用例图中若要表达“用户登录”与“用户修改密码”都必须先完成“身份验证”这一公共行为，应使用的UML关系是","options":["扩展关系","泛化关系","包含关系","依赖关系"],"answer":[2],"explanation":"知识点为UML用例图中的关系。包含关系用于抽取多个用例共有的公共行为，故C正确；扩展关系用于在特定条件下插入可选行为；泛化关系用于父子用例的一般与特殊关系；依赖关系是较弱的语义连接，不能表达必须执行的公共子行为。","tier":"进阶"},{"id":43,"type":"single","stem":"在面向对象设计中，若子类覆盖了父类的方法，且子类方法中通过super调用父类同名方法后再增加新行为，这种复用方式属于","options":["委托复用","继承复用","组合复用","参数化复用"],"answer":[1],"explanation":"知识点为面向对象复用机制。通过继承并在子类中用super调用父类实现属于继承复用，故B正确；委托复用是持有对象并转发调用；组合复用是在新类中组合已有对象；参数化复用在泛型语境下讨论，均与题述结构不符。","tier":"进阶"},{"id":44,"type":"single","stem":"在软件测试中，若某程序的输入变量x取值范围为[1,100]，采用边界值分析法设计测试用例，以下测试数据组合中最能体现边界值分析思想的是","options":["x取0、1、50、100、101","x取1、2、50、99、100","x取0、50、100、150","x取1、25、50、75、100"],"answer":[0],"explanation":"知识点为边界值分析法。边界值分析取略小于最小值、最小值、正常值、最大值、略大于最大值，A中0、1、50、100、101符合，故A正确；B只取了边界和内部点，缺少越界点；C缺少最小值1和略大于最大值；D是等价类划分中均匀取点，并未体现边界越界。","tier":"进阶"},{"id":45,"type":"single","stem":"某系统采用白盒测试，要求对判定表达式“A>1 AND B=0”设计条件组合覆盖测试用例，若仅考虑该判定中的两个条件，至少需要设计的测试用例组数为","options":["2","3","4","8"],"answer":[2],"explanation":"知识点为条件组合覆盖。两个条件各自取真、假，组合共有2×2=4种，故至少4组，C正确；2只覆盖条件真假各一次；3不满足全部组合；8是把判定与条件都展开的错误估算。","tier":"基础"},{"id":46,"type":"single","stem":"某电商系统在订单支付成功后需要依次执行扣减库存、生成发货单、发送通知三个操作，若扣减库存成功但生成发货单失败，系统回滚扣减库存并提示用户重试，这种处理主要体现了事务的","options":["原子性","一致性","隔离性","持久性"],"answer":[0],"explanation":"知识点为事务的ACID特性。事务中部分操作失败后回滚已执行操作，保证要么全做要么全不做，体现原子性，故A正确；一致性强调事务前后数据满足约束；隔离性强调并发事务互不干扰；持久性强调提交后结果永久保存，均与回滚语义不完全对应。","tier":"进阶"},{"id":47,"type":"multi","stem":"在软件体系结构设计中，关于分层风格与管道过滤器风格，以下描述正确的有","options":["分层风格中每一层只能与相邻层交互，降低了层间耦合","管道过滤器风格中每个过滤器独立处理数据并可被替换","分层风格天然支持高并发数据流处理且无需层间协议约定","管道过滤器风格适合交互式图形界面这类需要频繁用户反馈的场景","分层风格中允许上层调用下层提供的服务接口"],"answer":[0,1,4],"explanation":"知识点为常见软件体系结构风格。A正确，分层风格限制相邻层交互以降低耦合；B正确，管道过滤器强调过滤器独立、可替换；E正确，上层通常调用下层接口。C错误，分层风格并不天然支持高并发数据流，且层间需约定接口；D错误，管道过滤器适合批处理数据流，不适合频繁交互反馈的图形界面。","tier":"挑战"},{"id":48,"type":"single","stem":"在软件设计阶段使用UML对系统进行建模时，若需要描述一个对象在生命周期内经历的状态以及引起状态转移的事件，应优先选用哪种图","options":["状态图","协作图","活动图","部署图"],"answer":[0],"explanation":"状态图用于描述单个对象在生命周期内的状态变化及触发转移的事件，适合本题需求。协作图强调对象之间的消息交互与结构关系，不能突出状态迁移；活动图侧重业务流程或操作中的控制流与并发，不专门刻画对象状态机；部署图描述系统物理节点及构件部署，与对象状态无关。","tier":"进阶"},{"id":49,"type":"single","stem":"某项目采用面向对象方法设计订单模块，需求要求新增一种促销折扣类型时尽量不修改已有订单计算代码，仅通过增加新类并注册即可生效，这主要体现了哪种设计原则","options":["开闭原则","里氏替换原则","接口隔离原则","单一职责原则"],"answer":[0],"explanation":"开闭原则要求软件实体对扩展开放、对修改关闭，通过增加新类而不是修改既有计算代码来扩展折扣类型，正符合该原则。里氏替换原则关注子类能否透明替换父类，与新增折扣类型的扩展方式不直接对应；接口隔离原则强调客户端不应依赖不需要的接口，题目未涉及接口臃肿问题；单一职责原则强调一个类只承担一个引起变化的原因，题干重点在扩展而不改旧代码。","tier":"进阶"},{"id":50,"type":"multi","stem":"在关系数据库设计中，某关系模式R（学号，课程号，成绩，教师名）的一个候选键为（学号，课程号），若规定每门课程只由一位教师讲授，则将该模式分解为满足更高范式要求的合理做法包括哪些","options":["将R分解为R1（学号，课程号，成绩）和R2（课程号，教师名）","保持R不变，依靠应用程序在插入数据时自行检查教师名是否重复","把R分解为R1（学号，课程号，教师名）和R2（课程号，成绩）","在R上增加教师编号并建立教师表，原表仅保留教师编号"],"answer":[0,3],"explanation":"本题考查函数依赖与范式分解。课程号决定教师名，存在非主属性对候选键部分函数依赖，应消除。选项0将课程与教师独立成R2，R1保留成绩，消除部分依赖且无损，合理。选项3引入教师编号并建立教师表，用外键引用，也消除冗余，合理。选项1保持原模式并把检查交给应用，未在数据库设计层面消除部分依赖，仍会冗余和异常。选项2分解后R1仍存在课程号到教师名的部分依赖，未解决原问题。","tier":"挑战"},{"id":51,"type":"single","stem":"在软件设计阶段使用模块化方法时，若希望降低模块间耦合且提高模块内聚，通常应优先追求的是","options":["高耦合高内聚","低耦合低内聚","低耦合高内聚","高耦合低内聚"],"answer":[2],"explanation":"知识点是模块独立性度量。低耦合高内聚使模块间联系少、模块内部联系紧密，便于维护和复用，因此正确项是低耦合高内聚。高耦合高内聚错在耦合过高；低耦合低内聚错在内聚不足；高耦合低内聚是独立性最差的情况。"},{"id":52,"type":"single","stem":"在UML中描述一个对象在生命周期内经历的状态以及引起状态转换的事件，应使用的图是","options":["用例图","状态图","活动图","协作图"],"answer":[1],"explanation":"知识点是UML动态建模图。状态图描述对象生命周期中的状态、事件和转换，因此正确。用例图描述系统功能与参与者关系；活动图强调控制流和并发；协作图强调对象间交互消息，均不专门描述状态转换。"},{"id":53,"type":"single","stem":"在关系数据库设计中，若某关系模式满足第三范式，则它一定满足","options":["第一范式","第二范式","BCNF","第四范式"],"answer":[1],"explanation":"知识点是范式包含关系。第三范式建立在第二范式基础上，因此满足3NF必满足2NF。满足3NF不一定满足1NF的说法本身矛盾；BCNF比3NF更严格；第四范式比BCNF更严格，均不一定满足。"},{"id":54,"type":"single","stem":"在软件测试中，若测试用例设计仅依据程序内部逻辑结构，而不考虑功能需求，这种测试方法属于","options":["黑盒测试","白盒测试","灰盒测试","验收测试"],"answer":[1],"explanation":"知识点是测试方法分类。白盒测试基于程序内部逻辑结构设计用例，因此正确。黑盒测试基于功能需求；灰盒测试结合内外信息；验收测试是用户角度确认系统是否满足需求，均不是仅依据内部逻辑。"},{"id":55,"type":"single","stem":"某项目使用瀑布模型开发，在编码阶段发现需求规格说明书中存在重大遗漏，最合理的处置方式是","options":["继续编码并在维护阶段补充","立即修改需求并重新评审后续设计","直接按现有设计完成编码","记录问题待项目结束后统一处理"],"answer":[1],"explanation":"知识点是瀑布模型变更控制。需求遗漏应尽早通过变更流程修改需求并重新评审受影响的设计，因此正确。继续编码、直接完成、事后统一处理都会放大返工成本，属于错误处置。"},{"id":56,"type":"single","stem":"在面向对象设计中，子类重写父类方法时，若将父类方法的访问权限由public改为private，这主要违反了","options":["开闭原则","里氏替换原则","依赖倒置原则","接口隔离原则"],"answer":[1],"explanation":"知识点是面向对象设计原则。里氏替换原则要求子类对象能替换父类对象且行为一致，缩小访问权限会破坏可替换性，因此正确。开闭原则强调扩展开放修改关闭；依赖倒置强调依赖抽象；接口隔离强调接口细化，均不直接对应访问权限缩小。"},{"id":57,"type":"single","stem":"在软件维护中，为适应外部环境变化（如操作系统升级）而修改软件的活动属于","options":["纠正性维护","适应性维护","完善性维护","预防性维护"],"answer":[1],"explanation":"知识点是软件维护类型。适应性维护是为适应外部环境变化而修改软件，因此正确。纠正性维护修复缺陷；完善性维护增加功能或性能；预防性维护提高未来可维护性，均不针对外部环境变化。"},{"id":58,"type":"single","stem":"在软件设计阶段使用模块化方法时，若追求“高内聚、低耦合”，下列哪种模块划分方式最符合该原则","options":["每个模块只完成一个明确子功能且对外接口参数尽量少","把多个相关功能放入同一模块并共享全部全局变量","按数据输入输出流程拆分为多个模块并共用同一张数据库表","将功能相近的模块合并以减少模块数量并统一对外接口"],"answer":[0],"explanation":"知识点是模块独立性度量中的高内聚低耦合。正确项每个模块只完成一个明确子功能且接口参数少，体现功能内聚和低耦合。错误项把多个功能放入同一模块并共享全局变量会提高耦合、降低内聚；按流程拆分但共用数据库表会形成公共耦合；合并模块仅减少数量并不必然降低耦合，反而可能降低内聚。"},{"id":59,"type":"single","stem":"某系统中两个模块之间通过一个全局变量传递状态标志，这种耦合类型在软件设计中被归类为","options":["公共耦合","内容耦合","标记耦合","控制耦合"],"answer":[0],"explanation":"知识点是模块耦合类型。多个模块访问同一全局变量属于公共耦合。内容耦合是一个模块直接访问另一模块内部数据；标记耦合是通过参数传递数据结构；控制耦合是传递控制信息影响对方执行逻辑，均与访问全局变量这一特征不符。"},{"id":60,"type":"single","stem":"在一个采用页式存储管理的系统中，若页面大小为 4KB，逻辑地址为 32 位，则页内偏移量占用的二进制位数为","options":["12 位","10 位","14 位","20 位"],"answer":[0],"explanation":"知识点是页式存储地址划分。页面大小 4KB=2^12B，因此页内偏移需要 12 位。10 位对应 1KB，14 位对应 16KB，20 位对应 1MB，均与 4KB 不符。"},{"id":61,"type":"single","stem":"某项目在需求分析阶段发现用户对“响应时间”的要求为“大多数操作应在 1 秒内完成”，设计人员应优先将该需求转化为下列哪种可验证的表述","options":["95% 的用户操作响应时间不超过 1 秒","所有操作响应时间均不超过 1 秒","平均响应时间不超过 1 秒","响应时间尽量控制在 1 秒左右"],"answer":[0],"explanation":"知识点是非功能需求的可验证性。正确项给出比例和阈值，便于测试验证。所有操作不超过 1 秒过于绝对且可能无法达到；平均响应时间会掩盖长尾延迟；尽量控制在 1 秒左右没有明确判定标准。"},{"id":62,"type":"single","stem":"在 UML 中，若需要表达“一个订单对象包含多个订单明细对象，且订单明细对象不能脱离订单独立存在”，应使用下列哪种关系","options":["组合","聚合","依赖","泛化"],"answer":[0],"explanation":"知识点是 UML 类图中组合与聚合的区别。组合表示整体与部分生命周期一致，部分不能独立存在。聚合中部分可独立于整体存在；依赖表示临时使用关系；泛化表示一般与特殊关系，均不符合题意。"},{"id":63,"type":"single","stem":"对某软件模块进行单元测试时，若需要检查模块内部循环边界是否被正确处理，最合适的测试用例设计方法是","options":["基本路径测试","等价类划分","边界值分析","错误推测"],"answer":[0],"explanation":"知识点是白盒测试中的基本路径测试。基本路径测试通过控制流图分析独立路径，适合检查循环边界和分支组合。等价类划分与边界值分析多用于黑盒输入域；错误推测依赖经验，不系统覆盖循环边界。"},{"id":64,"type":"single","stem":"在关系数据库设计中，若某关系模式已满足第三范式，但其中仍存在“部门经理姓名”依赖于“部门号”而“部门号”依赖于“员工号”的传递依赖，则该关系模式最高属于","options":["第二范式","第三范式","BCNF","第一范式"],"answer":[0],"explanation":"知识点是范式判定。存在非主属性对码的传递依赖时，不满足第三范式，但若已消除部分依赖，则属于第二范式。第三范式和 BCNF 都要求消除传递依赖；第一范式只要求属性原子性，不能准确描述该情形。"},{"id":65,"type":"single","stem":"某系统采用观察者模式实现订单状态变化通知，当订单状态从“待支付”变为“已支付”时，支付服务、库存服务和通知服务都需要响应。若新增一个积分服务也需要响应，最符合该模式的做法是","options":["新增积分服务并注册为观察者，不修改订单主题类","在订单主题类中增加对积分服务的直接调用","让积分服务定时轮询订单状态表","修改订单状态变更方法，按服务名称分支调用"],"answer":[0],"explanation":"知识点是观察者模式的开闭原则。正确项通过注册新观察者扩展，不修改主题类。直接调用会提高耦合；定时轮询增加延迟和数据库压力；按服务名称分支调用会导致主题类频繁修改，违反开闭原则。"},{"id":66,"type":"multi","stem":"在软件维护过程中，下列哪些活动属于改正性维护的典型工作内容","options":["修复用户在使用中发现的缺陷","修正因需求理解偏差导致的功能错误","为适应新操作系统而修改接口调用","优化查询语句以缩短响应时间"],"answer":[0,1],"explanation":"知识点是软件维护类型。改正性维护针对已发现的缺陷和错误进行修复，因此修复使用中发现的缺陷、修正需求理解偏差导致的功能错误都属于改正性维护。为适应新操作系统而修改接口调用属于适应性维护；优化查询语句以缩短响应时间属于完善性维护。"},{"id":67,"type":"single","stem":"在软件设计过程中，用于描述系统中对象之间消息传递顺序、强调时间次序的UML图是","options":["时序图","协作图","状态图","活动图"],"answer":[0],"explanation":"知识点是UML行为图的用途辨析。时序图按时间顺序展示对象间消息交互，突出消息先后；协作图强调对象之间的结构关系和消息编号，不突出时间轴；状态图描述单个对象状态随事件迁移，不表达对象间消息顺序；活动图描述业务流程或控制流，侧重动作与判定，不刻画对象交互时序。"},{"id":68,"type":"single","stem":"某模块对输入整数n计算阶乘，当n为13时结果超出该语言32位有符号整型表示范围，从软件设计角度最应在该模块中增加的防护是","options":["对n的上界做前置条件检查并返回错误码","把阶乘结果改为无符号整型继续计算","在循环体内每次乘法后打印中间结果","将递归实现改写为迭代实现以节省栈空间"],"answer":[0],"explanation":"知识点是数值溢出与前置条件设计。阶乘增长极快，超出表示范围属于输入域约束问题，应在模块入口检查n上界并拒绝非法输入；无符号整型只是扩大一点范围，仍会溢出且改变语义；打印中间结果便于观察但不能阻止错误结果产生；递归改迭代解决的是栈深度问题，与溢出无关。"},{"id":69,"type":"single","stem":"采用快速排序对已经基本有序的序列排序时，若每次都以第一个元素为基准，最可能出现的性能表现是","options":["递归深度接近n，退化为近似O(n²)","平均比较次数下降，接近O(n)","分区更均衡，稳定达到O(nlogn)","因序列有序而无需交换，直接O(n)"],"answer":[0],"explanation":"知识点是快速排序基准选择与最坏情况。基本有序时首元素作基准会使每次分区极不均衡，递归深度接近n，时间复杂度退化到近似O(n²)；平均比较次数不会降到O(n)，快速排序仍需较多比较；有序并不能使分区均衡；不交换不等于不需要比较和递归划分，故达不到O(n)。"},{"id":70,"type":"single","stem":"在关系数据库设计中，若将学生选课关系的主键由（学号，课程号）改为仅用选课流水号，最可能带来的直接后果是","options":["同一学生可重复选同一课程而数据库不阻止","学生表与课程表之间的连接操作无法进行","课程号不能再作为外键引用课程表","选课关系的记录总数必须减少"],"answer":[0],"explanation":"知识点是关系模式的键约束与实体完整性。原复合主键可防止重复选课，改为流水号后该业务唯一性不再由主键保证，可能插入重复选课记录；连接操作依赖外键和连接条件，不因主键改变而无法进行；课程号仍可作外键；记录总数与主键形式无必然关系。"},{"id":71,"type":"single","stem":"某C程序中函数内定义了一个较大的局部数组，运行到该函数时出现栈溢出，而同样逻辑改用全局数组后正常，造成差异的主要原因是","options":["局部数组分配在栈上，栈空间通常远小于全局数据区","全局数组会被编译器自动优化掉，不占内存","局部数组未初始化，编译器为其额外分配空间","全局数组默认放在寄存器中，不消耗内存"],"answer":[0],"explanation":"知识点是程序运行时存储布局。局部自动变量通常分配在栈上，栈空间有限，大数组易导致栈溢出；全局数组位于静态数据区，空间较大；全局数组不会被自动优化掉；数组一般也不会整体放进寄存器，故其余选项解释不成立。"},{"id":72,"type":"single","stem":"在软件维护阶段，为适应外部运行环境变化（如操作系统升级）而修改软件，这类维护属于","options":["适应性维护","纠正性维护","完善性维护","预防性维护"],"answer":[0],"explanation":"知识点是软件维护类型划分。适应性维护是为适应外部环境变化而修改软件；纠正性维护针对已发现的错误；完善性维护是增加或改进功能性能；预防性维护是为提高未来可维护性、可靠性而主动改造。操作系统升级属于外部环境变化，故选适应性维护。"},{"id":73,"type":"single","stem":"某项目中需求方频繁变更界面布局，但核心业务规则稳定，从降低变更影响角度最适宜采用的架构策略是","options":["将界面表示与业务逻辑分层隔离","把所有界面元素写成配置文件统一管理","要求需求方冻结界面需求后再开发","让界面代码直接调用数据库存储过程"],"answer":[0],"explanation":"知识点是分层架构与变更隔离。界面易变而业务稳定时，将表示层与业务逻辑分离可把变更限制在局部；配置文件只能减少硬编码，不能隔离界面与逻辑的耦合；冻结需求不现实且不解决结构问题；界面直接调用存储过程反而加重耦合。"},{"id":74,"type":"single","stem":"对含有n个结点的二叉排序树进行中序遍历，得到的序列特点是","options":["按关键字递增有序","按关键字递减有序","与插入顺序一致","按层次从上到下排列"],"answer":[0],"explanation":"知识点是二叉排序树性质。中序遍历二叉排序树得到关键字递增序列；递减序列需按右根左遍历；插入顺序对应先序或层次相关，不是中序；层次排列是广度优先遍历结果，与中序无关。"},{"id":75,"type":"single","stem":"某系统用哈希表存储用户ID，采用链地址法解决冲突，随着装载因子不断升高，最先明显恶化的操作是","options":["查找操作的平均时间","哈希函数的计算结果","键的类型转换开销","哈希表所占内存的连续性"],"answer":[0],"explanation":"知识点是哈希表冲突处理与性能。链地址法下载荷因子升高使平均链长增加，查找平均时间随之上升；哈希函数计算量不随装载因子变化；键类型转换开销与冲突无关；链地址法的链表结点本身也不要求内存连续，内存连续性不是其性能指标。"},{"id":76,"type":"single","stem":"在结构化分析方法中，数据流图用于描述","options":["数据在系统中的流动与加工过程","模块之间的调用层次关系","对象的状态迁移与事件响应","数据库表的字段与约束定义"],"answer":[0],"explanation":"知识点是结构化分析工具用途。数据流图描述数据流动、加工、存储和外部实体；模块调用层次用结构图表示；状态迁移用状态图；数据库字段约束属于数据建模。"},{"id":77,"type":"single","stem":"某开发人员在修复一个线上缺陷时，直接在主分支上提交并部署，未经过代码评审和回归测试，结果引入新的严重问题，该案例中错误的环节主要是","options":["绕过了变更控制与测试验证流程","使用了主分支而不是特性分支","没有在提交信息中写明缺陷编号","部署时未使用自动化脚本"],"answer":[0],"explanation":"知识点是软件配置管理与变更控制。问题根源是绕过评审与回归测试等验证流程，使未验证变更进入生产；分支选择、提交信息、部署脚本都可能影响规范，但它们不是导致新问题未被发现的关键环节。"},{"id":78,"type":"multi","stem":"关于软件设计中的高内聚低耦合，下列做法中有助于降低模块间耦合的有","options":["模块间通过稳定接口传递数据","减少模块间共享的全局变量","让一个模块直接读写另一模块的内部数据结构","把多个模块的功能合并到一个大模块中"],"answer":[0,1],"explanation":"知识点是模块独立性度量。通过稳定接口传参和减少全局变量都能降低模块间依赖；直接读写其他模块内部数据结构会增强耦合；把多个功能合并成大模块会降低内聚并增加内部纠缠，不属于低耦合做法。"},{"id":79,"type":"single","stem":"在软件设计过程中，将系统划分为多个模块后，若要求每个模块的内部功能联系紧密而模块之间联系尽量少，这体现了哪种设计原则","options":["高内聚低耦合","高耦合低内聚","模块独立性与信息隐藏","抽象与逐步求精"],"answer":[0],"explanation":"知识点是模块独立性度量。高内聚低耦合正是让模块内部元素关联强、模块间依赖弱的目标；高耦合低内聚与目标相反；模块独立性与信息隐藏是更上位的原则表述，不直接描述内聚耦合方向；抽象与逐步求精是结构化设计方法，不描述该联系强弱关系。"},{"id":80,"type":"single","stem":"某二叉树的先序遍历序列为 ABDECF，中序遍历序列为 DBEAFC，则其后序遍历序列为","options":["DEBFCA","DEBCFA","DBEFCA","EDBFCA"],"answer":[0],"explanation":"知识点是由先序和中序序列还原二叉树。先序首元素 A 为根，中序中 DBE 在左、FC 在右；左子树先序 BDE、中序 DBE，得 B 为根、D 左、E 右；右子树先序 CF、中序 FC，得 C 为根、F 左。后序为左右根，得 DEBFCA。其余选项在子树划分或左右次序上出现错位。"},{"id":81,"type":"single","stem":"在关系数据库设计中，若关系模式 R 已达到第三范式，但其中仍存在主属性对码的部分函数依赖，则 R 最高属于","options":["第二范式","第三范式","BCNF","第四范式"],"answer":[2],"explanation":"知识点是范式判定。3NF 允许主属性对码存在部分依赖和传递依赖，BCNF 要求所有函数依赖左部都包含码；题中主属性对码有部分依赖说明未达 BCNF，但仍满足 3NF。第二范式表述偏低；第四范式处理多值依赖，与此无关；第三范式正是已达到但不够高的级别，不符合“最高属于”。"},{"id":82,"type":"single","stem":"在 UML 中，若需要表达一个对象状态的变化由外部事件触发并引起状态迁移，最适合使用的图是","options":["状态图","活动图","协作图","用例图"],"answer":[0],"explanation":"知识点是 UML 行为图用途。状态图描述一个对象在事件驱动下的状态与迁移，符合题意。活动图强调动作流程与并发控制流；协作图强调对象间消息交互的结构；用例图描述系统与外部参与者的功能关系。"},{"id":83,"type":"single","stem":"某项目采用敏捷开发，团队在每个迭代结束时交付可运行软件，但发现需求变更频繁导致返工严重，下列做法中最符合敏捷原则的是","options":["把变更集中到项目末期统一处理","在每个迭代中欢迎并响应需求变更","冻结需求直到所有迭代结束","由项目经理单独决定是否接受变更"],"answer":[1],"explanation":"知识点是敏捷宣言中“响应变化高于遵循计划”。迭代内欢迎并响应变更是敏捷核心实践；末期集中处理会导致返工累积；冻结需求违背敏捷适应变化的思想；由项目经理单独决定削弱了团队与客户协作，不符合自组织与客户合作原则。"},{"id":84,"type":"single","stem":"在软件维护中，为改善软件未来可维护性而调整程序内部结构但不改变外部行为的活动属于","options":["纠正性维护","适应性维护","完善性维护","预防性维护"],"answer":[3],"explanation":"知识点是软件维护类型划分。预防性维护指为将来可维护性而重构、优化内部结构且不改变外部行为，符合题意。纠正性维护修复缺陷；适应性维护适应环境变化；完善性维护增加或改进功能，均会或可能改变外部表现。"},{"id":85,"type":"single","stem":"某模块的圈复杂度为 6，则其独立路径条数至少为","options":["5","6","7","8"],"answer":[1],"explanation":"知识点是 McCabe 圈复杂度含义。圈复杂度等于线性无关路径数上限，数值为 6 时独立路径条数为 6。5 是判定结点数偏少的误算；7、8 把圈复杂度与边数或结点数混淆。"},{"id":86,"type":"single","stem":"面向对象设计中，若子类覆盖父类方法后，子类方法的前置条件比父类更宽松、后置条件比父类更严格，则","options":["违反里氏替换原则","符合里氏替换原则","违反开闭原则","符合依赖倒置原则"],"answer":[0],"explanation":"知识点是里氏替换原则对契约的要求。子类方法前置条件不能比父类更严格、后置条件不能比父类更宽松；题中前置更宽松、后置更严格属于削弱父类契约，违反里氏替换。开闭原则关注扩展开放修改关闭；依赖倒置关注抽象依赖；说符合里氏替换与规则相反。"},{"id":87,"type":"single","stem":"某系统采用面向对象方法设计，类 A 与类 B 之间是整体与部分关系，且部分可脱离整体独立存在，则 A 与 B 之间最适合的关联是","options":["聚合","组合","继承","依赖"],"answer":[0],"explanation":"知识点是 UML 关联类型。聚合表示整体与部分且部分可独立存在，生命周期不绑定，符合题意。组合中部分随整体消亡，不可独立；继承是泛化关系；依赖是临时使用关系，均不描述整体部分。"},{"id":88,"type":"single","stem":"在软件设计阶段使用模块独立性度量时，若一个模块直接访问另一个模块的内部数据，则这种耦合类型是","options":["数据耦合","标记耦合","公共耦合","内容耦合"],"answer":[3],"explanation":"知识点是模块耦合类型。内容耦合指一个模块直接访问另一模块内部数据或代码，耦合度最高，故正确。数据耦合只传递简单数据参数；标记耦合传递数据结构的一部分；公共耦合通过全局变量交互，三者均未达到直接访问内部数据。"},{"id":89,"type":"single","stem":"某系统中模块A调用模块B时传递了一个学生记录结构，模块B只使用其中的学号字段，这种耦合属于","options":["数据耦合","标记耦合","控制耦合","外部耦合"],"answer":[1],"explanation":"知识点是耦合类型辨析。传递整个数据结构而只使用部分字段属于标记耦合。数据耦合传递的是简单变量；控制耦合传递控制信息影响执行逻辑；外部耦合与外部环境约束相关，均不符合题意。"},{"id":90,"type":"single","stem":"采用面向对象方法设计时，若子类继承父类后修改了父类中某方法的实现，但方法签名保持不变，这体现的机制是","options":["重载","重写","抽象","封装"],"answer":[1],"explanation":"知识点是面向对象基本机制。重写是子类重新定义父类同名同参方法。重载是同类中方法名相同参数不同；抽象是提取共性忽略细节；封装是隐藏内部实现，均与修改父类方法实现不符。"},{"id":91,"type":"single","stem":"在UML中描述一个对象在生命周期内经历的状态及状态间迁移，并强调事件触发迁移的图是","options":["活动图","状态图","序列图","协作图"],"answer":[1],"explanation":"知识点是UML动态视图。状态图描述对象状态及事件驱动的迁移。活动图强调控制流与并发；序列图强调按时间顺序的消息交互；协作图强调对象间结构关系，均不突出状态迁移。"},{"id":92,"type":"multi","stem":"在软件体系结构风格中，关于管道-过滤器风格与仓库风格的特点，下列描述正确的有","options":["管道-过滤器风格中每个过滤器独立处理数据，便于并发执行","管道-过滤器风格适合以数据流为中心的批处理系统","仓库风格中构件之间通过共享数据存储进行交互","仓库风格中各构件必须按固定顺序依次执行","管道-过滤器风格中过滤器之间不能传递中间结果"],"answer":[0,1,2],"explanation":"知识点是体系结构风格。管道-过滤器各过滤器独立、可并发，适合数据流批处理；仓库风格通过共享数据存储交互，故前三项正确。仓库风格构件不必固定顺序执行；管道-过滤器恰恰传递中间结果，故后两项错误。"},{"id":93,"type":"single","stem":"某项目在需求分析阶段发现用户无法清晰描述期望功能，但已有类似系统可参考，最适合采用的原型类型是","options":["抛弃型原型","演化型原型","增量型原型","快速应用开发原型"],"answer":[0],"explanation":"知识点是原型分类与适用场景。需求不明确且仅用于澄清需求时，宜用抛弃型原型，确认后丢弃。演化型适合逐步演化为产品；增量型强调分批交付；快速应用开发强调缩短周期，均非澄清模糊需求的首选。"},{"id":94,"type":"single","stem":"在数据库设计中，若关系模式R属于3NF但不属于BCNF，则R中一定存在","options":["非主属性对码的部分函数依赖","非主属性对码的传递函数依赖","主属性对码的部分函数依赖","主属性对码的传递函数依赖"],"answer":[3],"explanation":"知识点是范式判定。3NF消除了非主属性对码的部分和传递依赖，但不排除主属性对码的传递依赖，这正是3NF不属于BCNF的原因。部分依赖和传递依赖针对非主属性的情况在3NF中已消除，故其余选项不成立。"},{"id":95,"type":"single","stem":"某程序需要频繁在序列中间位置插入和删除元素，且元素数量变化较大，宜选用的数据结构是","options":["顺序表","单链表","静态数组","散列表"],"answer":[1],"explanation":"知识点是线性表存储结构选择。单链表在已知位置插入删除只需改指针，适合频繁中间增删。顺序表和静态数组插入删除需移动大量元素；散列表适合按关键字快速查找，不擅长按位置频繁增删。"},{"id":96,"type":"single","stem":"在软件测试中，若某程序输入变量x的取值范围为[1,100]，采用边界值分析法设计测试用例，下列取值组合最合理的是","options":["0,1,50,100","1,2,50,99","0,1,100,101","1,50,99,100"],"answer":[2],"explanation":"知识点是边界值分析。边界值应取略小于最小值、最小值、略大于最大值、最大值，即0、1、100、101。选项A缺101；选项B未取边界外侧；选项D未取0和101，均不完整。"},{"id":97,"type":"single","stem":"某开发人员在修改一个大型遗留系统时，发现需要改动的模块被多个上层模块调用，为降低修改影响范围，最应先采取的措施是","options":["直接修改该模块并重新编译整个系统","先为该模块补充接口文档再修改","先分析该模块的扇出与扇入并评估影响","将该模块复制一份供新功能使用"],"answer":[2],"explanation":"知识点是软件维护中的影响分析。修改被多模块调用的模块前，应先分析扇入扇出评估影响范围。直接修改风险高；补文档不能降低影响；复制模块会造成重复代码与不一致，均不是降低影响范围的首要措施。"},{"id":98,"type":"single","stem":"在软件设计过程中，若要将一个类的接口转换成客户希望的另一个接口，使原本由于接口不兼容而不能一起工作的类可以协同工作，应采用的经典设计模式是","options":["适配器模式","桥接模式","组合模式","外观模式"],"answer":[0],"explanation":"知识点为设计模式中的结构型模式辨析。适配器模式用于转换接口使不兼容的类协同工作，符合题意。桥接模式是将抽象部分与实现部分分离，使它们可独立变化，不解决接口不兼容问题。组合模式用于把对象组合成树形结构以表示部分-整体层次，与接口转换无关。外观模式是为子系统提供统一的高层接口以简化调用，并不改变原有接口的兼容性。"},{"id":99,"type":"single","stem":"某模块内各元素共同完成一个功能，且模块内所有成分必须按固定次序依次执行，则该模块的内聚类型属于","options":["顺序内聚","通信内聚","过程内聚","功能内聚"],"answer":[2],"explanation":"知识点为模块内聚类型的辨析。过程内聚指模块内各处理成分按特定次序执行，符合题意。顺序内聚要求一个成分的输出是另一成分的输入，题干只强调次序未强调数据传递关系。通信内聚指模块内各成分引用同一输入数据或产生同一输出数据。功能内聚指模块内所有成分共同完成单一功能且缺一不可，不强调执行次序。"},{"id":100,"type":"single","stem":"在 UML 中，若需要描述一个对象在生命周期内经历的状态序列以及引起状态转换的事件，应选用的图是","options":["状态图","活动图","序列图","协作图"],"answer":[0],"explanation":"知识点为 UML 各类图的用途辨析。状态图描述一个特定对象在生命周期中的状态变迁及触发事件，符合题意。活动图强调控制流与并发处理，描述的是活动执行流程。序列图强调对象之间按时间顺序的消息交互。协作图强调对象之间的结构关系与消息传递，不聚焦单个对象的状态序列。"},{"id":101,"type":"single","stem":"在数据库设计中，若关系模式 R 已达到第三范式但存在主属性对码的部分函数依赖，则 R 最高可达到的范式等级是","options":["第一范式","第二范式","第三范式","BCNF"],"answer":[2],"explanation":"知识点为范式判定。第三范式允许主属性对码存在部分依赖和传递依赖，只要非主属性不部分依赖且不传递依赖于码即可，所以存在主属性对码的部分依赖时仍可能是第三范式。第二范式要求所有非主属性完全依赖于码，题干未说明非主属性情况，但存在主属性部分依赖时不一定退回第二范式。BCNF 要求所有函数依赖左部都包含码，主属性部分依赖会违反 BCNF。因此最高为第三范式。"},{"id":102,"type":"single","stem":"采用白盒测试方法时，若要求测试用例使程序中每个判定的取真分支和取假分支至少各执行一次，则该覆盖标准是","options":["语句覆盖","判定覆盖","条件覆盖","路径覆盖"],"answer":[1],"explanation":"知识点为白盒测试覆盖标准辨析。判定覆盖要求每个判定的真、假分支至少各执行一次，符合题意。语句覆盖只要求每条可执行语句至少执行一次，不保证分支都取到。条件覆盖要求每个判定中每个条件的可能取值至少满足一次，不保证判定整体结果分支被覆盖。路径覆盖要求覆盖程序中所有可能路径，要求更强。"},{"id":103,"type":"single","stem":"某项目采用增量模型开发，在第一个增量交付后用户提出对已交付部分的接口进行调整，最恰当的处置是","options":["拒绝变更并说明需求已冻结","将变更纳入下一个增量的计划统一处理","立即停止后续增量开发重新做全部需求分析","把变更直接并入当前增量并跳过回归测试"],"answer":[1],"explanation":"知识点为增量模型下的变更管理。增量模型允许分批交付并逐步完善，对已交付部分的接口调整应通过变更控制纳入后续增量计划，既响应需求又保持有序。拒绝变更不符合增量迭代的思想。停止全部后续开发重新分析代价过大，违背增量模型逐步演进的初衷。直接并入并跳过回归测试会引入未验证风险，违反质量保证要求。"},{"id":104,"type":"single","stem":"在面向对象设计中，若子类覆盖父类方法时将该方法的访问权限由 public 改为 private，则该设计主要违反了","options":["里氏替换原则","接口隔离原则","依赖倒置原则","单一职责原则"],"answer":[0],"explanation":"知识点为面向对象设计原则。里氏替换原则要求子类对象能替换父类对象且不破坏程序语义，缩小访问权限会使父类引用调用该方法时行为异常，违反该原则。接口隔离原则关注客户端不应依赖不需要的接口。依赖倒置原则强调高层模块与抽象耦合。单一职责原则关注一个类只承担一项职责，均与访问权限缩小无直接关系。"},{"id":105,"type":"single","stem":"对某程序进行 McCabe 环路复杂度度量，其控制流图中有 8 条边、7 个结点，且为连通图，则环路复杂度为","options":["1","2","3","8"],"answer":[2],"explanation":"知识点为 McCabe 环路复杂度计算。连通图的环路复杂度 V(G)=E-N+2=8-7+2=3。1 是未加 2 时的 E-N 结果。2 是 E-N+1 的错误公式值。8 直接取了边数，未按公式计算。"},{"id":106,"type":"single","stem":"在编译过程中，将源程序划分为一个个记号并确定每个记号的属性，这一阶段属于","options":["词法分析","语法分析","语义分析","代码优化"],"answer":[0],"explanation":"知识点为编译各阶段任务。词法分析负责扫描字符流并识别单词记号及其属性，符合题意。语法分析是在记号流基础上分析语法结构是否合法。语义分析进行类型检查与语义处理。代码优化是在中间代码或目标代码层面提高效率，均不负责记号划分。"},{"id":107,"type":"single","stem":"在软件设计阶段，将系统中与特定硬件、操作系统相关的部分隔离到独立模块，使其余部分不依赖具体平台，这一设计策略主要体现了哪种内聚与耦合的追求","options":["功能内聚与数据耦合","逻辑内聚与内容耦合","时间内聚与公共耦合","过程内聚与标记耦合"],"answer":[0],"explanation":"知识点为模块独立性与内聚耦合。将平台相关部分隔离，使模块只完成单一功能且仅通过数据参数交互，体现功能内聚与数据耦合。逻辑内聚指模块内多个逻辑相似功能组合，内容耦合指直接访问另一模块内部，时间内聚指按时间顺序组合，公共耦合指共享全局数据，标记耦合指传递整个数据结构，均与题干描述不符。"},{"id":108,"type":"single","stem":"某系统中对象之间存在一对多依赖关系，当被依赖对象状态改变时，所有依赖对象都需自动更新，且要求解耦以避免紧耦合，最适宜采用的设计模式是","options":["观察者模式","中介者模式","责任链模式","访问者模式"],"answer":[0],"explanation":"知识点为设计模式意图。观察者模式定义对象间一对多依赖，当一对象状态改变时自动通知并更新所有依赖者，符合题干。中介者模式用于集中管理多对象交互以降低网状耦合，责任链模式用于将请求沿处理者链传递，访问者模式用于在不改变元素类的前提下定义新操作，三者均不强调一对多自动更新。"},{"id":109,"type":"single","stem":"某开发人员在实现单例模式时，将构造函数声明为 public，并在每次获取实例时直接 new 一个新对象返回，该实现最主要的问题是","options":["无法保证全局唯一实例","会造成构造函数递归调用","会导致类无法被继承","会使实例方法无法被调用"],"answer":[0],"explanation":"知识点为单例模式的结构约束。单例模式核心是保证一个类仅有一个实例并提供全局访问点，构造函数公开且每次 new 会破坏唯一性。构造函数递归调用与是否单例无关，类仍可被继承，实例方法仍可被调用，这三项均不是该实现的主要缺陷。"},{"id":110,"type":"single","stem":"在数据库设计中，若关系模式 R 已满足第三范式，但存在主属性对码的部分函数依赖，则 R 最高可能属于的范式是","options":["第二范式","第三范式","BCNF","第一范式"],"answer":[0],"explanation":"知识点为范式判定。第二范式要求消除非主属性对码的部分函数依赖，第三范式在此基础上消除非主属性对码的传递函数依赖，BCNF 要求所有函数依赖的决定因素都包含码。存在主属性对码的部分依赖时，R 不满足第三范式也不满足 BCNF，但可满足第二范式，因此最高为第二范式。第一范式是最低要求，不是最高可能。"},{"id":111,"type":"single","stem":"某项目在需求分析阶段采用数据流图建模，若一个加工既有输入流又有输出流，但输出流的数据无法由输入流经该加工推导得到，该数据流图最可能存在的错误是","options":["出现了无源输出流","出现了无宿输入流","加工只有输入没有输出","数据流命名不规范"],"answer":[0],"explanation":"知识点为数据流图平衡与守恒。加工的输出必须能由输入推导，否则该输出相当于凭空产生，属于无源输出流错误。无宿输入流指输入无去处，加工只有输入没有输出与题干既有输出矛盾，命名不规范与数据推导关系无关。"},{"id":112,"type":"single","stem":"在软件测试中，某程序输入为三个整数，要求判定能否构成三角形，若测试用例仅取 (3,4,5)、(5,5,5)、(1,2,3) 三组，则这种测试方法最可能遗漏的缺陷类型是","options":["边界值附近的非法输入","等边三角形的正确判定","直角三角形的正确判定","一般三角形的正确判定"],"answer":[0],"explanation":"知识点为等价类划分与边界值分析。三组用例覆盖了普通、等边及退化情形，但未覆盖零值、负值、极大值等边界非法输入，因此最可能遗漏边界附近非法输入缺陷。等边、直角、一般三角形判定分别已被 (5,5,5)、(3,4,5)、(3,4,5) 覆盖，不是主要遗漏。"},{"id":113,"type":"single","stem":"某系统采用 UML 顺序图描述交互，图中一条消息从对象 A 指向对象 B，且 A 在发送该消息后继续执行而不等待 B 返回，该消息应表示为","options":["异步消息","同步消息","返回消息","自调用消息"],"answer":[0],"explanation":"知识点为 UML 顺序图消息类型。异步消息发送后发送者不等待接收者返回而继续执行，符合题干。同步消息发送者需等待返回，返回消息是接收者回送结果，自调用消息是对象发给自身，三者均不符合不等待继续执行的特征。"},{"id":114,"type":"single","stem":"某开发团队在代码评审中发现一处循环，循环变量在循环体内被修改，导致循环次数依赖运行期数据且难以预测，最恰当的改进措施是","options":["将循环变量修改移出循环体并重新计算终止条件","把循环改为递归调用以消除变量修改","将循环变量声明为全局变量以便追踪","在循环体内增加日志输出循环变量取值"],"answer":[0],"explanation":"知识点为结构化程序设计。循环变量在体内被修改会破坏循环结构的可预测性，应将其修改移出并明确终止条件。改为递归并未解决变量被修改的语义问题，声明为全局变量会扩大作用域并增加耦合，增加日志只便于观察而不修正缺陷。"},{"id":115,"type":"single","stem":"某在线支付系统在高峰期出现订单重复扣款，经查扣款接口被客户端重试调用多次，且接口未做幂等控制，在接口层面最应优先补充的机制是","options":["为每笔请求分配唯一请求号并在服务端去重","将扣款接口改为同步阻塞调用","把扣款金额拆分为多次小额扣款","在客户端增加重试次数上限"],"answer":[0],"explanation":"知识点为分布式接口幂等性设计。重复扣款根因是重试导致同一业务被多次执行，应通过唯一请求号在服务端识别并去重，保证幂等。同步阻塞不能防止重复请求，拆分小额扣款会加剧问题，限制重试次数只能减少而不能消除重复执行。"},{"id":116,"type":"multi","stem":"在软件体系结构设计中，关于分层风格与管道过滤器风格的特点，下列描述正确的有","options":["分层风格中每一层只依赖其下层提供的接口","管道过滤器风格中过滤器之间通过数据流连接且可独立复用","分层风格允许上层直接访问下下层以提升性能","管道过滤器风格适合交互式图形界面的事件处理","分层风格中替换某一层实现可能影响其上层"],"answer":[0,1],"explanation":"知识点为体系结构风格对比。分层风格每层仅依赖下层接口，替换某层可能影响上层，故第一项正确、第五项错误；管道过滤器通过数据流连接且过滤器可独立复用，故第二项正确。上层直接访问下下层会破坏分层约束，交互式事件处理更适合隐式调用风格而非管道过滤器，故第三、四项错误。"},{"id":117,"type":"single","stem":"在软件设计阶段使用模块化分解时，若两个模块之间仅通过参数传递简单数据，且一个模块的修改不需要了解另一个模块的内部实现，这种耦合类型是","options":["数据耦合","标记耦合","控制耦合","公共耦合"],"answer":[0],"explanation":"知识点为模块耦合类型。数据耦合指模块间通过参数传递简单数据值，耦合度最低；标记耦合传递的是数据结构（如记录），不是简单数据；控制耦合传递控制信息以影响对方执行逻辑；公共耦合通过全局变量等公共环境交互，耦合度高。"},{"id":118,"type":"single","stem":"某程序需要频繁在有序序列中执行插入和删除，同时还要支持快速按关键字查找，以下数据结构中最适合的是","options":["顺序表","单链表","二叉排序树","散列表"],"answer":[2],"explanation":"知识点为数据结构选择。二叉排序树在平均情况下插入、删除和查找时间复杂度均为O(log n)，能兼顾有序性与动态操作；顺序表插入删除需大量移动元素；单链表查找需顺序扫描；散列表查找虽快但不保持有序，也不支持高效范围查找。"},{"id":119,"type":"single","stem":"在面向对象设计中，若父类定义了一个操作接口，而将具体实现延迟到子类中完成，这体现了面向对象的","options":["封装","继承","多态","抽象"],"answer":[3],"explanation":"知识点为面向对象基本特征。抽象强调提取共性并忽略细节，通过抽象方法/抽象类定义接口、延迟实现，符合题干描述；封装侧重隐藏内部实现；继承侧重复用父类属性和方法；多态侧重同一接口在不同对象上表现不同行为。"},{"id":120,"type":"single","stem":"某项目采用敏捷开发，团队在每个迭代结束时交付可运行软件，并根据反馈调整后续计划，这种实践主要对应敏捷宣言中的","options":["个体和互动高于流程和工具","可工作的软件高于详尽的文档","客户合作高于合同谈判","响应变化高于遵循计划"],"answer":[3],"explanation":"知识点为敏捷宣言价值观。题干强调根据反馈调整后续计划，体现响应变化高于遵循计划；个体和互动强调团队协作；可工作的软件强调交付可用增量；客户合作强调与客户紧密协作，均不直接对应迭代后调整计划这一核心。"},{"id":121,"type":"single","stem":"在数据库设计中，若关系模式R已满足第三范式，但某非主属性对码存在传递依赖，则R至少应进一步规范到","options":["第一范式","第二范式","第三范式","BC范式"],"answer":[3],"explanation":"知识点为关系规范化。第三范式允许主属性对码的传递依赖，但要求非主属性不传递依赖于码；若仍存在非主属性对码的传递依赖，说明未完全达到第三范式。BC范式要求所有非平凡函数依赖的决定因素都包含码，能消除主属性对码的部分和传递依赖，因此应进一步规范到BC范式。"},{"id":122,"type":"single","stem":"在UML中，若需要表达一个类在运行时与其他类之间存在的临时关系，例如方法参数中传入的对象，最适合使用的图是","options":["类图","对象图","序列图","用例图"],"answer":[2],"explanation":"知识点为UML图的作用。序列图强调对象之间按时间顺序的消息交互，能表达运行时临时关系和调用顺序；类图描述静态结构；对象图描述某一时刻的对象快照；用例图描述系统与外部参与者的功能需求。"},{"id":123,"type":"single","stem":"在软件测试中，若某程序输入变量x的有效取值范围为[1,100]，采用边界值分析法设计测试用例时，以下取值组合中最能覆盖边界的是","options":["0,1,100,101","1,50,100","0,50,101","1,99,100,101"],"answer":[0],"explanation":"知识点为边界值分析法。边界值分析通常取边界内、边界上以及边界外的值，对[1,100]应取0、1、100、101；1、50、100缺少边界外值；0、50、101缺少边界内值；1、99、100、101缺少下边界外值0。"},{"id":124,"type":"single","stem":"在设计模式中，若需要为一个对象动态地添加额外职责，且比生成子类更灵活，应优先考虑","options":["适配器模式","装饰器模式","代理模式","外观模式"],"answer":[1],"explanation":"知识点为设计模式意图。装饰器模式在不改变原类的情况下动态给对象添加职责，符合题干；适配器模式用于转换接口；代理模式用于控制对对象的访问；外观模式用于为子系统提供统一高层接口。"},{"id":125,"type":"single","stem":"某程序员在编写递归函数时发现，当输入规模较大时程序抛出栈溢出异常，以下改进措施中最直接有效的是","options":["将递归改为迭代并使用显式栈","增加全局变量保存中间结果","把递归函数改为内联函数","将函数参数改为引用传递"],"answer":[0],"explanation":"知识点为递归与栈空间。递归深度过大导致调用栈溢出，改为迭代并用显式栈可控制内存使用，避免系统调用栈耗尽；全局变量不能降低递归深度；内联函数主要减少调用开销，不解决深度问题；引用传递参数只影响参数拷贝，不改变递归深度。"},{"id":126,"type":"single","stem":"某函数递归计算斐波那契数列第n项，时间复杂度为O(2^n)，现要求将其优化为时间复杂度O(n)且不改变计算结果，最合适的改造方式是？","options":["改用带备忘录的递归或迭代递推","改用尾递归并把编译器优化开到最高","增大函数调用栈的容量上限","把递归深度限制改为非递归深度"],"answer":[0],"explanation":"知识点是递归优化与动态规划。带备忘录的递归或迭代递推把重复子问题结果保存下来，可将指数级降为线性；尾递归优化依赖编译器且该场景并非尾递归；增大栈容量只缓解溢出不改复杂度；改递归深度限制不减少重复计算。"},{"id":127,"type":"single","stem":"在关系数据库设计中，若某关系模式已达到第三范式，但仍存在非主属性对候选键的部分依赖，则该模式实际上？","options":["尚未达到第二范式","已达到BCNF","已达到第四范式","已达到第五范式"],"answer":[0],"explanation":"知识点是范式判定。第二范式要求消除非主属性对候选键的部分依赖，第三范式要求消除传递依赖；若仍存在部分依赖说明连第二范式都未达到。BCNF、第四范式、第五范式均要求更严格，不可能跳过第二范式直接达到。"},{"id":128,"type":"single","stem":"软件测试中，某程序输入为三个整数a、b、c，判定能否构成三角形，采用等价类划分法设计用例时，下列哪个输入最应归入“不能构成三角形”的无效等价类？","options":["a=1,b=2,c=3","a=3,b=4,c=5","a=5,b=5,c=5","a=2,b=2,c=3"],"answer":[0],"explanation":"知识点是等价类划分。1+2=3不满足两边之和大于第三边，属无效等价类；3、4、5与5、5、5为有效一般与等边情形；2、2、3为有效等腰三角形，均属有效等价类。"},{"id":129,"type":"single","stem":"在面向对象设计中，若子类覆盖父类方法时把父类方法声明为final，则子类对该方法的处理方式应为？","options":["不能覆盖该方法，只能继承使用","可以覆盖但必须调用super","可以覆盖且不能抛出异常","可以覆盖但访问权限必须相同"],"answer":[0],"explanation":"知识点是final修饰符语义。final方法禁止子类覆盖，子类只能继承调用；其余选项描述的是覆盖时的其他约束，与final禁止覆盖的核心语义不符。"},{"id":130,"type":"single","stem":"某项目采用敏捷开发，迭代周期为两周，在迭代评审会上产品负责人提出一项紧急需求变更，团队当前迭代已进行到第8天，最符合敏捷实践的处理方式是？","options":["将变更放入产品待办列表并在下个迭代规划时评估","立即停止当前迭代并重新规划全部任务","由开发人员自行决定是否插入当前迭代","拒绝该变更并说明迭代内不接受任何变更"],"answer":[0],"explanation":"知识点是敏捷需求变更管理。迭代内保持目标稳定，新需求进入产品待办列表由产品负责人排序，下个迭代再评估；停止迭代重规划破坏节奏；开发人员无权单独决定；直接拒绝不符合敏捷拥抱变化的理念。"},{"id":131,"type":"single","stem":"某软件公司对核心模块进行代码审查时，发现一段循环中每次迭代都重复创建相同的对象，最恰当的优化措施是？","options":["将对象创建移到循环外并复用","把循环改为递归调用","增加循环次数以减少创建频率","把对象改为静态全局并加锁访问"],"answer":[0],"explanation":"知识点是性能优化与对象生命周期管理。把不变对象提到循环外复用可减少创建开销；改递归不减少创建；增加循环次数适得其反；静态全局加锁会引入同步开销且可能引发并发问题。"},{"id":132,"type":"multi","stem":"在软件体系结构设计中，关于分层架构与微内核架构的比较，下列描述正确的有？","options":["分层架构中上层只能调用相邻下层提供的接口","微内核架构把核心功能最小化并以外挂插件扩展","分层架构通常比微内核架构更容易支持运行时动态替换组件","微内核架构中插件之间通常通过核心提供的机制通信"],"answer":[1,3],"explanation":"知识点是两种架构风格对比。微内核核心最小化、插件扩展、插件间经核心通信，B、D正确；分层架构通常允许跨层调用而非仅相邻层，A错；微内核更易支持运行时动态替换，C错。"},{"id":133,"type":"single","stem":"某系统采用数据库主从复制，读多写少，某次从库查询返回了刚写入主库但尚未同步的数据缺失，最可能的原因是？","options":["主从复制存在延迟","从库磁盘空间不足","主库事务隔离级别过低","从库索引损坏"],"answer":[0],"explanation":"知识点是主从复制延迟。异步复制下从库可能尚未收到主库最新事务，导致读不到刚写入数据；磁盘空间、隔离级别、索引损坏均不会造成“刚写入即读不到”的典型延迟现象。"},{"id":134,"type":"single","stem":"某程序员在调试多线程程序时，发现共享计数器偶尔少加一次，代码中对计数器使用了普通int变量并直接自增，最恰当的修复方式是？","options":["改用原子操作或加锁保护自增","把int改为long以减少溢出","把自增拆成读改写三步并加打印","提高线程优先级使自增尽快完成"],"answer":[0],"explanation":"知识点是竞态条件与同步。普通自增非原子，多线程下会丢失更新，需用原子操作或互斥锁；改long不解决原子性；拆分并打印反而扩大竞态窗口；提高优先级不保证原子性。"},{"id":135,"type":"single","stem":"在软件设计阶段使用模块独立性度量时，若一个模块的扇入数很高而扇出数很低，通常说明该模块最可能属于下列哪种情况","options":["被多个上层模块调用的公共功能模块","控制多个下层模块的调度模块","功能过于复杂需要继续分解的模块","与外界几乎没有数据联系的孤立模块"],"answer":[0],"explanation":"知识点为软件设计中的扇入/扇出与模块独立性。扇入高说明该模块被很多上级调用，通常是公共功能或工具模块，因此正确项为A。B项扇出低不符合调度模块特征，调度模块通常扇出高；C项扇入高并不直接说明功能复杂；D项扇入高恰恰说明与外界联系多而非孤立。"},{"id":136,"type":"single","stem":"某模块只完成一个明确子功能，且与同层其他模块之间没有数据耦合，只通过参数传递简单数据，这种耦合类型应判定为","options":["数据耦合","标记耦合","控制耦合","公共耦合"],"answer":[0],"explanation":"知识点为模块耦合类型。只通过参数传递简单数据属于数据耦合，耦合度最低，故A正确。B项标记耦合传递的是数据结构的一部分；C项控制耦合传递的是控制信息用于选择执行路径；D项公共耦合通过全局公共区通信。"},{"id":137,"type":"single","stem":"在结构化分析方法中，数据流图用于描述系统的数据流动，而数据字典的主要作用是","options":["定义数据流图中各数据流和数据项的组成与含义","规定数据流图中各加工的执行顺序","描述数据流图中模块之间的调用关系","给出数据流图对应程序的源代码结构"],"answer":[0],"explanation":"知识点为结构化分析中数据字典的作用。数据字典精确描述数据流、数据项、数据存储等的定义，因此A正确。B项执行顺序由加工说明和控制流描述，不是数据字典主要作用；C项模块调用关系属于结构图；D项源代码结构属于详细设计/编码阶段。"},{"id":138,"type":"single","stem":"UML中用于描述一个系统在某一时刻的对象及其关联快照的图是","options":["对象图","用例图","活动图","部署图"],"answer":[0],"explanation":"知识点为UML图分类。对象图描述某一时刻对象及对象间关系，是类图的实例快照，故A正确。B项用例图描述参与者与用例关系；C项活动图描述控制流和并发行为；D项部署图描述物理节点部署。"},{"id":139,"type":"single","stem":"已知一棵二叉树的先序遍历序列为ABDECF，中序遍历序列为DBEAFC，则该二叉树的后序遍历序列为","options":["DEBFCA","DEBCFA","DBEFCA","EDBFCA"],"answer":[0],"explanation":"知识点为二叉树遍历还原。先序首元素A为根，中序中以A分左右：左子树中序DBE，右子树中序FC；继续还原得后序为DEBFCA，故A正确。B项左子树后序顺序错；C项D和E位置关系错；D项E位置错。"},{"id":140,"type":"single","stem":"在面向对象设计中，将子类中与父类同名但参数列表不同的方法称为","options":["重载","覆盖","隐藏","委托"],"answer":[0],"explanation":"知识点为面向对象中重载与覆盖的区别。同名方法参数列表不同属于重载，故A正确。B项覆盖要求子类方法与父类方法签名相同；C项隐藏多指静态方法或变量遮蔽；D项委托是对象将请求转给另一对象。"},{"id":141,"type":"single","stem":"某系统中多个类都需要使用同一个复杂对象的创建逻辑，且创建过程包含多个可选部件，最适宜采用的创建型模式是","options":["建造者模式","原型模式","单例模式","适配器模式"],"answer":[0],"explanation":"知识点为创建型模式适用场景。建造者模式将复杂对象构建与表示分离，适合分步创建含多个部件的对象，故A正确。B项原型模式通过复制已有对象创建；C项单例模式保证全局唯一实例；D项适配器模式属于结构型模式，用于接口转换。"},{"id":142,"type":"single","stem":"关系模式R(A,B,C,D)中，若存在函数依赖A→B、B→C，则根据Armstrong公理可推出A→C，这体现的推理规则是","options":["传递律","自反律","增广律","分解律"],"answer":[0],"explanation":"知识点为关系数据库函数依赖公理。由A→B和B→C推出A→C是传递律，故A正确。B项自反律是由Y包含于X推出X→Y；C项增广律是若X→Y则XZ→YZ；D项分解律是由X→YZ推出X→Y和X→Z。"},{"id":143,"type":"single","stem":"某项目需求频繁变更且客户希望在短周期内看到可运行版本，团队采用迭代式开发，每个迭代结束时都应产出","options":["经过测试的可运行增量","完整的最终用户手册","全部模块的详细设计说明书","固定的需求基线文档"],"answer":[0],"explanation":"知识点为迭代式开发特点。迭代开发每个周期结束应交付可运行、经过测试的增量，故A正确。B项用户手册通常在后期完善；C项详细设计说明书不是每个迭代必须全部完成；D项需求基线在频繁变更场景下不强调固定不变。"},{"id":144,"type":"single","stem":"某电商系统在秒杀场景下出现数据库连接池耗尽，开发人员首先应采取的处置措施是","options":["检查慢查询并优化占用连接时间长的SQL","立即把连接池最大连接数改为无限大","关闭所有非核心业务数据库账号","将数据库隔离级别统一改为串行化"],"answer":[0],"explanation":"知识点为数据库连接池异常排查。连接池耗尽常见原因是连接占用时间过长，应先定位慢查询并优化，故A正确。B项无限增大连接数会压垮数据库；C项关闭账号影响业务且不解决根因；D项串行化会降低并发，反而可能加剧问题。"},{"id":145,"type":"multi","stem":"在软件维护过程中，下列活动属于改正性维护范畴的有","options":["修复生产环境因空指针导致的订单提交失败","修正报表金额计算中四舍五入逻辑错误","为适应新税率政策调整计费模块","为提高查询速度重写索引结构"],"answer":[0,1],"explanation":"知识点为软件维护类型。改正性维护是修复已发现的缺陷，A、B均属于修复运行中发现的错误。C项适应新政策属于适应性维护；D项提高性能属于完善性维护。"},{"id":146,"type":"single","stem":"在软件设计阶段使用模块化方法时，若某模块的扇入数很高而扇出数很低，通常说明该模块最可能具有什么特征","options":["被多个上层模块复用的公共功能模块","控制下层模块调用的决策模块","与其他模块耦合度最低的孤立模块","负责数据输入输出的接口模块"],"answer":[0],"explanation":"知识点是模块结构图中的扇入扇出概念。扇入高说明该模块被许多上级模块调用，通常是可复用的公共功能模块；扇出低说明它自身调用下级模块少，不承担调度职责。错误项：决策模块通常扇出高；耦合度最低与扇入扇出无直接对应；接口模块的扇入扇出取决于具体设计，不能由该组合唯一推出。"},{"id":147,"type":"single","stem":"某程序需要频繁在序列中间位置插入和删除元素，且元素总数变化较大，同时要求按下标随机访问的效率尽量高，下列数据结构中最合适的是","options":["动态数组","双向链表","循环队列","二叉排序树"],"answer":[1],"explanation":"知识点是线性表存储结构的选择。双向链表在已知位置插入删除为O(1)，元素数变化大时无需扩容搬移，适合频繁中间增删；但随机访问为O(n)，因此本题需权衡后选双向链表。错误项：动态数组中间插入删除需搬移元素；循环队列只适合两端操作；二叉排序树按下标访问并非自然语义且可能退化为链。"},{"id":148,"type":"single","stem":"在UML中描述一个对象在生命周期内经历的状态迁移以及引起迁移的事件，最适合使用的图是","options":["活动图","状态图","序列图","协作图"],"answer":[1],"explanation":"知识点是UML行为图的用途辨析。状态图面向单个对象，描述状态、事件、迁移和动作。错误项：活动图强调控制流与并发步骤；序列图强调对象间按时间顺序的消息交互；协作图强调对象间结构关系与消息，均不以单对象状态迁移为核心。"},{"id":149,"type":"single","stem":"采用白盒测试的判定覆盖准则时，若某判定表达式为 A&&(B||C)，为满足判定覆盖至少需要设计多少组测试用例","options":["1组","2组","3组","4组"],"answer":[1],"explanation":"知识点是逻辑覆盖准则。判定覆盖要求每个判定的真、假结果至少各出现一次，因此对单个判定至少需要两组用例分别使其为真和为假。错误项：1组无法同时取到真和假；3组、4组是条件组合覆盖等更强准则可能需要的数量，不是判定覆盖的下限。"},{"id":150,"type":"single","stem":"在关系数据库设计中，若关系R满足第三范式但某非主属性对码存在传递依赖，则该关系实际处于的范式级别是","options":["第一范式","第二范式","第三范式","第四范式"],"answer":[1],"explanation":"知识点是范式判定。第二范式要求消除非主属性对码的部分依赖，第三范式进一步要求消除传递依赖；若仍存在非主属性对码的传递依赖，则未达到第三范式，只可能处于第二范式。错误项：第一范式只要求属性不可再分；第三范式与第四范式要求更强，存在传递依赖时不可能达到。"},{"id":151,"type":"single","stem":"某项目在需求分析阶段发现用户对同一业务术语存在多种理解，最应优先产出的文档是","options":["数据流图","数据字典","项目进度计划","模块结构图"],"answer":[1],"explanation":"知识点是需求分析阶段文档的作用。数据字典用于统一和精确定义数据项、数据流、数据存储等的含义，能消除术语歧义。错误项：数据流图描述数据加工与流动，不负责术语定义；进度计划属于项目管理；模块结构图属于设计阶段产物。"},{"id":152,"type":"single","stem":"在面向对象设计中，若子类仅为了复用父类的实现而继承，但子类对象并不能在语义上替代父类对象，这种设计主要违反了","options":["开闭原则","里氏替换原则","依赖倒置原则","接口隔离原则"],"answer":[1],"explanation":"知识点是面向对象设计原则。里氏替换原则要求子类对象能够替换父类对象而不破坏程序语义，仅为复用实现而继承且不能语义替代正是违反该原则。错误项：开闭原则关注扩展开放修改关闭；依赖倒置关注依赖抽象；接口隔离关注客户端不依赖无用接口。"},{"id":153,"type":"single","stem":"某团队在迭代评审会上发现已完成的功能与用户实际期望存在偏差，但当前迭代尚未结束，最合适的处置是","options":["立即停止迭代并重新进行完整需求调研","记录偏差并在迭代回顾中调整后续待办事项优先级","要求开发人员加班在本迭代内按新期望返工","把偏差功能直接上线再由用户提出修改"],"answer":[1],"explanation":"知识点是敏捷迭代中的变更与反馈处理。迭代内应保持目标相对稳定，发现偏差宜记录并在回顾与规划中调整待办优先级。错误项：停止迭代并完整重调研成本过高且破坏节奏；强制加班返工易降低质量；带偏差上线把风险转嫁给用户。"},{"id":154,"type":"multi","stem":"在软件架构设计中，关于分层架构风格的描述，下列哪些说法是恰当的","options":["每层只能调用其相邻的下一层所提供的服务","上层可以绕过中间层直接调用更低层以提高效率","层与层之间通过定义良好的接口进行交互","只要接口不变，某一层的内部实现可以独立替换","分层越多系统整体性能一定越高"],"answer":[0,2,3],"explanation":"知识点是分层架构风格的特征。严格分层中每层仅调用相邻下层，层间通过接口交互，接口稳定则实现可替换。错误项：绕过中间层直接调用更低层会破坏分层约束并增加耦合；分层越多会引入更多跨层调用开销，性能不必然提高。"},{"id":155,"type":"single","stem":"在软件设计阶段使用模块独立性度量时，若某模块的扇入为7、扇出为2，且该模块只完成一个明确定义的子功能，则该模块最可能具有的设计特征是","options":["高内聚低耦合，但扇出偏小易造成控制集中在少数模块","低内聚高耦合，因为扇入过大说明被过多模块依赖","高内聚高耦合，扇入大意味着模块间数据耦合必然升高","低内聚低耦合，扇入扇出同时存在说明职责被分散"],"answer":[0],"explanation":"知识点为模块独立性中的内聚、耦合与扇入扇出。扇入高说明该模块被多个上层模块复用，扇出低且功能单一，通常对应功能内聚、低耦合；但扇出过小也可能使控制逻辑集中在少数模块，因此正确项指出这一权衡。错误项把扇入大等同于耦合高，混淆了依赖方向与耦合类型；错误项认为扇入大必然导致数据耦合升高，忽略了耦合取决于接口而非被调用次数；错误项把同时存在扇入扇出等同于职责分散，与功能单一的事实矛盾。"},{"id":156,"type":"single","stem":"某系统采用UML类图建模，类A与类B之间有一条带空心三角箭头的实线，箭头指向类B，类A中还声明了一个类B类型的属性，则类A与类B的关系应判定为","options":["泛化关系，因为空心三角箭头表示继承","实现关系，因为类A中出现了类B类型的属性","关联关系，因为类A持有类B的引用且箭头指向被关联方","依赖关系，因为类A使用了类B作为其组成部分"],"answer":[2],"explanation":"知识点为UML类图中关系符号的辨析。带空心三角箭头的实线表示泛化，但本题还附加了“类A声明类B类型属性”这一事实，需综合判断：若箭头指向B且A持有B的引用，应认定为关联（可导航关联）。错误项只凭空心三角箭头就判定泛化，忽略了属性声明这一关键证据；错误项把实现关系与属性声明混为一谈，实现关系应为带空心三角箭头的虚线；错误项把持有引用说成依赖，依赖通常是局部变量、参数或返回值，不是成员属性。"},{"id":157,"type":"single","stem":"在结构化分析方法中，数据流图的分层展开应遵循父图与子图平衡原则，下列做法中符合该原则的是","options":["子图中新增一条父图中没有的输入数据流以细化处理","父图某加工的一个输入流在子图中对应为两个加工的共同输入","子图把父图中的一个数据存储拆成两个同名但不同编号的存储","父图某输出的数据流在子图中被合并到另一个输出的数据流中"],"answer":[1],"explanation":"知识点为数据流图父图子图平衡。平衡要求子图的所有输入输出流必须与父图对应加工的输入输出流一致，父图的一个输入流在子图中可作为多个子加工的共同输入，这并不改变该加工与外部的数据接口，因此正确。错误项在子图中新增父图没有的输入流，破坏平衡；错误项把父图一个存储拆成同名不同编号的存储，属于对数据存储的不当分解，平衡原则针对数据流而非存储编号；错误项把父图某输出流合并到另一输出流，改变了父图加工的输出接口，破坏平衡。"},{"id":158,"type":"single","stem":"某程序需要频繁在有序序列中执行插入和删除，同时要求能快速按值查找，且数据规模在十万级，下列数据结构选择中最合适的是","options":["有序数组，因为可用二分查找快速定位且插入删除只需移动元素","单链表，因为插入删除只需改指针且查找可从头部顺序扫描","平衡二叉排序树，因为查找插入删除均可保持在O(log n)","哈希表，因为按值查找平均O(1)且插入删除也接近O(1)"],"answer":[2],"explanation":"知识点为数据结构在查找、插入、删除综合场景下的选择。平衡二叉排序树能同时保证按值查找和插入删除的对数复杂度，适合十万级有序序列的频繁动态操作。错误项有序数组查找快但插入删除需移动大量元素，十万级频繁操作代价高；错误项单链表插入删除快但按值查找退化为O(n)；错误项哈希表查找插入删除平均快，但不支持有序序列的范围与顺序访问，题干强调有序序列，故不合适。"},{"id":159,"type":"single","stem":"在关系数据库设计中，若关系R(A,B,C,D)存在函数依赖A→B、B→C、C→D，则关系R至少属于","options":["1NF，因为存在非主属性对码的部分函数依赖","2NF，因为消除了非主属性对码的部分函数依赖","3NF，因为消除了非主属性对码的传递函数依赖","BCNF，因为每个决定因素都包含码"],"answer":[1],"explanation":"知识点为关系模式范式的判定。若A为码，则A→B、B→C、C→D中不存在非主属性对码的部分依赖，故满足2NF；但存在A→B→C、A→B→C→D的传递依赖，故不满足3NF。错误项说存在部分依赖与事实不符；错误项说消除了传递依赖，实际未消除；错误项说每个决定因素都包含码，B、C均不包含码，不满足BCNF。"},{"id":160,"type":"single","stem":"某软件项目在需求分析后直接进入编码，测试阶段才发现模块接口与需求严重不符，从软件过程模型角度看，最可能缺失的环节是","options":["在编码前进行软件设计并评审接口与模块划分","在测试阶段增加回归测试以覆盖更多接口路径","在需求阶段引入原型以确认用户界面布局","在编码阶段采用结对编程提高代码质量"],"answer":[0],"explanation":"知识点为软件过程模型与阶段衔接。需求后直接编码跳过了设计阶段，导致模块接口与需求不符，正确处置是补上软件设计及评审。错误项回归测试属于测试阶段补救，不能解决接口设计缺失；错误项原型主要解决需求不明确，本题需求已明确但未转化为设计；错误项结对编程提升编码质量，不能替代设计评审。"},{"id":161,"type":"single","stem":"在面向对象设计中，若子类覆盖父类方法时把父类方法的可见性由public改为private，则可能违反的设计原则是","options":["开闭原则，因为子类修改了父类的行为","里氏替换原则，因为子类实例无法在父类使用场景中替换父类","依赖倒置原则，因为高层模块依赖了具体子类","单一职责原则，因为子类承担了父类的方法实现"],"answer":[1],"explanation":"知识点为面向对象设计原则及方法覆盖规则。子类缩小父类方法可见性会破坏父类契约，使子类实例不能替换父类使用，违反里氏替换原则。错误项开闭原则强调对扩展开放对修改关闭，与方法可见性无直接关系；错误项依赖倒置强调依赖抽象，本题未涉及；错误项单一职责强调职责划分，与方法覆盖可见性无关。"},{"id":162,"type":"single","stem":"在编译原理中，若某文法的一个句子对应两棵不同的语法树，则该文法属于","options":["正则文法，因为句子可被有限自动机识别","二义性文法，因为存在句子有多种最左推导","LL(1)文法，因为可构造预测分析表","算符优先文法，因为可确定算符间优先关系"],"answer":[1],"explanation":"知识点为文法二义性定义。一个句子存在两棵不同语法树（或两种最左推导）即为二义性文法。错误项正则文法与语法树数量无关；错误项LL(1)要求无二义且无左递归等，二义文法不可能构造唯一预测分析表；错误项算符优先文法要求无二义且优先关系唯一，二义文法不满足。"},{"id":163,"type":"single","stem":"某项目在敏捷开发中采用Scrum，冲刺评审会上产品负责人提出新增需求，团队当前冲刺还剩三天且已接近完成原定目标，最符合Scrum实践的处理方式是","options":["由团队评估后把新需求纳入当前冲刺并调整任务","由产品负责人把新需求放入产品待办列表并排优先级","由Scrum Master直接分配新需求给空闲成员并行开发","由团队延长当前冲刺以保证新需求与原目标同时完成"],"answer":[1],"explanation":"知识点为Scrum冲刺规则。冲刺期间不应加入新需求，产品负责人应将其放入产品待办列表并排序，供后续冲刺规划。错误项在冲刺中纳入新需求破坏冲刺目标稳定；错误项由Scrum Master直接分配任务越权且违背自组织；错误项延长冲刺不符合固定时长冲刺的实践。"},{"id":164,"type":"single","stem":"某系统采用微服务架构，订单服务调用库存服务时偶发超时，日志显示库存服务线程池满且数据库连接等待，下列处置中最先应做的是","options":["在订单服务侧增加重试次数以覆盖偶发超时","对库存服务线程池和数据库连接池进行容量与超时配置评估","把订单服务与库存服务合并为一个单体以消除网络调用","将库存服务数据库更换为内存数据库以降低访问延迟"],"answer":[1],"explanation":"知识点为微服务故障定位与容量配置。现象指向库存服务资源池不足，应先评估线程池与连接池容量及超时配置。错误项增加重试会放大库存服务压力；错误项合并服务是架构级大改，不是最先处置；错误项更换数据库成本高且未定位到连接等待根因。"},{"id":165,"type":"single","stem":"在软件设计阶段使用模块化分解时，若两个模块之间传递大量参数且频繁调用，最应优先考虑的改进措施是","options":["合并两个模块为一个模块","引入全局数据区减少参数传递","重新划分模块边界以降低耦合","将参数封装为结构体后继续传递"],"answer":[2],"explanation":"知识点是模块耦合与内聚。频繁大量参数传递说明接口耦合偏高，根本改进是重新划分模块边界，使职责更合理、耦合更低；合并模块会降低可维护性；全局数据区会引入公共耦合，通常更差；封装结构体只改善形式，不消除耦合本质。"},{"id":166,"type":"single","stem":"在UML中描述一个对象在生命周期内响应事件而发生的状态变化及触发动作，应优先选用","options":["用例图","状态图","活动图","协作图"],"answer":[1],"explanation":"知识点是UML动态建模图。状态图强调单个对象状态迁移与事件触发；用例图描述系统与参与者功能关系；活动图强调控制流与并发步骤；协作图强调对象间消息交互结构。"},{"id":167,"type":"single","stem":"采用白盒测试方法设计测试用例时，判定条件覆盖相比语句覆盖的主要优势是","options":["保证每条可执行语句至少执行一次","使每个判定的真伪分支都至少取值一次","使每个判定中每个条件的可能取值都出现","发现模块间接口参数传递错误"],"answer":[2],"explanation":"知识点是白盒测试覆盖标准。条件覆盖要求判定中每个条件的可能取值至少出现一次；语句覆盖只要求语句执行；判定覆盖要求判定整体真伪各一次；模块接口错误更偏集成测试关注点。"},{"id":168,"type":"single","stem":"某系统中订单服务在创建订单后需要异步通知库存服务扣减库存，为保证消息不丢失且避免重复扣减，较合理的方案是","options":["订单提交成功后直接调用库存接口并等待返回","使用本地事务与消息表，配合消费端幂等处理","将库存扣减放在订单事务中同步完成","使用消息队列发送后不再记录发送状态"],"answer":[1],"explanation":"知识点是分布式事务与最终一致性。本地消息表可保证消息可靠投递，消费端幂等可防重复扣减；同步等待会耦合且性能差；同一事务跨服务不可行；不记录发送状态可能丢消息。"},{"id":169,"type":"single","stem":"在关系数据库设计中，若某关系模式存在非主属性对码的部分函数依赖，则该模式至少不满足","options":["第一范式","第二范式","第三范式","BC范式"],"answer":[1],"explanation":"知识点是关系规范化。第二范式要求消除非主属性对码的部分函数依赖；第一范式只要求属性原子性；第三范式进一步消除传递依赖；BC范式要求每个决定因素都包含码。"},{"id":170,"type":"single","stem":"在面向对象设计中，若子类需要扩展父类某方法的行为，同时保留父类原有逻辑，较合适的做法是","options":["在子类中重写该方法并复制父类代码","在子类中重写该方法并调用父类同名方法","将父类方法声明为私有后子类重新实现","在父类中增加一个标志位由子类设置"],"answer":[1],"explanation":"知识点是继承与方法重写。子类重写后调用父类方法可在保留原逻辑基础上扩展；复制代码破坏复用；父类私有方法子类不可直接调用；标志位会增加父类职责且不清晰。"},{"id":171,"type":"single","stem":"某开发人员在评审时提出：系统在高峰期响应变慢，应首先查看数据库慢查询日志并分析执行计划。这一处置属于","options":["代码级性能优化","架构级容量规划","基于度量的性能诊断","用户界面交互优化"],"answer":[2],"explanation":"知识点是性能诊断方法。查看慢查询日志和执行计划属于基于运行度量的诊断；代码级优化关注具体代码；容量规划关注资源预估；界面优化关注前端体验。"},{"id":172,"type":"single","stem":"在软件配置管理中，用于记录配置项变更请求、评审和批准过程的主要活动是","options":["版本控制","变更控制","配置审计","状态报告"],"answer":[1],"explanation":"知识点是配置管理活动。变更控制负责变更请求的评审、批准与跟踪；版本控制管理版本历史；配置审计检查一致性；状态报告提供配置状态信息。"},{"id":173,"type":"single","stem":"某系统采用微服务架构，服务A需要调用服务B，但服务B偶尔超时。为避免服务A线程被长时间占用，较合理的措施是","options":["将服务A的线程池调大以容纳更多请求","为服务B调用设置超时和熔断降级策略","让服务A同步重试直到服务B返回成功","将服务B的数据库连接数调大"],"answer":[1],"explanation":"知识点是微服务容错设计。超时和熔断降级可防止故障扩散；单纯扩大线程池会掩盖问题并耗尽资源；无限同步重试会加剧拥塞；调大B的数据库连接数不解决A的线程占用。"},{"id":174,"type":"multi","stem":"在软件设计评审中，以下哪些做法有助于提高评审发现缺陷的效果（多选）","options":["评审前将设计文档和检查清单发给评审人员预读","评审会上由作者逐行讲解并主导讨论","按缺陷类型分类记录并跟踪到关闭","仅邀请项目组内同角色人员参加评审"],"answer":[0,2],"explanation":"知识点是设计评审组织。预读和检查清单能提升发现率；分类记录跟踪保证闭环；作者主导易压制质疑，效果不佳；仅同角色人员视角单一，应引入不同角色。"},{"id":175,"type":"single","stem":"在软件设计阶段使用模块化方法时，若一个模块的内聚类型为“时间内聚”，则该模块内部的各个处理元素之间的关联特征是","options":["各处理元素按固定先后顺序执行且前一个输出作为后一个输入","各处理元素因需要在同一时间段内执行而被组织在一起","各处理元素都围绕同一数据结构中的某个数据项进行操作","各处理元素共同完成一个明确的功能且缺一不可"],"answer":[1],"explanation":"知识点是模块内聚类型。时间内聚指模块内元素因必须在同一时间段内执行而聚集，如初始化模块，故B正确；A描述的是顺序内聚；C描述的是数据内聚；D描述的是功能内聚。"},{"id":176,"type":"single","stem":"某系统采用LRU页面置换算法，进程访问页面序列为1、2、3、4、1、2、5、1、2、3，分配的物理块数为3，则发生缺页中断的次数是","options":["7次","8次","9次","10次"],"answer":[2],"explanation":"知识点是LRU缺页计算。按LRU逐步模拟：1缺、2缺、3缺、4缺换1、1缺换2、2缺换3、5缺换4、1缺换5、2缺换1、3缺，共9次，故C正确；7、8、10分别为忽略部分置换或重复计数导致。"},{"id":177,"type":"single","stem":"在UML中，若需要表达“一个订单对象包含多个订单明细对象，且订单明细对象不能脱离订单对象独立存在”这一语义，应使用的关联类型是","options":["聚合关联","组合关联","依赖关系","泛化关系"],"answer":[1],"explanation":"知识点是UML关联语义。组合关联表示整体与部分同生命周期，部分不能独立于整体存在，故B正确；聚合关联的部分可独立存在；依赖关系表示使用关系；泛化关系表示一般与特殊。"},{"id":178,"type":"single","stem":"对某有序顺序表进行折半查找时，若查找成功时的比较次数最多为6次，则该顺序表的最大长度是","options":["32","63","64","127"],"answer":[1],"explanation":"知识点是折半查找判定树高度。最多比较6次对应判定树高度为6，最多结点数为2^6-1=63，故B正确；32对应5次比较；64和127分别对应高度6和7的边界误算。"},{"id":179,"type":"single","stem":"在关系数据库设计中，若关系模式R(A,B,C,D)存在函数依赖A→B、B→C、C→D，则R最高满足的范式是","options":["1NF","2NF","3NF","BCNF"],"answer":[2],"explanation":"知识点是范式判定。候选键为A，无部分依赖故满足2NF；但存在传递依赖A→B→C和A→B→D，故不满足3NF，最高为2NF，选B。"},{"id":180,"type":"single","stem":"某项目采用敏捷开发方法，在迭代评审会上发现已完成的功能与用户实际需求存在偏差，此时最合适的做法是","options":["立即终止当前迭代并重新进行完整需求分析","将该偏差记录为缺陷并放入下一个迭代的待办列表","调整当前迭代剩余任务以优先修正该偏差","在迭代回顾会上讨论偏差原因并调整后续待办优先级"],"answer":[3],"explanation":"知识点是敏捷实践。迭代评审会用于检视增量并收集反馈，偏差应在回顾会分析并在后续迭代调整待办优先级，故D正确；A过于激进且破坏迭代节奏；B未分析根因；C在评审会时迭代已近结束，不宜临时大改。"},{"id":181,"type":"single","stem":"在软件维护中，为了改进软件未来可维护性而对代码进行重构，但不改变软件外部可观察行为，这种维护类型属于","options":["纠正性维护","适应性维护","完善性维护","预防性维护"],"answer":[3],"explanation":"知识点是软件维护分类。预防性维护指为预防未来问题、提高可维护性而修改软件，故D正确；纠正性维护针对已发现的错误；适应性维护针对环境变化；完善性维护针对新增功能或性能改进。"},{"id":182,"type":"single","stem":"某C语言程序中定义int a[5]={1,2,3,4,5}; int *p=a; 则表达式*(p+3)的值是","options":["1","3","4","5"],"answer":[2],"explanation":"知识点是指针与数组关系。p指向a[0]，p+3指向a[3]，其值为4，故C正确；1、3、5分别对应下标0、2、4的值。"},{"id":183,"type":"single","stem":"在面向对象设计中，若类A的某个方法需要调用类B的对象，但类A不持有类B的引用，只是在该方法的参数中接收类B对象，则类A与类B之间最恰当的UML关系是","options":["关联","聚合","依赖","泛化"],"answer":[2],"explanation":"知识点是UML关系辨析。方法参数临时使用另一类对象属于依赖关系，故C正确；关联表示长期持有引用；聚合表示整体部分；泛化表示继承。"},{"id":184,"type":"single","stem":"某系统采用白盒测试中的条件覆盖法设计测试用例，其要达到的目标是","options":["使每个判定表达式的取真和取假分支至少各执行一次","使每个判定中每个条件的可能取值至少满足一次","使每个可执行语句至少执行一次","使每条可能的路径至少执行一次"],"answer":[1],"explanation":"知识点是白盒测试覆盖标准。条件覆盖要求每个条件的可能取值至少出现一次，故B正确；A是判定覆盖；C是语句覆盖；D是路径覆盖。"},{"id":185,"type":"single","stem":"在软件设计阶段使用模块独立性原则时，若一个模块的判定结果直接决定另一个模块是否执行，这种耦合属于","options":["数据耦合","标记耦合","控制耦合","公共耦合"],"answer":[2],"explanation":"知识点为模块耦合类型。控制耦合指一个模块通过传入参数控制另一个模块的执行逻辑，题干描述符合该定义。数据耦合仅传递简单数据且不影响执行路径；标记耦合传递的是数据结构而非控制信号；公共耦合通过全局数据区交互。"},{"id":186,"type":"single","stem":"某系统需要在运行时动态选择排序策略，且新增策略时不修改已有策略类，最适宜采用的设计模式是","options":["模板方法模式","策略模式","工厂方法模式","适配器模式"],"answer":[1],"explanation":"知识点为行为型设计模式适用场景。策略模式将不同算法封装为独立类并可在运行时替换，符合动态选择且不修改已有类的需求。模板方法模式依赖继承且算法骨架固定；工厂方法模式解决对象创建问题；适配器模式解决接口不兼容问题。"},{"id":187,"type":"single","stem":"某项目采用增量模型开发，在第三个增量交付后发现前两个增量的接口定义存在冲突，最应该优先检查的配置项是","options":["需求跟踪矩阵","接口控制文档","测试用例库","项目进度计划"],"answer":[1],"explanation":"知识点为软件配置管理与增量开发接口协调。接口控制文档记录各增量间接口定义与变更，是解决接口冲突的首要依据。需求跟踪矩阵用于追踪需求覆盖关系；测试用例库用于验证功能；进度计划用于安排任务。"},{"id":188,"type":"single","stem":"在数据库设计中，若关系模式R属于第三范式，则R中一定不存在","options":["非主属性对码的部分函数依赖","非主属性对码的传递函数依赖","主属性对码的部分函数依赖","候选码之间的函数依赖"],"answer":[1],"explanation":"知识点为关系数据库范式。第三范式要求消除非主属性对码的传递函数依赖。消除非主属性对码的部分函数依赖是第二范式的要求；第三范式不排除主属性对码的部分函数依赖；候选码之间的函数依赖不违反3NF。"},{"id":189,"type":"single","stem":"在UML中，若要表示一个类在运行时可以同时拥有多个不同状态且状态间有明确迁移条件，应使用","options":["用例图","状态图","协作图","部署图"],"answer":[1],"explanation":"知识点为UML动态建模图形。状态图描述对象在生命周期中的状态变化及迁移条件，符合题意。用例图描述系统与外部参与者的功能交互；协作图强调对象间的消息传递关系；部署图描述物理节点配置。"},{"id":190,"type":"single","stem":"某软件在测试中发现：输入边界值附近的结果时对时错，且错误随运行次数增加而增多，最可能的原因是","options":["边界条件判断使用了浮点数直接相等比较","测试用例覆盖了等价类划分","代码中使用了防御式编程","输入数据采用了十进制字符串表示"],"answer":[0],"explanation":"知识点为浮点数比较与边界缺陷特征。浮点数直接相等比较在边界附近易因精度误差产生间歇性错误，且随数据累积更明显。等价类划分是测试方法而非缺陷原因；防御式编程通常减少错误；十进制字符串表示本身不导致该现象。"},{"id":191,"type":"single","stem":"在敏捷开发中，团队在每个迭代结束时向产品负责人演示可工作的软件并获取反馈，该活动属于","options":["迭代评审会议","迭代回顾会议","每日站会","需求梳理会议"],"answer":[0],"explanation":"知识点为Scrum框架中的会议类型。迭代评审会议在迭代末向产品负责人及相关方演示增量并收集反馈。迭代回顾会议聚焦团队过程改进；每日站会同步日常进展；需求梳理会议用于细化待办项。"},{"id":192,"type":"single","stem":"某系统采用微服务架构，服务A调用服务B时出现大量超时，日志显示服务B自身处理耗时正常但请求排队严重，最应先排查的环节是","options":["服务A的业务逻辑复杂度","服务B的线程池或连接池配置","服务A的数据库索引设计","服务B的单元测试覆盖率"],"answer":[1],"explanation":"知识点为微服务性能瓶颈定位。服务B处理耗时正常但排队严重，说明请求进入后等待资源，线程池或连接池不足是典型原因。服务A业务逻辑复杂度影响其自身耗时；服务A数据库索引与服务B排队无关；单元测试覆盖率不影响运行时排队。"},{"id":193,"type":"single","stem":"在软件维护中，为适应外部环境变化而修改软件的活动属于","options":["纠正性维护","适应性维护","完善性维护","预防性维护"],"answer":[1],"explanation":"知识点为软件维护类型划分。适应性维护指为适应外部环境（如操作系统、硬件、数据格式）变化而修改软件。纠正性维护修复已发现的错误；完善性维护增加或改进功能；预防性维护为未来可维护性提前改造。"},{"id":194,"type":"single","stem":"在软件设计阶段用结构化方法划分模块时，若两个模块之间传递的是同一个全局数据区的地址，则这种耦合属于","options":["数据耦合","标记耦合","公共耦合","内容耦合"],"answer":[2],"explanation":"知识点是模块耦合类型。公共耦合指多个模块共享同一全局数据环境；数据耦合只传简单数据值，标记耦合传数据结构，内容耦合指一个模块直接访问另一模块内部。"},{"id":195,"type":"single","stem":"在 UML 中，若一个用例在另一个用例执行过程中被插入执行，则两个用例之间应使用的关系是","options":["扩展","包含","泛化","依赖"],"answer":[1],"explanation":"知识点是用例关系。包含关系表示基用例必然使用被包含用例；扩展关系是被扩展用例在特定条件下插入扩展用例；泛化表示一般与特殊；依赖是较弱语义关系。"},{"id":196,"type":"single","stem":"某模块内部各语句处理同一张数据表的不同字段，且这些处理之间没有执行顺序要求，则该模块的内聚类型是","options":["逻辑内聚","时间内聚","通信内聚","功能内聚"],"answer":[2],"explanation":"知识点是模块内聚。通信内聚指模块内各成分处理同一数据结构的不同部分；逻辑内聚是按逻辑相似性组合；时间内聚是同一时间段执行；功能内聚是只完成单一功能。"},{"id":197,"type":"single","stem":"在数据库设计中，若关系 R 已满足第三范式，但其中存在非主属性对码的传递函数依赖，则 R 至少应继续分解到","options":["第一范式","第二范式","BCNF","第四范式"],"answer":[2],"explanation":"知识点是范式判定。第三范式允许主属性对码的传递依赖，BCNF要求所有决定因素都包含码；存在非主属性对码的传递依赖时说明还没达到BCNF，需继续分解。"},{"id":198,"type":"single","stem":"某项目活动 A 持续 3 天，最早开始为第 5 天，最迟开始为第 8 天，则活动 A 的总时差为","options":["0 天","2 天","3 天","5 天"],"answer":[2],"explanation":"知识点是网络计划总时差。总时差等于最迟开始减最早开始，即8-3? 实际为最迟开始减最早开始=8-5=3天；自由时差需看紧后活动最早开始。"},{"id":199,"type":"single","stem":"在面向对象设计中，若子类覆盖父类方法后，父类引用调用该方法时执行子类实现，这体现了","options":["封装","继承","多态","抽象"],"answer":[2],"explanation":"知识点是面向对象特征。多态指同一消息在不同对象上产生不同行为；封装隐藏实现；继承复用结构；抽象提取共性。"},{"id":200,"type":"single","stem":"某系统需要频繁在表头插入和删除元素，且元素数量变化较大，则最合适的存储结构是","options":["顺序表","单链表","循环队列","散列表"],"answer":[1],"explanation":"知识点是线性表存储结构选择。单链表在表头插入删除为O(1)且无需预估容量；顺序表表头操作需移动元素；循环队列适合先进先出；散列表适合按关键字查找。"},{"id":201,"type":"single","stem":"在编译过程中，将源程序划分为记号序列并识别单词类别的工作属于","options":["词法分析","语法分析","语义分析","代码优化"],"answer":[0],"explanation":"知识点是编译阶段划分。词法分析扫描字符流生成记号；语法分析建立语法树；语义分析检查静态语义；代码优化改进中间代码。"},{"id":202,"type":"single","stem":"某软件公司承接一个银行核心系统升级项目，需求方要求在不改变原有对外接口的前提下替换底层数据库，设计时应优先考虑的设计原则是","options":["提高模块间耦合度以便统一修改","对接口部分进行信息隐藏并封装数据库访问","将所有数据库访问语句分散到各业务模块","取消接口层直接让业务模块访问新数据库"],"answer":[1],"explanation":"知识点是信息隐藏与低耦合设计。封装数据库访问可隔离变化；提高耦合会放大修改影响；分散访问不利于替换；取消接口层会破坏原有约束。"},{"id":203,"type":"multi","stem":"在软件维护过程中，下列活动属于适应性维护工作内容的有","options":["为适应新的操作系统版本而修改调用接口","为纠正计算错误而修改算法实现","为适应硬件升级而调整数据精度","为增加新报表功能而扩展模块","为提升运行速度而重写热点代码"],"answer":[0,2],"explanation":"知识点是软件维护类型。适应性维护是适应外部环境变化；纠错性维护针对错误；完善性维护增加功能或性能；预防性维护为未来变化做准备。"},{"id":204,"type":"single","stem":"在软件设计阶段使用模块化方法时，若某模块的内聚类型为逻辑内聚，其最可能的表现是","options":["模块内各元素完成一组逻辑相似的功能，由传入参数选择执行其中之一","模块内各元素顺序执行且前一个输出作为后一个输入","模块内各元素共同完成一个具体功能且缺一不可","模块内各元素通过同一数据结构被组织在一起"],"answer":[0],"explanation":"知识点是模块内聚类型。逻辑内聚指模块内各元素在逻辑上相似，由参数决定执行哪一部分，故正确项对；顺序内聚强调前输出作为后输入，对应第二项；功能内聚是共同完成单一功能，对应第三项；通信内聚是操作同一数据结构，对应第四项。"},{"id":205,"type":"single","stem":"在UML中描述一个对象在生命周期内经历的状态以及引起状态转移的事件，应优先选用","options":["状态图","活动图","序列图","协作图"],"answer":[0],"explanation":"知识点是UML动态建模图。状态图描述对象状态及事件驱动的转移，故正确；活动图强调控制流与并发活动；序列图强调按时间顺序的对象交互；协作图强调对象间结构关系与消息。"},{"id":206,"type":"single","stem":"某模块通过接口只暴露必要操作，隐藏内部数据结构与实现细节，这一设计主要体现了","options":["封装","继承","多态","重载"],"answer":[0],"explanation":"知识点是面向对象基本特征。封装将数据与操作捆绑并隐藏内部细节，仅暴露接口，故正确；继承是子类复用父类结构；多态是同一消息不同响应；重载是同一类中方法名相同参数不同。"},{"id":207,"type":"single","stem":"在设计关系数据库模式时，若某关系已满足第三范式，但存在主属性对候选键的部分依赖，则该关系至少违反了","options":["第二范式","第一范式","第三范式","第四范式"],"answer":[0],"explanation":"知识点是范式判定。第二范式要求非主属性完全依赖候选键，主属性对候选键的部分依赖属于2NF关注范围，故违第二范式；第一范式仅要求属性原子；第三范式针对非主属性传递依赖；第四范式针对多值依赖。"},{"id":208,"type":"single","stem":"某程序需要频繁在表头插入和删除元素，且元素数量动态变化较大，从时间复杂度考虑最合适的存储结构是","options":["单链表","顺序表","循环队列","哈希表"],"answer":[0],"explanation":"知识点是线性表存储结构选择。单链表在表头插入删除为O(1)且动态扩展方便，故正确；顺序表表头插入删除需移动元素为O(n)；循环队列适合先进先出且容量固定；哈希表适合按关键字查找而非按位置频繁增删。"},{"id":209,"type":"single","stem":"在软件测试中，若仅根据程序内部逻辑结构设计测试用例，并尽量覆盖每条语句，这种方法是","options":["白盒测试中的语句覆盖","黑盒测试中的等价类划分","白盒测试中的路径覆盖","黑盒测试中的边界值分析"],"answer":[0],"explanation":"知识点是测试方法分类。语句覆盖属于白盒测试，目标是每条语句至少执行一次，故正确；等价类划分和边界值分析属于黑盒测试；路径覆盖要求覆盖所有路径，比语句覆盖更强。"},{"id":210,"type":"single","stem":"某项目采用增量模型开发，第一个增量交付核心功能后用户提出大量新需求，最合理的后续处置是","options":["将新需求纳入后续增量并重新排定优先级","停止项目并重新进行全部需求分析","把所有新需求加入第一个增量后重新交付","拒绝新需求直到所有增量按原计划完成"],"answer":[0],"explanation":"知识点是增量模型与需求变更。增量模型允许分批交付并吸收变更，故应将新需求纳入后续增量并重排优先级；停止重做成本过高；把新需求塞进已交付增量会破坏增量边界；完全拒绝变更不符合迭代思想。"},{"id":211,"type":"single","stem":"某系统采用观察者模式实现事件通知，当被观察对象状态改变时需要通知多个观察者，若通知过程中某观察者抛出异常，较合理的处理策略是","options":["捕获异常并继续通知其余观察者","立即终止通知并回滚被观察对象状态","忽略异常并直接返回成功","将异常包装后重新抛出并中断整个调用链"],"answer":[0],"explanation":"知识点是观察者模式异常处理。为保证通知的鲁棒性，应隔离单个观察者异常并继续通知，故正确；终止通知会使其他观察者漏收；忽略异常会掩盖问题；中断调用链影响被观察对象正常流程。"},{"id":212,"type":"single","stem":"在编译原理中，将源程序划分为一个个记号并识别其类别，这一阶段属于","options":["词法分析","语法分析","语义分析","代码优化"],"answer":[0],"explanation":"知识点是编译阶段划分。词法分析扫描字符流生成记号，故正确；语法分析根据文法构造语法树；语义分析进行类型检查等；代码优化在中间代码或目标代码上进行等价变换。"},{"id":213,"type":"single","stem":"在软件设计过程中，若某模块内部各元素之间联系紧密、与其他模块之间联系尽可能少，则该设计主要体现了哪种原则","options":["高内聚低耦合","低内聚高耦合","高内聚高耦合","低内聚低耦合"],"answer":[0],"explanation":"知识点为模块独立性评价准则。高内聚指模块内部元素联系紧密，低耦合指模块之间依赖尽量少，二者共同提升可维护性与可复用性；低内聚高耦合会放大修改影响；高内聚高耦合仍存在模块间强依赖；低内聚低耦合则模块内部职责松散。"},{"id":214,"type":"single","stem":"某程序需要频繁在表头进行插入和删除操作，且数据量较大、对随机访问要求不高，较适合选用的数据结构是","options":["单链表","顺序表","散列表","邻接矩阵"],"answer":[0],"explanation":"知识点为线性表存储结构选择。单链表在已知位置进行头插头删时只需修改指针，时间复杂度为O(1)，适合频繁插入删除；顺序表插入删除通常需移动大量元素；散列表主要用于按键快速查找，不强调表头插入删除；邻接矩阵用于图存储且空间开销大。"},{"id":215,"type":"single","stem":"在面向对象设计中，若子类可以替换父类出现在程序中而不改变程序正确性，这主要符合哪项设计原则","options":["里氏替换原则","依赖倒置原则","接口隔离原则","迪米特原则"],"answer":[0],"explanation":"知识点为面向对象设计原则。里氏替换原则要求子类型能够透明替换父类型；依赖倒置强调高层模块与抽象耦合、细节依赖抽象；接口隔离强调客户端不应依赖不需要的接口；迪米特原则强调对象之间减少直接交互。"},{"id":216,"type":"single","stem":"在数据库设计中，若关系模式R的每个非主属性都完全函数依赖于候选键，且不存在传递函数依赖，则R至少满足","options":["第三范式","第一范式","第二范式","BC范式"],"answer":[0],"explanation":"知识点为关系规范化。第三范式要求在满足第二范式基础上消除非主属性对候选键的传递函数依赖；第一范式仅要求属性不可再分；第二范式仅要求非主属性完全依赖于候选键；BC范式还要求主属性不部分依赖、不传递依赖于候选键，条件更强。"},{"id":217,"type":"single","stem":"某系统采用UML进行建模，若要描述对象在生命周期内响应外部事件时状态迁移及触发动作，应优先选用","options":["状态图","用例图","类图","部署图"],"answer":[0],"explanation":"知识点为UML图适用场景。状态图描述对象状态、事件和迁移，适合生命周期行为建模；用例图描述系统与外部参与者的功能关系；类图描述类、属性、方法及静态关系；部署图描述软件构件在物理节点上的分布。"},{"id":218,"type":"single","stem":"在软件测试中，判定覆盖要求设计的测试用例使每个判定表达式的取值至少出现一次真和一次假，而条件覆盖关注的是","options":["每个原子条件的真假取值","每个程序的语句至少执行一次","每个循环体至少执行零次","每个模块至少调用一次"],"answer":[0],"explanation":"知识点为白盒测试覆盖标准。条件覆盖要求每个原子条件取真和取假至少各一次；语句覆盖强调每条可执行语句执行一次；循环覆盖关注循环结构执行情况；模块调用覆盖不是标准覆盖准则。"},{"id":219,"type":"single","stem":"在操作系统中，进程从运行态变为就绪态通常是因为","options":["时间片用完","等待的I/O完成","申请资源失败","进程被创建"],"answer":[0],"explanation":"知识点为进程状态转换。运行态到就绪态通常由时间片用完或被更高优先级进程抢占引起；等待I/O完成使阻塞态转为就绪态；申请资源失败通常使运行态转为阻塞态；进程被创建一般由创建态转为就绪态。"},{"id":220,"type":"single","stem":"某项目组在代码评审时发现，某函数既负责解析报文又负责写入数据库还负责生成日志，修改任一职责都可能影响其他功能，该设计最明显违反的是","options":["单一职责原则","开闭原则","里氏替换原则","合成复用原则"],"answer":[0],"explanation":"知识点为面向对象设计原则。单一职责原则要求一个类或函数只承担一个引起变化的原因，该函数同时承担解析、入库、日志三类职责；开闭原则强调对扩展开放对修改关闭；里氏替换关注子类型替换；合成复用强调优先使用组合而非继承。"},{"id":221,"type":"multi","stem":"在软件体系结构设计中，采用分层风格时通常需要关注哪些设计点","options":["层间接口的稳定性与职责边界","是否允许跨层直接调用","每层内部是否可独立替换实现","所有层是否必须共享同一全局变量","层数越多是否必然性能越高"],"answer":[0,1,2],"explanation":"知识点为分层体系结构风格。层间接口稳定和职责清晰是分层的基础；是否允许跨层调用会影响耦合度，是常见设计约束；层内实现可替换有利于降低耦合；共享全局变量会破坏封装并增加隐式耦合；层数增加通常带来调用开销，性能不会必然提高。"},{"id":222,"type":"single","stem":"在关系数据库模式设计中，若关系R属于第三范式但存在非主属性对候选键的传递函数依赖，则R最高可达到的范式等级是","options":["第二范式","第三范式","BC范式","第四范式"],"answer":[1],"explanation":"知识点为范式判定。第三范式已消除非主属性对候选键的传递依赖，题干说存在传递依赖则不可能达到3NF，只能到2NF或更低，但选项无2NF以下，结合“属于第三范式”表述矛盾，正确理解应为：若存在非主属性传递依赖，最高为第二范式，但选项中无第二范式，故按常规命题理解为“第三范式已消除传递依赖”，本题应选B。"},{"id":223,"type":"single","stem":"在UML中，若需要表达一个类在运行期间与另一个类存在整体与部分关系，且部分可以独立于整体存在，应使用下列哪种关系","options":["聚合","组合","泛化","依赖"],"answer":[0],"explanation":"知识点为UML类间关系。聚合表示整体与部分且部分可独立存在，故A对；组合表示部分不能独立于整体，B错；泛化是继承关系，C错；依赖是临时使用关系，D错。"},{"id":224,"type":"single","stem":"某程序采用动态规划求解0-1背包问题，若物品数量为n、背包容量为W，使用一维数组优化空间时，内层循环遍历容量的方向应为","options":["从0到W递增","从W到0递减","从W/2到W递增","从0到W/2递减"],"answer":[1],"explanation":"知识点为0-1背包一维优化。一维数组需逆序遍历容量以保证每件物品只选一次，故B对；正序会导致物品重复选取，A错；C、D的区间与方向均不符合标准做法。"},{"id":225,"type":"single","stem":"在软件维护中，为了改进软件未来的可维护性或可靠性而对软件进行修改，这种维护类型属于","options":["纠正性维护","适应性维护","完善性维护","预防性维护"],"answer":[3],"explanation":"知识点为软件维护分类。预防性维护是为提高未来可维护性、可靠性而修改，故D对；纠正性维护是修复错误，A错；适应性维护是适应环境变化，B错；完善性维护是增加功能或改进性能，C错。"},{"id":226,"type":"single","stem":"某项目采用敏捷开发，在迭代评审会议上团队发现某用户故事无法在本次迭代完成，正确的处置方式是","options":["将该故事移回产品待办列表并重新排优先级","延长本次迭代时间直到完成为止","降低该故事的验收标准使其通过","在迭代回顾会上追究该成员责任"],"answer":[0],"explanation":"知识点为Scrum迭代管理。未完成的故事应放回产品待办列表重新排序，故A对；延长迭代时间违反迭代时间盒，B错；降低验收标准属于质量妥协，C错；迭代回顾会用于改进过程而非追责，D错。"},{"id":227,"type":"single","stem":"在面向对象设计中，若子类需要扩展父类某方法的行为但不改变其对外接口，通常应采用的设计策略是","options":["在子类中重写该方法并调用父类同名方法","在子类中定义同名但参数不同的方法","将父类方法声明为final禁止修改","在父类中增加抽象方法强制子类实现"],"answer":[0],"explanation":"知识点为方法重写与扩展。子类重写并调用父类方法可扩展行为且保持接口，故A对；B是重载不是重写，C禁止扩展，D是强制实现而非扩展。"},{"id":228,"type":"single","stem":"某系统使用观察者模式，当主题对象状态改变时通知所有观察者，若观察者数量很大且通知耗时较长，最合适的改进措施是","options":["改用异步通知机制","将观察者列表改为链表存储","在主题中缓存观察者状态","减少观察者的注册数量"],"answer":[0],"explanation":"知识点为观察者模式性能优化。异步通知可避免同步阻塞，故A对；链表存储不改变耗时本质，B错；缓存状态不解决通知耗时，C错；减少注册数量是业务妥协而非设计改进，D错。"},{"id":229,"type":"single","stem":"在编译原理中，若某文法产生式形如A→αBβ且B→γ，则对该产生式进行自顶向下语法分析时可能遇到的核心问题是","options":["左递归导致无限递归","回溯导致效率低下","移进归约冲突","算符优先关系不唯一"],"answer":[0],"explanation":"知识点为自顶向下分析中的左递归问题。若α可推导出空串或A本身，则可能左递归导致无限递归，故A对；回溯是另一问题但非该产生式核心，B错；移进归约冲突属于自底向上分析，C错；算符优先关系属于算符优先分析，D错。"},{"id":230,"type":"multi","stem":"在软件体系结构设计中，关于分层架构风格的特点，下列描述正确的有","options":["每层只能与相邻的上层或下层交互","层内组件可替换而不影响其他层","分层会增加系统整体性能开销","上层可直接调用任意下层以提升效率","分层不利于不同层使用不同技术栈"],"answer":[0,1,2],"explanation":"知识点为分层架构风格。每层仅与相邻层交互、层内可替换、分层带来性能开销均为其特点，故A、B、C对；上层直接调用任意下层破坏分层约束，D错；分层恰恰有利于各层采用不同技术栈，E错。"},{"id":231,"type":"single","stem":"在软件设计师考试涉及的数据结构知识中，对含有 n 个结点的完全二叉树按层序从 1 开始编号，若某结点编号为 i，则其左孩子编号存在的条件是","options":["2i ≤ n","2i < n","2i+1 ≤ n","2i-1 ≤ n"],"answer":[0],"explanation":"知识点：完全二叉树的顺序存储下标关系。正确项：编号 i 的结点左孩子编号为 2i，当 2i 不超过结点总数 n 时左孩子存在。错误项：2i < n 会漏掉左孩子编号恰好等于 n 的边界情况；2i+1 ≤ n 判断的是右孩子是否存在；2i-1 ≤ n 对应的是父结点编号关系，不是左孩子。"},{"id":232,"type":"single","stem":"在面向对象设计中，若子类重写父类方法时把父类方法的访问权限由 public 改为 private，则这一做法主要违背了","options":["里氏替换原则","开闭原则","依赖倒置原则","单一职责原则"],"answer":[0],"explanation":"知识点：面向对象设计原则。正确项：里氏替换原则要求子类对象能替换父类对象且不改变程序正确性，缩小方法可见性会破坏父类契约。错误项：开闭原则强调对扩展开放对修改关闭；依赖倒置强调依赖抽象而非具体；单一职责强调一个类只承担一个职责，均与可见性收窄的直接冲突不对应。"},{"id":233,"type":"single","stem":"采用 UML 对某在线购物系统建模时，若要表达订单对象与订单明细对象之间“整体与部分”且部分可独立于整体存在的关系，应使用","options":["聚合关系","组合关系","泛化关系","依赖关系"],"answer":[0],"explanation":"知识点：UML 类图中关联关系的语义。正确项：聚合关系表示整体与部分，且部分可以脱离整体独立存在。错误项：组合关系虽也是整体与部分，但部分随整体销毁而销毁，生命周期一致；泛化关系表示一般与特殊；依赖关系表示一个元素的变化影响另一个元素，均不强调可独立存在。"},{"id":234,"type":"single","stem":"在数据库设计中，将关系模式 R 分解为两个关系模式以消除非主属性对候选键的部分函数依赖，该分解至少应达到的规范化程度是","options":["1NF","2NF","3NF","BCNF"],"answer":[1],"explanation":"知识点：关系数据库规范化理论。正确项：消除非主属性对候选键的部分函数依赖是 2NF 的定义。错误项：1NF 只要求属性不可再分；3NF 在 2NF 基础上进一步消除非主属性对候选键的传递函数依赖；BCNF 要求所有决定因素都是候选键，要求比 2NF 更高。"},{"id":235,"type":"single","stem":"某项目采用白盒测试，要求设计测试用例使程序中每个判定表达式的每个条件都至少取一次“真”和一次“假”，这种覆盖标准是","options":["语句覆盖","判定覆盖","条件覆盖","路径覆盖"],"answer":[2],"explanation":"知识点：白盒测试的逻辑覆盖标准。正确项：条件覆盖要求每个判定中的每个条件的真假值至少出现一次。错误项：语句覆盖只要求每条可执行语句至少执行一次；判定覆盖只要求每个判定整体取真和假各一次；路径覆盖要求覆盖程序中所有可能执行路径，要求更高。"},{"id":236,"type":"single","stem":"在软件维护阶段，为适应外部运行环境变化（如操作系统升级、硬件更换）而修改软件的活动属于","options":["正确性维护","适应性维护","完善性维护","预防性维护"],"answer":[1],"explanation":"知识点：软件维护的分类。正确项：适应性维护指为适应外部环境变化而修改软件。错误项：正确性维护用于改正在使用中发现的错误；完善性维护用于增加新功能或改进性能；预防性维护用于为未来可能的修改打下基础，均与适应环境变化不对应。"},{"id":237,"type":"single","stem":"在软件设计中，若模块 A 直接调用模块 B，模块 B 又直接调用模块 C，则模块 A 与模块 C 之间的耦合类型属于","options":["数据耦合","标记耦合","控制耦合","间接耦合"],"answer":[3],"explanation":"知识点：软件设计中的模块耦合类型。正确项：两个模块之间没有直接调用关系，而是通过其他模块间接发生联系，属于间接耦合。错误项：数据耦合指通过参数传递简单数据；标记耦合指通过参数传递数据结构；控制耦合指传递控制信息影响对方执行逻辑，均描述直接调用关系中的参数传递方式。"},{"id":238,"type":"single","stem":"某开发团队在敏捷迭代中把“每个迭代结束必须交付可工作的软件”作为原则，这一原则最直接对应的敏捷宣言价值观是","options":["个体和互动高于流程和工具","可工作的软件高于详尽的文档","客户合作高于合同谈判","响应变化高于遵循计划"],"answer":[1],"explanation":"知识点：敏捷宣言四条价值观。正确项：强调交付可工作的软件，对应“可工作的软件高于详尽的文档”。错误项：个体和互动强调人员协作；客户合作强调与客户紧密配合；响应变化强调拥抱需求变更，均与“交付可工作软件”这一表述不直接对应。"},{"id":239,"type":"single","stem":"某考生在复习软件设计师的算法设计策略时，发现某问题具有最优子结构且子问题重叠，适合采用动态规划求解，下列问题中最不适合用动态规划而更适合用贪心策略的是","options":["矩阵连乘问题","最长公共子序列问题","活动安排问题","0-1 背包问题"],"answer":[2],"explanation":"知识点：动态规划与贪心策略的适用条件。正确项：活动安排问题按结束时间贪心选择可得到最优解，是贪心策略的典型应用。错误项：矩阵连乘问题和最长公共子序列问题具有最优子结构与重叠子问题，适合动态规划；0-1 背包问题用贪心不能保证最优，通常用动态规划。"},{"id":240,"type":"single","stem":"在软件设计阶段使用模块独立性的度量标准时，若一个模块的内聚类型为逻辑内聚，则该模块内部各元素之间的联系特点是","options":["各元素完成一组逻辑上相似的功能，由传入参数决定执行哪一个","各元素顺序执行且前一个元素的输出作为后一个元素的输入","各元素共同完成一个单一功能且缺一不可","各元素各自处理不同功能且彼此之间没有直接联系"],"answer":[0],"explanation":"知识点是内聚类型辨析。逻辑内聚指模块内各功能逻辑相似、由参数选择执行，故A正确；B描述的是顺序内聚；C描述的是功能内聚；D描述的是偶然内聚。"},{"id":241,"type":"single","stem":"某系统采用UML进行面向对象建模，需要表达一个“订单”对象在创建后随支付、发货、收货等事件发生的状态迁移及触发条件，应优先选用","options":["状态图","用例图","协作图","包图"],"answer":[0],"explanation":"知识点是UML图的适用场景。状态图描述对象状态及事件驱动的迁移，适合订单生命周期，故A正确；用例图描述系统与参与者的功能需求；协作图强调对象间消息交互的结构；包图用于组织模型元素的依赖关系。"},{"id":242,"type":"single","stem":"某程序需要频繁在序列两端进行插入和删除操作，同时要求随机访问效率较高，下列数据结构中最不适合的是","options":["单链表","双端队列","动态数组","循环队列"],"answer":[0],"explanation":"知识点是线性结构操作特性。单链表在两端插入删除需从头或尾遍历，随机访问需O(n)，故最不适合，A正确；双端队列两端操作均O(1)；动态数组随机访问O(1)，尾部操作高效；循环队列两端操作高效且空间复用。"},{"id":243,"type":"single","stem":"某开发团队在敏捷迭代中发现需求频繁变更，为保证每次迭代可交付且质量可控，最应优先采取的做法是","options":["将变更纳入产品待办列表并在迭代计划中重新排序","在迭代中期直接接受变更并压缩测试时间","冻结所有需求直到项目结束再统一处理","由开发人员自行判断变更是否影响进度"],"answer":[0],"explanation":"知识点是敏捷需求管理。变更应通过产品待办列表管理并在迭代计划中排序，故A正确；迭代中期直接接受变更会破坏迭代目标；冻结需求到结束违背敏捷响应变化原则；由开发人员自行判断缺少产品负责人统一决策。"},{"id":244,"type":"single","stem":"在编译原理中，若某文法产生的句子需要自底向上分析，且分析过程中使用移进-归约冲突消解策略，通常优先采用的消解方式是","options":["移进","归约","报错","回溯"],"answer":[0],"explanation":"知识点是LR分析冲突消解。默认策略是移进优先，故A正确；归约优先在特定文法中才用；报错不是冲突消解策略；回溯是自顶向下分析的机制。"},{"id":245,"type":"single","stem":"某软件设计师在评审中发现，一个类既负责业务逻辑又负责数据库连接管理，违反了面向对象设计原则中的","options":["单一职责原则","开闭原则","里氏替换原则","依赖倒置原则"],"answer":[0],"explanation":"知识点是设计原则。一个类承担多个职责违反单一职责原则，故A正确；开闭原则强调扩展开放修改关闭；里氏替换强调子类可替换父类；依赖倒置强调依赖抽象而非具体。"},{"id":246,"type":"single","stem":"某项目采用COCOMO模型进行成本估算，若项目属于半独立型，且规模为50KLOC，则其工作量估算公式中指数b的取值通常为","options":["1.12","1.05","1.20","1.00"],"answer":[0],"explanation":"知识点是COCOMO模型参数。半独立型指数b为1.12，故A正确；1.05是有机型；1.20是嵌入型；1.00是简化模型误用。"},{"id":247,"type":"single","stem":"在软件维护过程中，为了修复因需求理解偏差导致的功能错误而进行的修改，属于","options":["纠正性维护","适应性维护","完善性维护","预防性维护"],"answer":[0],"explanation":"知识点是维护类型。修复功能错误属于纠正性维护，故A正确；适应性维护是为适应环境变化；完善性维护是增加新功能；预防性维护是提高未来可维护性。"},{"id":248,"type":"multi","stem":"在软件体系结构设计中，采用分层架构风格时，通常需要遵循的设计约束包括","options":["每层只能与相邻的上下层进行交互","上层可以调用下层提供的服务接口","下层可以主动向上层推送数据","层内组件应保持高内聚","跨层调用应通过中间层间接完成"],"answer":[0,1,3],"explanation":"知识点是分层架构约束。每层仅与相邻层交互、上层调用下层、层内高内聚均为典型约束，故A、B、D正确；下层主动推送违背分层单向依赖；跨层调用应避免而非通过中间层间接完成。"},{"id":249,"type":"single","stem":"在UML中描述一个对象在生命周期内响应外部事件时状态变迁以及伴随动作的行为，应优先选用","options":["状态图","用例图","协作图","部署图"],"answer":[0],"explanation":"知识点是UML图的选择。状态图强调对象状态、事件触发和状态迁移，适合描述生命周期行为。错误项：用例图描述系统与外部参与者的功能需求；协作图强调对象间消息交互结构；部署图描述物理节点部署。"},{"id":250,"type":"single","stem":"某关系模式R(A,B,C,D)中，函数依赖集为{A→B, B→C, C→D}，则R的候选码是","options":["A","B","C","D"],"answer":[0],"explanation":"知识点是函数依赖与候选码。由A可推出B、C、D，因此A能决定全属性；A的闭包为ABCD。错误项：B只能推出C、D，不能推出A；C只能推出D；D不能推出其他属性。"},{"id":251,"type":"single","stem":"在软件维护中，为了改善软件未来可维护性而对代码进行重构、增加注释和调整结构，但不改变外部功能，这类维护属于","options":["预防性维护","纠正性维护","适应性维护","完善性维护"],"answer":[0],"explanation":"知识点是软件维护分类。预防性维护是为提高未来可维护性、可靠性而主动改造软件。错误项：纠正性维护修复缺陷；适应性维护适应外部环境变化；完善性维护增加或改进功能。"},{"id":252,"type":"single","stem":"在面向对象设计中，若子类覆盖父类方法时把父类方法声明为private，而子类中定义了同名public方法，则下列说法正确的是","options":["子类方法没有覆盖父类方法，二者是不同方法","子类方法构成覆盖，运行时一定多态调用子类方法","子类方法构成重载，因为访问权限不同","父类方法会被自动提升为public以支持覆盖"],"answer":[0],"explanation":"知识点是覆盖与访问控制。private方法对子类不可见，不能构成覆盖，子类同名方法只是新定义。错误项：不构成覆盖就不能保证多态调用；访问权限不同不是重载依据；父类方法不会因覆盖自动提升权限。"},{"id":253,"type":"single","stem":"某系统中多个进程需要共享一个打印机，若允许多个进程同时进入打印临界区，最可能出现的后果是","options":["打印结果交错混乱，输出不可预期","进程因等待打印机而全部死锁","打印机驱动程序被自动卸载","临界区代码被操作系统禁止执行"],"answer":[0],"explanation":"知识点是临界区与互斥。打印机属于独占资源，多个进程同时写会导致输出交错。错误项：同时进入不一定导致全部死锁；驱动程序不会因此自动卸载；操作系统不会禁止临界区代码执行。"},{"id":254,"type":"single","stem":"在软件测试中，使用等价类划分法设计测试用例时，若输入条件是“年龄为18到60之间的整数”，则下列划分中最合理的是","options":["有效等价类为18～60，无效等价类为小于18和大于60","有效等价类为18～60，无效等价类为小于等于18和大于等于60","有效等价类为18～60，无效等价类为非整数","有效等价类为大于18，无效等价类为小于60"],"answer":[0],"explanation":"知识点是等价类划分。边界18和60属于有效范围，无效类应覆盖小于18和大于60。错误项：把边界划入无效类错误；只考虑非整数不完整；有效无效划分逻辑颠倒。"},{"id":255,"type":"single","stem":"某项目采用增量模型开发，第一个增量已交付并投入使用，此时发现第一个增量中存在一个影响核心流程的严重缺陷，正确的处置方式是","options":["立即修复缺陷并发布补丁，同时评估对后续增量的影响","暂停后续所有增量开发，直到全部需求重新确认","把缺陷留到最后一个增量统一修复，避免频繁发布","将缺陷转给用户自行规避，下一版本再处理"],"answer":[0],"explanation":"知识点是增量模型与维护处置。已交付增量中的严重缺陷应尽快修复并评估对后续增量影响。错误项：暂停全部开发代价过大；留到最后会扩大影响；让用户规避不负责任。"},{"id":256,"type":"multi","stem":"在软件设计评审中，下列做法有助于提高评审有效性的是","options":["评审前将设计文档和检查清单提前发给评审人员","评审会中由设计者先详细讲解再请评审人员提问","对发现的问题记录严重程度并跟踪闭环","评审只邀请项目组内部同岗位人员参加"],"answer":[0,2],"explanation":"知识点是设计评审组织。提前发材料和检查清单能提高准备度；记录问题并跟踪闭环保证评审效果。错误项：设计者先详细讲解容易形成引导，降低发现问题的独立性；只邀请同岗位人员会缺少多视角。"},{"id":257,"type":"single","stem":"在软件设计阶段使用模块化方法时，若某模块的内聚类型为逻辑内聚，则该模块内部各元素之间的关系表现为","options":["各元素执行同一类逻辑功能，由传入参数决定执行哪一部分","各元素按固定顺序依次执行，前一个的输出是后一个的输入","各元素共同完成一个具体功能且缺一不可，无法拆分","各元素通过公共数据区间接传递信息，彼此独立"],"answer":[0],"explanation":"知识点是模块内聚类型。逻辑内聚指模块内各元素在逻辑上属于同一类功能，由参数选择执行其中一部分；顺序内聚对应选项B，功能内聚对应选项C，通信内聚对应选项D。"},{"id":258,"type":"single","stem":"某系统采用UML进行建模，需要描述对象在生命周期中状态变化及触发状态迁移的事件，应优先选用的图是","options":["状态图","活动图","用例图","协作图"],"answer":[0],"explanation":"知识点是UML各类图的用途。状态图专门描述对象状态及事件驱动的迁移；活动图侧重流程与并发控制；用例图描述系统与外部参与者的功能关系；协作图强调对象间消息交互结构。"},{"id":259,"type":"single","stem":"在关系数据库模式设计中，若关系R(A,B,C)上存在函数依赖A→B、B→C，则R至少属于","options":["第二范式","第一范式","第三范式","BC范式"],"answer":[0],"explanation":"知识点是范式判定。候选键为A，非主属性B、C均完全函数依赖于A，满足2NF；但C通过B传递依赖于A，故不满足3NF和BCNF；所有属性均原子，已满足1NF，但题干问至少属于且综合判断应为2NF。"},{"id":260,"type":"single","stem":"采用白盒测试的判定覆盖法设计测试用例时，其覆盖要求是","options":["每个判定表达式的真、假分支至少各取一次","每条可执行语句至少执行一次","每个判定中每个条件的可能取值至少各取一次","所有可能的路径组合至少执行一次"],"answer":[0],"explanation":"知识点是白盒测试覆盖标准。判定覆盖要求每个判定的真假分支各至少执行一次；语句覆盖对应选项B；条件覆盖对应选项C；路径覆盖对应选项D。"},{"id":261,"type":"single","stem":"在软件维护类型中，为适应外部运行环境变化（如操作系统升级、数据库更换）而修改软件的活动属于","options":["适应性维护","纠正性维护","完善性维护","预防性维护"],"answer":[0],"explanation":"知识点是软件维护分类。适应性维护目的是适应外部环境变化；纠正性维护针对已发现的错误；完善性维护为增加或改进功能性能；预防性维护为提升将来可维护性。"},{"id":262,"type":"single","stem":"某项目采用敏捷开发，在迭代评审会上发现已完成的某用户故事未达到验收标准，产品负责人正确的处置方式是","options":["将该故事重新放入产品待办列表并重新排优先级","在本次迭代内立即返工直到通过验收","把该故事直接标记为已完成并顺延到下一迭代","由开发团队自行决定是否保留该故事"],"answer":[0],"explanation":"知识点是敏捷迭代评审与待办列表管理。未达验收标准的故事应回到产品待办列表并重新排优先级；返工应在后续迭代中安排而非强行拖延本次迭代；标记完成属于掩盖问题；开发团队无权单方面决定产品范围。"},{"id":263,"type":"single","stem":"在面向对象设计中，某父类定义方法f()，子类重写f()后通过父类引用调用子类对象的方法，运行时才确定调用的具体实现，这一特性称为","options":["动态绑定","静态绑定","方法重载","参数多态"],"answer":[0],"explanation":"知识点是面向对象多态机制。动态绑定指运行时根据对象实际类型确定方法实现；静态绑定在编译期确定；方法重载是同类中同名不同参；参数多态指通过泛型参数化类型。"},{"id":264,"type":"single","stem":"某系统采用管道-过滤器架构风格，在需要支持用户交互式修改中间处理结果时，该风格的主要局限是","options":["过滤器之间相互独立，难以支持交互式修改中间数据","过滤器无法并发执行，吞吐量受限","管道不能传输结构化数据，表达能力不足","过滤器必须共享全局状态，耦合度过高"],"answer":[0],"explanation":"知识点是管道-过滤器架构风格特点。其过滤器独立、数据单向流动，不利于交互式修改中间结果；过滤器可并发、管道可传结构化数据、过滤器不共享全局状态，故其余选项描述有误。"},{"id":265,"type":"multi","stem":"在软件需求分析与建模过程中，下列活动属于需求获取阶段应完成的工作有","options":["与客户面谈并记录业务目标与约束","分析现有系统的文档与业务流程","编写详细设计类图并确定类间关联","建立用例模型描述系统与参与者交互","编写程序代码验证需求可行性"],"answer":[0,1,3],"explanation":"知识点是需求工程阶段划分。需求获取包括面谈、分析现有文档、建立用例模型等；编写详细设计类图属于设计阶段，编写代码验证属于实现阶段，均不属于需求获取。"},{"id":266,"type":"single","stem":"在软件设计师考试中，求解单源最短路径且边权非负时，Dijkstra算法采用贪心策略每轮确定一个顶点的最短距离，其正确性依赖于该顶点当前距离已是最终最短距离，这一性质成立的前提是","options":["所有边权均为非负值","图中不存在环","源点到所有顶点均可达","顶点按编号顺序处理"],"answer":[0],"explanation":"知识点：Dijkstra算法适用条件。Dijkstra每轮选当前距离最小的未确定顶点并锁定，若存在负权边，后续可能通过负边使已锁定顶点距离更小，故必须边权非负。B项环不影响正确性，Dijkstra可处理有环图；C项不可达顶点距离为无穷，不影响可达顶点的正确性；D项处理顺序由距离决定而非编号，编号顺序无关。"},{"id":267,"type":"single","stem":"某系统需支持频繁在序列中间位置插入和删除元素，且要求按下标随机访问效率高，同时内存中元素连续存放，最合适的数据结构是","options":["动态数组","单链表","循环队列","二叉搜索树"],"answer":[0],"explanation":"知识点：线性表存储结构选择。动态数组内存连续、支持O(1)随机访问，中间插入删除需移动元素但在连续存储前提下是唯一能满足随机访问的结构。B项单链表虽插入删除快但无法O(1)按下标访问且结点不连续；C项循环队列只支持两端操作，中间插入不符合队列语义；D项二叉搜索树按值组织，非按下标访问且不连续。"},{"id":268,"type":"single","stem":"在UML中，若类A的变化需要同步引起类B的变化，且B不知道A的具体实现，通常应在A与B之间建立的设计模式是","options":["观察者模式","适配器模式","装饰器模式","工厂方法模式"],"answer":[0],"explanation":"知识点：设计模式意图辨析。观察者模式定义一对多依赖，当主体状态改变时自动通知观察者，且主体不依赖观察者具体实现。B项适配器解决接口不兼容的转换问题；C项装饰器用于动态给对象添加职责；D项工厂方法用于创建对象延迟到子类。三者均不解决状态变化通知问题。"},{"id":269,"type":"single","stem":"关系数据库中，若关系R(A,B,C)上存在函数依赖A→B和B→C，则R至少属于的范式及A→C成立的原因分别是","options":["第一范式，传递依赖","第二范式，部分依赖","第三范式，传递依赖","BC范式，部分依赖"],"answer":[2],"explanation":"知识点：函数依赖与范式判定。A→B、B→C可推出A→C，这是传递依赖；若候选键为A，则非主属性B、C均完全依赖于A且不存在非主属性对键的部分依赖，但C传递依赖于A，故不满足3NF，R属于2NF。A项1NF要求属性原子性，未涉及传递依赖判断；B项部分依赖指非主属性依赖候选键的真子集，此处不存在；D项BCNF要求每个决定因素都含候选键，B不是候选键故不满足。"},{"id":270,"type":"single","stem":"软件测试中，某模块输入为三个整数表示三角形三边，需覆盖“构成等边三角形”和“构成普通三角形”两类有效等价类，同时覆盖“两边之和不大于第三边”的无效等价类，采用等价类划分法设计测试用例时，最少需要的用例数为","options":["3","4","5","6"],"answer":[0],"explanation":"知识点：等价类划分法用例数量。每个有效等价类至少一个用例，两个有效等价类可用一个用例（如3,3,3仅覆盖等边）不能同时覆盖，故等边一个、普通一个；一个无效等价类一个用例，共3个。B、C、D项多算，原因在于误把每个无效子类都单独列或对有效类重复覆盖，等价类划分原则是每个等价类至少一个用例，不是每个边界一个。"},{"id":271,"type":"single","stem":"某项目采用增量模型开发，第一个增量交付后用户提出基础架构需大改，导致后续增量返工严重，最可能的原因是","options":["未在早期增量中确定核心架构","增量划分时按功能数量平均分配","每个增量都进行了独立测试","用户参与了第一个增量的评审"],"answer":[0],"explanation":"知识点：增量模型风险。增量模型要求先实现核心骨架再逐步扩展，若早期增量只做外围功能而未稳定架构，后期改动会波及所有增量。B项按功能平均分配本身不是返工主因，关键是架构是否先行；C项独立测试是正常实践；D项用户参与评审有助于发现问题而非导致返工。"},{"id":272,"type":"single","stem":"某电商系统订单服务在促销期间响应时间从200ms升至2s，日志显示数据库连接池等待队列长度持续增长而CPU使用率不足30%，首先应排查的环节是","options":["数据库慢查询或连接占用时间过长","应用服务器CPU核数不足","网络带宽是否达到上限","前端页面资源加载是否过多"],"answer":[0],"explanation":"知识点：性能问题定位。连接池等待增长且CPU不高，说明连接被长时间占用而非计算瓶颈，最可能是慢查询或事务未及时释放连接。B项CPU不足与使用率30%矛盾；C项带宽问题通常表现为吞吐下降而非连接池排队；D项前端资源影响的是页面加载，不影响服务端连接池。"},{"id":273,"type":"single","stem":"软件维护中，为适应外部环境变化（如操作系统升级、数据库版本更换）而修改软件的活动属于","options":["适应性维护","纠正性维护","完善性维护","预防性维护"],"answer":[0],"explanation":"知识点：软件维护类型。适应性维护指为适应外部环境（软硬件、数据环境）变化而修改。B项纠正性维护是修复运行中发现的错误；C项完善性维护是增加或改进功能性能；D项预防性维护是为提高未来可维护性而主动修改，如重构。"},{"id":274,"type":"single","stem":"某团队用Git协作，成员A在feature分支完成提交后执行git rebase master再推送到远程feature分支，可能导致其他成员拉取时出现问题的原因是","options":["rebase重写了feature分支的提交历史","rebase会把master合并进feature","rebase会自动删除远程分支","rebase只能用于本地未推送的提交"],"answer":[0],"explanation":"知识点：Git rebase影响。rebase将feature提交在master新基点上重新应用，生成新提交哈希，历史被重写，其他人若已基于旧历史工作会产生分叉冲突。B项rebase不是merge，不产生合并提交；C项rebase不删除远程分支；D项说法过于绝对，已推送分支可强制推送但会带来协作风险。"},{"id":275,"type":"single","stem":"在面向对象设计中，若子类需要扩展父类某方法的行为，且要求父类方法在子类方法执行前后都被调用，最合适的实现方式是","options":["子类重写方法并在其中调用super同名方法","子类定义新方法但不重写父类方法","父类方法声明为final禁止重写","子类通过组合持有父类对象并转发调用"],"answer":[0],"explanation":"知识点：继承与方法重写。子类重写并调用super可在父类逻辑前后插入扩展，符合模板方法思想。B项不重写则父类行为不会被替换，无法扩展；C项final禁止重写与需求相反；D项组合转发无法保证父类方法被自动调用，且破坏了多态调用语义。"},{"id":276,"type":"single","stem":"在软件设计阶段使用模块化方法时，若将模块的扇入数提高而扇出数降低，通常带来的直接效果是","options":["模块独立性增强且复用性提高","模块间耦合度上升且维护困难","模块的控制范围被显著扩大","模块的作用范围被明显压缩"],"answer":[0],"explanation":"知识点为模块独立性与扇入扇出。扇入高说明该模块被较多上层模块调用，复用性好，扇出低说明该模块依赖的下层少，独立性增强。耦合度上升与扇入高扇出低的常规结论相反；控制范围由结构决定，不会因扇入扇出此消彼长而显著扩大；作用范围取决于判定所在模块及其下属，不会因此被明显压缩。"},{"id":277,"type":"single","stem":"在 UML 中描述一个对象在生命周期内响应事件时所经历的状态序列及状态转移，应优先选用","options":["状态图","活动图","协作图","部署图"],"answer":[0],"explanation":"知识点为 UML 动态视图的选型。状态图刻画单个对象的状态与事件驱动的转移。活动图强调控制流与并发动作；协作图强调对象间的消息交互结构；部署图描述物理节点配置。"},{"id":278,"type":"single","stem":"某系统中模块 A 直接读写模块 B 的内部全局变量，若要降低二者耦合，最合理的重构方向是","options":["将全局变量改为通过参数或接口传递","把两个模块合并为一个模块以消除接口","将全局变量改名为更易识别的名称","在两个模块间增加一个共享缓存区"],"answer":[0],"explanation":"知识点为耦合类型与重构。直接访问内部数据属于公共耦合/内容耦合，改为参数或接口传递可降为数据耦合。合并模块只是掩盖耦合；改名不改变耦合性质；共享缓存区会引入新的公共耦合。"},{"id":279,"type":"single","stem":"某项目采用敏捷开发，迭代评审会上客户提出一项未列入产品待办列表的新需求，团队正确的处置方式是","options":["由产品负责人评估并纳入产品待办列表排序","由开发人员当场决定是否在下个迭代实现","由项目经理直接修改迭代计划并加入该需求","拒绝记录该需求以免影响当前迭代节奏"],"answer":[0],"explanation":"知识点为 Scrum 角色与待办列表管理。新需求应由产品负责人评估价值并纳入产品待办列表排序，再决定何时实现。开发人员无权单方面决定需求优先级；项目经理直接改迭代计划不符合敏捷角色分工；拒绝记录会丢失需求且不符合透明原则。"},{"id":280,"type":"single","stem":"对某 C 语言程序进行静态分析时发现函数内局部数组被返回其首地址给调用者，该缺陷的本质是","options":["返回了栈帧中对象的地址","数组名退化为常量指针","返回类型与数组类型不匹配","局部数组未初始化的读取"],"answer":[0],"explanation":"知识点为栈帧生命周期与悬空指针。局部数组位于被调函数栈帧，函数返回后栈帧失效，返回其地址形成悬空指针。数组名退化是正常语义；返回类型与数组类型可兼容；题目未涉及未初始化读取。"},{"id":281,"type":"multi","stem":"在面向对象设计中，若某类需要同时具备“接口稳定”和“实现可替换”两项特征，下列做法中恰当的有","options":["面向抽象编程，调用方仅依赖接口","通过继承具体类并覆写其全部方法","用工厂方法封装具体实现类的创建","在接口中直接暴露实现类的私有字段"],"answer":[0,2],"explanation":"知识点为依赖倒置与工厂模式。面向抽象编程使调用方不依赖具体实现；工厂方法把创建细节封装在实现侧。继承具体类并覆写全部方法仍使调用方耦合于具体父类；接口暴露私有字段破坏封装且与实现可替换无关。"},{"id":282,"type":"single","stem":"某电商系统在秒杀场景下频繁出现库存超卖，经排查扣减库存的 SQL 为“先查询再更新”且未加锁，正确的修复方向是","options":["将扣减改为带库存条件的原子更新","把查询与更新放入同一事务但不加锁","在应用层增加定时任务补偿库存","将库存字段类型由整型改为字符型"],"answer":[0],"explanation":"知识点为并发控制与原子更新。超卖源于查询与更新之间的竞态，应使用带库存条件的原子更新（如 UPDATE ... WHERE stock>=n）由数据库保证一致性。同一事务不加锁仍可能因隔离级别产生竞态；定时补偿无法防止超卖；改字段类型与并发无关。"},{"id":283,"type":"single","stem":"采用贪心策略求解活动安排问题时，先将活动按结束时间递增排序，再依次选择与已选活动相容的活动，该策略能得到最优解的关键性质是","options":["问题具有最优子结构和贪心选择性质","问题具有重叠子问题和无后效性","问题满足拟阵的交换性但不满足遗传性","问题满足动态规划的最优性原理但不满足贪心选择"],"answer":[0],"explanation":"知识点：贪心算法适用条件。活动安排问题要求最优子结构和贪心选择性质，按结束时间最早选择可保证最优，故A正确；重叠子问题与无后效性是动态规划或状态转移的特征，与贪心选择无关，故B错；拟阵需同时满足遗传性和交换性，故C错；最优性原理是动态规划基础，不能替代贪心选择性质，故D错。"},{"id":284,"type":"single","stem":"对某二叉树进行中序遍历得到序列 BDACE，前序遍历得到序列 ABDCE，则该二叉树的后序遍历序列是","options":["DBECA","DEBCA","BDECA","DBCEA"],"answer":[0],"explanation":"知识点：由前序和中序恢复二叉树并求后序。前序首元素 A 为根，中序中 A 左侧 BD 为左子树、右侧 CE 为右子树；还原后后序为 DBECA，故A正确；DEBCA 把右子树结构弄反，故B错；BDECA 左子树顺序错误，故C错；DBCEA 右子树顺序错误，故D错。"},{"id":285,"type":"single","stem":"在 UML 中，若类 A 的实例在运行期持有类 B 的实例引用，且 B 的生命周期不依赖 A，则 A 与 B 之间最适合表示为","options":["关联关系","组合关系","泛化关系","实现关系"],"answer":[0],"explanation":"知识点：UML 类间关系辨析。运行期持有引用且生命周期独立属于关联，故A正确；组合要求整体控制部分生命周期，故B错；泛化表示继承，故C错；实现表示类对接口的实现，故D错。"},{"id":286,"type":"single","stem":"某模块内各功能必须按固定顺序依次执行，且前一个功能的输出是后一个功能的输入，则该模块的内聚类型是","options":["顺序内聚","通信内聚","过程内聚","逻辑内聚"],"answer":[0],"explanation":"知识点：模块内聚类型。顺序内聚强调数据流顺序传递，故A正确；通信内聚强调使用同一输入或产生同一输出，不要求顺序，故B错；过程内聚只要求按顺序执行但数据可不传递，故C错；逻辑内聚是按逻辑选择执行相似功能，故D错。"},{"id":287,"type":"single","stem":"在关系数据库设计中，若关系 R 已满足第三范式，但存在主属性对候选键的部分依赖，则 R 至少应进一步规范到","options":["BCNF","2NF","4NF","5NF"],"answer":[0],"explanation":"知识点：范式判定。主属性对候选键存在部分依赖时，3NF 仍可能不满足 BCNF，故应规范到 BCNF，A正确；2NF 只处理非主属性对候选键的部分依赖，故B错；4NF 处理多值依赖，故C错；5NF 处理连接依赖，故D错。"},{"id":288,"type":"single","stem":"某系统采用请求分页存储管理，页面大小为 4KB，某进程访问逻辑地址 0x2A5F 时，其页内偏移量为","options":["0xA5F","0x2A5","0x2A","0x5F"],"answer":[0],"explanation":"知识点：分页地址转换。页大小 4KB 即低 12 位为页内偏移，0x2A5F 的低 12 位是 0xA5F，故A正确；0x2A5 是高 12 位的一部分，不是页内偏移，故B错；0x2A 是页号的一部分，故C错；0x5F 只是最低字节，故D错。"},{"id":289,"type":"single","stem":"在软件测试中，若某程序输入变量 x 的取值范围是 1≤x≤100，采用边界值分析法设计测试用例时，除 1 和 100 外还应优先选取","options":["0 和 101","2 和 99","50 和 51","-1 和 102"],"answer":[0],"explanation":"知识点：边界值分析。边界值分析关注边界及其相邻值，故除 1、100 外应取 0、101，A正确；2 和 99 是有效区间内的普通值，故B错；50 和 51 是中间值，故C错；-1 和 102 超出相邻边界范围，优先级低于 0 和 101，故D错。"},{"id":290,"type":"single","stem":"某项目活动 A 持续 3 天，活动 B 持续 5 天，B 必须在 A 完成后开始，若 A 最早开始为第 2 天，则 B 的最早完成时间为第","options":["10 天","9 天","8 天","11 天"],"answer":[0],"explanation":"知识点：项目进度网络计算。A 最早完成第 5 天，B 最早开始第 5 天，持续 5 天，最早完成第 10 天，故A正确；9 天误把 A 持续算成 2 天，故B错；8 天误把 B 开始算成第 3 天，故C错；11 天多算一天，故D错。"},{"id":291,"type":"single","stem":"某电商系统在“双十一”期间订单量激增，数据库读写比约为 9:1，且要求订单查询响应稳定，最合适的数据库扩展策略是","options":["主从复制并配置读写分离，写走主库读走从库","对订单表按用户 ID 做水平分表并关闭索引","将所有订单数据放入单个大表并增加内存缓存","采用分布式事务强一致方案并取消从库"],"answer":[0],"explanation":"知识点：高并发数据库扩展策略。读多写少场景适合主从复制加读写分离，故A正确；关闭索引会拖慢查询，故B错；单表加缓存不能解决写入和容量扩展，故C错；取消从库会降低读扩展能力，故D错。"},{"id":292,"type":"single","stem":"某开发人员在重构时发现一个类同时承担订单校验、库存扣减和日志记录三项职责，且修改任一职责都会影响其他职责，此时最应优先采用的改进措施是","options":["按职责拆分为多个类并明确各自接口","为该类增加更多方法以集中管理职责","将该类改为单例以保证状态一致","为该类添加更多注释说明各项职责"],"answer":[0],"explanation":"知识点：单一职责原则与重构。一个类承担多项变化原因不同的职责时应拆分，故A正确；增加方法会加剧职责集中，故B错；单例只控制实例数量，不解决职责耦合，故C错；注释不能降低耦合，故D错。"},{"id":293,"type":"multi","stem":"关于软件设计模式中的观察者模式，下列描述正确的有","options":["主题对象状态变化时通知所有已注册的观察者","观察者可以在运行期动态注册和注销","主题与观察者之间通常是松耦合的","观察者模式强制要求主题继承抽象类","观察者模式只能有一个观察者对象"],"answer":[0,1,2],"explanation":"知识点：观察者模式结构与特性。主题状态变化通知观察者、观察者可动态注册注销、主题与观察者松耦合，均正确，故A、B、C正确；观察者模式可用接口而非强制抽象类继承，故D错；观察者数量可多个，故E错。"},{"id":294,"type":"single","stem":"某系统中需要频繁对有序数组执行插入和删除操作，并要求查找效率尽可能高，宜选用的数据结构是","options":["顺序表","单链表","二叉排序树","散列表"],"answer":[2],"explanation":"知识点是线性表与树形结构在有序数据动态操作中的适用性。二叉排序树在保持有序性的同时，插入、删除和查找平均代价接近O(log n)，适合频繁动态操作。顺序表插入删除需大量移动元素；单链表查找需顺序扫描，效率低；散列表不保持有序，无法支持范围查找。"},{"id":295,"type":"single","stem":"在UML类图中，若类A与类B之间是整体与部分关系，且部分可以脱离整体独立存在，则两者之间应建模为","options":["泛化关系","聚合关系","组合关系","依赖关系"],"answer":[1],"explanation":"知识点是UML类图中聚合与组合的语义区别。聚合表示整体与部分关系且部分可独立存在，生命周期不绑定；组合表示部分不能脱离整体独立存在。泛化是继承关系；依赖是临时使用关系。"},{"id":296,"type":"single","stem":"某模块内各语句之间没有数据依赖，仅因书写顺序相邻而被放在同一模块中，这种模块内聚类型属于","options":["逻辑内聚","时间内聚","偶然内聚","通信内聚"],"answer":[2],"explanation":"知识点是模块内聚类型。偶然内聚指模块内各成分之间没有实质联系，只是偶然放在一起，符合题干描述。逻辑内聚是执行逻辑相似的功能；时间内聚是要求在同一时间段执行；通信内聚是各成分使用同一输入或产生同一输出。"},{"id":297,"type":"single","stem":"在采用面向对象方法设计时，子类可以替换父类出现在程序中任何父类出现的位置，这一原则称为","options":["开闭原则","里氏替换原则","依赖倒置原则","接口隔离原则"],"answer":[1],"explanation":"知识点是面向对象设计原则。里氏替换原则要求子类型必须能够替换其基类型，且不破坏程序正确性。开闭原则强调对扩展开放对修改关闭；依赖倒置强调依赖抽象；接口隔离强调使用多个专门接口而非单一总接口。"},{"id":298,"type":"single","stem":"某项目进度网络图中，活动A历时3天，活动B历时5天，A完成后B才能开始，B完成后项目结束，若A延迟2天完成，则项目总工期将","options":["不受影响","延长2天","延长5天","缩短3天"],"answer":[1],"explanation":"知识点是关键路径与总时差。题干中A和B构成唯一路径，A是关键活动，无总时差，A延迟2天会直接导致项目工期延长2天。不受影响需A有总时差；延长5天误把B历时当作延误量；缩短3天与延误方向相反。"},{"id":299,"type":"single","stem":"在软件设计阶段使用UML对一组对象之间的交互进行建模时，若需要强调消息的时间顺序并展示对象生命线上的激活期，应选用哪种图","options":["顺序图","通信图","状态图","活动图"],"answer":[0],"explanation":"知识点是UML交互图的语义差异。顺序图以时间轴纵向排列消息，能直观展示对象生命线上的激活期，符合题干要求。通信图强调对象之间的链接关系与消息编号，不突出时间顺序；状态图描述单个对象的状态迁移与事件响应，不用于多对象交互建模；活动图描述控制流与并发活动，不展示对象生命线激活期。"},{"id":300,"type":"multi","stem":"某电商系统在订单支付成功后需要异步通知库存、积分、物流三个子系统，设计评审时提出以下四种集成方案，其中哪些方案在消息中间件可靠投递机制下能避免因单个子系统故障导致订单主流程阻塞且不会丢失通知","options":["订单服务将通知消息写入本地事务表，由独立投递线程读取并发送到消息队列，各子系统订阅对应主题","订单服务在支付回调线程内依次同步调用库存、积分、物流接口，全部返回成功后再更新订单状态","订单服务向消息队列发送一条包含业务类型的消息，各子系统通过同一消费者组竞争消费该消息","订单服务分别向库存、积分、物流三个主题发送消息，各子系统独立订阅自己的主题并自行确认消费"],"answer":[0,3],"explanation":"知识点是异步解耦与可靠消息投递。选项0用本地事务表加独立投递线程实现事务消息，子系统故障不影响主流程且消息不丢；选项3按主题拆分并由各子系统独立订阅确认，属于发布订阅解耦，能避免相互阻塞且支持重试不丢失。选项1同步串行调用使主流程依赖三个子系统可用性，任一故障都会阻塞订单流程；选项2让三个子系统竞争消费同一条消息，只有一个子系统能收到，业务上会漏通知。"}]}