全部来自 AI 原创生成并经逐题审校的题目,带 精品 标记的为 AI 复审通过。整卷生成请去组卷。
判断题:小张在重构一个类之前,先为该类补充了一组能通过的单元测试;随后每做一小步重构就运行一次测试,确保行为未改变。他认为这种“先建测试、小步重构、频繁验证”的做法符合重构与测试配合保障的基本要求。请判断他的说法是否正确。
登录后查看答案
某订单系统中,两个不同方法都重复执行“校验地址、记录日志、保存订单”这一段完全相同的代码;此外,费用计算方法根据订单类型分支,且每个分支的计算规则不同。先将重复代码提取为独立方法,再将各类型分支的费用计算移入对应类型子类并通过统一接口调用。第二步采用的重构手法是____。
某数据同步服务从远端接口拉取数据。设计规定:连接超时异常属暂时性故障,采用指数退避重试,最多重试3次(退避间隔为2秒、4秒、8秒);数据格式异常属永久性故障,必须立即中止并告警,不得重试。某次运行中,第一次调用抛出连接超时,重试第二次调用抛出数据格式异常。依据上述错误恢复策略,正确的处理方式及理由是哪一项? A. 对数据格式异常继续按退避策略重试剩余2次,因为它发生在重试流程内 B. 立即中止并告警,因为数据格式异常是永久性故障,重试不改变输入的正确性 C. 将退避间隔重置为2秒后重新开始最多3次重试 D. 忽略该异常继续拉取下一条数据,以保证整体同步不中断
代码中的一个处理流程已有一处重复逻辑,当前运行正常,近期需求稳定且没有计划修改该流程。此时最合适的做法是什么? A. 立即重构重复逻辑 B. 等到相关需求需要修改时再评估重构 C. 先全面改写该流程 D. 每次发布前都重构该流程
某支付网关的扣款函数 process(amount) 约定:仅当 amount 为大于 0 且小于等于 10000 的数值时才执行扣款。程序员采用防御式编程:在函数入口先用断言检查 amount 是否为数值类型且满足 0<amount≤10000,不满足则立即终止并报告;同时对来自外部请求的金额参数,在调用前先做输入验证,非法则拒绝请求且不改变账户状态。若外部传入 amount=-50,正确的处理流程是先____(填“断言失败终止”或“输入验证拒绝”),从而保证无效输入不会引发____(填“扣款执行”或“程序崩溃”)
某支付系统中,函数 process(amount) 在入口处对金额参数进行校验。以下四种做法中,正确体现了断言使用原则的是哪一项? A. 用 assert 验证用户传入的金额 ≥ 0,并在发布版本中依赖它拦截非法输入 B. 用 assert 检查函数内部维护的缓存索引始终落在合法区间,并在生产环境关闭断言后保证程序仍能正确运行 C. 用 assert 处理用户输入为空的情况,因为断言抛出的异常信息更详细 D. 在断言失败分支中编写恢复账户余额的代码,以确保断言同时具备容错功能
某函数要求调用者传入正整数,程序还需检查内部状态是否满足“当前阶段必须已初始化”的不变量。关于断言的使用,哪项最恰当? A. 用断言检查传入值是否为正整数,并以此代替输入验证 B. 用断言检查内部不变量,同时对传入值进行显式验证 C. 用断言处理所有可能发生的运行时错误 D. 用断言提示用户修正不合法输入
某日志导入器按顺序处理记录,要求单条记录格式错误时不得中断整个批次,且错误记录不得进入存储,批次结束时需能定位该错误。遇到格式错误的记录,导入器应____。
某权限模块的函数只需判断给定角色能否访问指定资源,调用者只需要判断结果。有人认为,为提高通用性,函数应接收整个权限配置对象,并返回判断结果和全部中间信息。判断这一接口设计是否合理。
某消息推送模块中,函数仅在满足条件「!(isBlocked && unread <= 0) || isImportant」时发送通知。若用德摩根律将其化简为逻辑等价且最清晰的形式,正确结果是哪一项? A. !isBlocked || unread > 0 || isImportant B. !isBlocked || unread <= 0 || isImportant C. !(isBlocked || unread <= 0) || isImportant D. isBlocked || unread > 0 || isImportant
某物流系统中,模块「运费计算器」每次被调用时,上层模块都将包含 30 个字段的完整「订单对象」(含客户隐私信息、历史记录等)整体传入,而该模块实际只使用其中的「重量」和「目的地」两个字段。同时,系统中另有多个模块也直接读取并修改这一个共享的订单对象。从耦合性角度看,运费计算器与上层模块之间、各共享订单对象的模块之间分别属于哪种耦合?改进方向正确的是( ) A. 前者为数据耦合,后者为公共耦合;应改为仅传递重量与目的地两个参数 B. 前者为标记耦合,后者为公共耦合;应改为仅传递重量与目的地两个参数 C. 前者为公共耦合,后者为内容耦合;应让运费计算器直接访问订单对象字段 D. 前者为控制耦合,后者为外部耦合;应合并所有模块为一个模块以消除耦合
某报表模块接收查询条件和数据访问接口,依次获取记录、整理数据并生成报表;这些步骤都服务于生成报表这一单一职责。有人据此判断:模块调用外部接口,所以内聚性低;模块间只通过参数传递数据,所以耦合性为零。该判断是否正确?
判断:某日志模块将接口设计为 writeLog(String message),内部日志的存储格式与写盘策略对外不可见。即使日后把内部实现从同步写文件改为异步写队列,只要该接口签名与语义不变,调用方代码无需修改。这说明该设计通过缩小接口暴露面降低了调用方与实现细节之间的耦合,符合信息隐藏原则。
某气象平台的 buildDailyBulletin() 依次读取原始观测记录、剔除无效记录、计算日均温、将结果排版为公告文本、保存文件并发送邮件。团队已决定由其他函数分别负责读取、清洗、计算、保存和发送;buildDailyBulletin() 的唯一职责定为“把已算出的日均温转换成公告文本”。按函数的单一职责原则,重构后 buildDailyBulletin() 应保留的核心操作是____。
某程序需要维护一个元素序列,操作特点:经常在序列尾部插入新元素,并频繁按下标随机访问已有元素。若要求这两种操作的平均时间复杂度都为 O(1),最合适的数据结构是? A. 单链表 B. 动态数组(顺序表) C. 哈希表 D. 二叉搜索树
判断:一段程序先按书写顺序初始化变量,再执行 while 循环;循环体内用 if-else 根据条件选择不同的变量更新语句。由于选择结构嵌套在循环中,这段程序只使用循环结构,不使用顺序结构和选择结构。
某计费模块中,函数 compute_fee 通过参数接收单价与数量,计算后仅返回一个金额值,不访问任何全局变量、不修改调用方传入的数据;调用方与该函数之间只存在这种通过参数显式传递数据的联系。按耦合性从高到低的分类(内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合),该函数与调用方之间的耦合类型为____;若将同一模块改造为接收一个标志位,根据标志位决定执行折扣计算还是税费计算,则耦合类型会退化为____。
某温室监测模块负责保存传感器校准参数,后续可能更换参数的存储格式。为降低调用方对实现细节的依赖,以下哪种接口设计最符合信息隐藏原则? A. 公开参数表及其字段,供调用方直接读写 B. 提供读取和更新校准参数的操作,不公开其存储结构 C. 要求调用方按约定顺序修改模块内部数组 D. 将内部数据结构说明文档作为接口,允许调用方据此访问
某任务调度系统需要持续接收新任务并每次取出优先级最高的任务执行。若用有序数组(按优先级升序存放)实现,插入一个新任务的平均时间复杂度为 O(____);若改用二叉堆实现,插入与取最大值的总开销均为 O(log n) 量级。在任务频繁插入的场景下,为使整体效率更优,应选择的数据结构是____。
阅读伪代码: i=0 total=0 while i<6: if i%2==0: total=total+i i=i+1 有人认为:“该程序虽然使用了循环和选择结构,但没有使用顺序结构,因为循环体中含有分支。”这一判断是否正确?