news 2026/4/24 18:54:29

# 软考软件设计师 · 每日一练 | 2026-04-19

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
# 软考软件设计师 · 每日一练 | 2026-04-19

软考软件设计师 · 每日一练 | 2026-04-19

距离2026上半年软考(5月23-26日)还有34天
今日专题:页面置换算法 / 面向对象设计原则 / 数据流图深化 / 风险管理与知识产权


一、选择题精练(10题)

【1】页面置换算法·LRU(操作系统)

某系统采用LRU页面置换算法,分配给某进程3个物理块,页面引用串为 7, 0, 1, 2, 0, 3, 0, 4, 2, 3,则缺页中断次数为( )。

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

答案:C

解析:逐步模拟LRU(最近最少使用,淘汰最久未使用的页面):

访问物理块1物理块2物理块3是否缺页
77✅ 缺页
070✅ 缺页
1701✅ 缺页
2201✅ 缺页(淘汰7)
0201❌ 命中
3301✅ 缺页(淘汰2)
0301❌ 命中
4401✅ 缺页(淘汰3)
2402✅ 缺页(淘汰1)
3302✅ 缺页(淘汰4)

缺页次数 = 6次,缺页率 = 6/10 = 60%

LRU核心思想:利用"时间局部性"原理,认为最近使用的页面在不久的将来还会被使用。


【2】页面置换算法·FIFO与Belady异常(操作系统)

关于FIFO页面置换算法,下列说法正确的是( )。

A. FIFO算法不会产生Belady异常
B. Belady异常是指增加物理块数量后缺页率反而增加的现象
C. FIFO算法的性能通常优于LRU算法
D. LRU算法也会产生Belady异常

答案:B

解析

  • Belady异常:分配更多的物理块,缺页率不降反升!这是FIFO算法特有的异常现象。
  • 经典例子:页面引用串 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
    • 3个物理块:缺页9次
    • 4个物理块:缺页10次(反而更多!)
  • LRU和OPT算法不会产生Belady异常,它们属于栈算法

三种算法对比

算法是否栈算法是否有Belady异常实现难度
OPT(最佳)无法实现(需未来知识)
LRU(最近最少使用)需硬件支持(计数器/栈)
FIFO(先进先出)最简单

【3】页面置换算法·OPT(操作系统)

在最优页面置换算法(OPT)中,淘汰页面的依据是( )。

A. 淘汰最早进入内存的页面
B. 淘汰最近最少使用的页面
C. 淘汰将来最长时间不再使用的页面
D. 淘汰将来最先被访问的页面

答案:C

解析:OPT(Optimal)又称最佳置换算法,选择未来最长时间内不再被访问的页面进行淘汰。它是理论上的最优算法(缺页率最低),但需要预知未来的页面访问序列,实际上无法实现,仅用于作为其他算法的性能比较基准。


【4】面向对象设计原则·开闭原则(软件工程)

下列设计模式中,最能体现"开闭原则"的是( )。

A. 单例模式
B. 工厂方法模式
C. 观察者模式
D. 适配器模式

答案:B

解析:工厂方法模式定义一个创建对象的接口,但让子类决定实例化哪个类。新增产品时只需新增一个具体工厂子类,无需修改已有代码,完美体现"对扩展开放,对修改关闭"。

设计模式与设计原则对应

设计原则典型体现模式
开闭原则工厂方法、策略模式
单一职责代理模式、装饰器模式
里氏替换策略模式、模板方法
依赖倒置工厂方法、依赖注入
接口隔离适配器模式、门面模式
迪米特法则门面模式、中介者模式

【5】面向对象设计原则·综合判断(软件工程)

下列关于面向对象设计原则的描述,错误的是( )。

A. 开闭原则是面向对象设计的核心,其他原则是实现开闭原则的手段
B. 里氏替换原则要求子类不能重写父类的方法
C. 依赖倒置原则要求高层模块依赖抽象,不依赖具体实现
D. 迪米特法则要求一个对象应对其他对象保持最少的了解

答案:B

解析:里氏替换原则并不是"不能重写父类方法",而是"子类可以扩展父类功能,但不能改变父类原有的功能语义"。也就是说子类重写方法时,前置条件不能更严格,后置条件不能更宽松,保证替换父类后程序行为不变。

七大设计原则速记

  1. 开闭原则(OCP):对扩展开放,对修改关闭
  2. 里氏替换(LSP):子类能替换父类且行为不变
  3. 依赖倒置(DIP):依赖抽象不依赖具体
  4. 单一职责(SRP):一个类只有一个变化原因
  5. 接口隔离(ISP):接口要小而专,不臃肿
  6. 迪米特法则(LoD):最少知道,不和陌生人说话
  7. 合成复用(CRP):优先组合/聚合,而非继承

【6】数据流图·平衡原则(软件工程)

在数据流图(DFD)中,父图中某加工的输入流为3条,输出流为2条,则子图中( )。

A. 输入流必须为3条,输出流必须为2条
B. 输入流和输出流之和必须为5
C. 子图的输入输出数据必须与父图对应加工的输入输出一致
D. 子图的输入输出流数量可以任意

答案:C

解析父图与子图平衡原则——子图的输入/输出数据流必须与父图中对应加工的输入/输出数据流一致(数据内容相同,数量可以不同,因为子图可能对数据进行了拆分或合并)。

注意:是"数据流内容一致",不是"数量相同"!子图可以把一条数据流拆成多条,只要数据总量守恒即可。

数据流图四大组成

符号名称含义
箭头数据流数据的流向(必须有名字)
圆/矩形加工/处理对数据的变换操作
双横线数据存储数据的存放处(文件、数据库)
方框外部实体系统外部的数据源或接收者

【7】数据流图·数据守恒(软件工程)

在数据流图中,若一个加工的输出数据流与其输入数据流不匹配,这种现象违反了( )原则。

A. 父图平衡原则
B. 数据守恒原则
C. 抽象原则
D. 层次原则

答案:B

解析数据守恒原则——加工的输出数据必须能从其输入数据中推导出来。如果输出数据与输入数据无关,说明该加工"凭空产生"了数据,违反了数据守恒。

解题技巧:数据流图答题时,每个加工必须检查——"输出的数据能否从输入得到?"如果不能,要么缺了输入数据流,要么多了输出数据流。

DFD答题四步法

  1. 读说明:标出所有实体、数据流、数据存储、加工
  2. 看父图:确认外部实体和顶层数据流
  3. 查子图:用平衡原则和守恒原则检查每个加工
  4. 找遗漏:注意数据流方向(谁给谁)和数据存储的读写

【8】风险管理·应对策略(软件工程)

项目风险应对策略中,"为项目购买保险"属于( )策略。

A. 风险回避
B. 风险转移
C. 风险减轻
D. 风险接受

答案:B

解析

  • 风险回避:改变计划以消除风险(如取消有风险的功能模块)
  • 风险转移:将风险后果转移给第三方(购买保险、外包、签订合同)
  • 风险减轻:降低风险发生的概率或影响(增加测试、原型验证)
  • 风险接受:不主动处理,准备好应急计划(准备金、备选方案)

常见混淆辨析

策略核心思想举例
回避不做有风险的事取消某个 risky feature
转移让别人承担风险买保险、签SLA合同
减轻降低概率或影响加测试、做原型、加人
接受承认风险,备好Plan B设应急预算、备选方案

【9】知识产权·著作权(法律)

关于软件著作权的保护期限,下列说法正确的是( )。

A. 软件著作权的保护期为50年
B. 软件著作权的保护期为作者终生及死后50年
C. 软件著作权的保护期为30年
D. 软件著作权没有保护期限

答案:B

解析:软件著作权属于著作权的一种(计算机软件也是作品),保护期限为作者终生及其死亡后50年(截止于第50年的12月31日)。如果是法人/组织的作品,保护期为首次发表后50年

知识产权高频考点

知识产权类型保护期限保护条件
著作权(含软件)自然人:终生+50年;法人:发表后50年自动取得,无需登记
发明专利20年需申请,有新颖性、创造性、实用性
实用新型专利10年需申请
外观设计专利15年需申请
商标权10年(可无限续展)需注册

【10】知识产权·职务作品(法律)

某程序员在公司任职期间,利用公司设备和资源开发的软件,其著作权归属为( )。

A. 程序员个人
B. 公司
C. 程序员与公司共有
D. 由法院裁定

答案:B

解析:这是典型的职务作品(职务软件)问题。

软著归属规则

  • 利用单位物质技术条件(设备、资料等)开发的软件 → 著作权归单位
  • 属于本职工作单位指派任务→ 著作权归单位
  • 非职务软件开发(业余时间、自备设备、与工作无关) → 著作权归开发者个人

注意:署名权永远归实际开发者(不能转让),但著作权的其他经济权利根据上述规则确定归属。


二、页面置换算法·核心知识体系

2.1 三大算法对比

算法淘汰策略Belady异常性能实现难度
OPT(最佳)淘汰未来最久不被访问的❌ 无最优(理论基准)不可实现
LRU(最近最少使用)淘汰最近最久未使用的❌ 无接近OPT较高(需硬件支持)
FIFO(先进先出)淘汰最早进入内存的一般最简单

2.2 LRU与FIFO核心区别

LRU:看"最近有没有被用过"——谁最久没被用,淘汰谁 FIFO:看"最早什么时候进来"——谁最先来,淘汰谁 例:内存中依次放入A→B→C,然后访问了A,再需要放入D - LRU淘汰:B(B是最久没被访问的) - FIFO淘汰:A(A是最早进入的,即使刚被访问过也要淘汰)

2.3 页面置换算法必记结论

  1. FIFO有Belady异常,LRU和OPT无此异常
  2. LRU利用时间局部性,性能优于FIFO
  3. OPT是理论最优,实际只能作为比较基准
  4. 缺页率 = 缺页次数 / 访问总次数
  5. 增加物理块数→FIFO缺页率不一定下降(Belady异常)
  6. 增加物理块数→LRU/OPT缺页率一定下降或不变

三、面向对象设计七大原则·速记体系

3.1 原则速记口诀

"开(开闭)单(单一)依(依赖倒置)里(里氏) 接(接口隔离)迪(迪米特)合(合成复用)"

3.2 核心思想一句话总结

原则一句话
开闭原则改代码不如加代码,能加不改
单一职责一个类只干一件事
里氏替换父类能用的地方子类也能用
依赖倒置面向接口编程,不面向实现
接口隔离接口要小而专,别搞万能接口
迪米特法则少跟陌生人说话
合成复用组合优于继承

3.3 设计原则与设计模式对应关系

软考高频出题点:给一段代码/场景,问"体现了哪个设计原则"。

场景体现的原则
通过继承扩展新功能而不修改原有代码开闭原则
将大接口拆分成多个小接口接口隔离原则
使用接口/抽象类引用而非具体类依赖倒置原则
类A通过类B与类C通信,不直接调用C迪米特法则
将"发动机"组合到"汽车"中而非继承合成复用原则
子类不重写父类已有方法里氏替换原则
每个类只处理一种业务逻辑单一职责原则

四、数据流图(DFD)·深化解题模板

4.1 DFD四大组成元素

┌──────┐ ┌─────────┐ │ │ 数据流 │ │ 外部实体│─────→│ 加工 │─────→ │外部实体 │ │ (圆形) │ 数据流 │ └──────┘ └────┬────┘ │ 数据流 ↓ ┌─────────┐ │ 数据存储 │ │ ═══════ │ └─────────┘

4.2 三大平衡/守恒原则

原则内容检查方法
父图平衡子图的输入输出必须与父图加工一致逐条数据流对比
数据守恒加工输出必须能从输入推导检查每个加工的"产出"
加工分解守恒子图内的加工之和外层功能 = 父加工功能检查是否有遗漏的功能

4.3 下午题DFD答题模板

第1步:读题 → 标出所有【实体名】、【数据流名】、【数据存储名】 第2步:看父图 → 外部实体必须与顶层图一致(不能多不能少) 第3步:填子图 → 用父图平衡原则,对照父加工的输入输出填入子图 第4步:查守恒 → 每个加工"进来什么、出去什么"要合理 第5步:标遗漏 → 检查是否缺了数据流方向箭头

常见陷阱

  • 数据流的方向(谁发给谁)容易搞反
  • 数据存储的读/写操作(读箭头从存储出来,写箭头指向存储)
  • 外部实体之间不能直接有数据流(必须经过加工)
  • 一个加工不能只有输出没有输入(违反数据守恒)

五、风险管理与知识产权·高频考点

5.1 风险管理四步走

风险识别 → 风险评估 → 风险应对 → 风险监控 识别:列出所有可能的风险 评估:评估概率 × 影响 = 风险等级 应对:回避/转移/减轻/接受 监控:跟踪风险状态变化

5.2 知识产权·软考必背

著作权(软考最高频)

  • 人身权(不可转让):发表权、署名权、修改权、保护作品完整权
  • 财产权(可转让):复制权、发行权、出租权、信息网络传播权等
  • 保护期:自然人终生+50年;法人首次发表后50年

专利权

  • 发明专利:20年 | 实用新型:10年 | 外观设计:15年
  • 需要申请,满足新颖性+创造性+实用性

商标权:10年,可无限续展

软考常考陷阱

  • “软件著作权需要登记才能获得” → ❌ 自动取得,登记只是证据
  • “职务作品的署名权归单位” → ❌ 署名权永远归开发者
  • “专利权保护期从申请日起算” → ✅ 正确(著作权从创作完成日起算)

六、Scrum敏捷开发·必考知识点

6.1 Scrum三角色

角色英文核心职责
产品负责人Product Owner管理产品待办列表,确定优先级
敏捷教练Scrum Master消除障碍,守护Scrum流程
开发团队Development Team自组织、跨职能,交付增量

6.2 Scrum五事件(仪式)

事件频率核心内容
Sprint1-4周一次时间盒,固定长度迭代
Sprint计划会议Sprint开始确定Sprint目标和待办事项
每日站会每天15分钟昨天做了什么、今天做什么、有什么障碍
Sprint评审会Sprint结束展示成果,收集反馈
Sprint回顾会Sprint结束反思流程,改进工作方式

6.3 Scrum三工件

工件说明
产品待办列表(Product Backlog)整个产品的需求列表,按优先级排序
Sprint待办列表(Sprint Backlog)当前Sprint要完成的任务
产品增量(Increment)Sprint结束时交付的可工作软件

七、今日记忆卡片

序号知识点关键记忆
1LRU淘汰策略淘汰最久没被访问的页面
2Belady异常FIFO特有,增加物理块→缺页率反升
3OPT vs LRUOPT看未来,LRU看过去
4开闭原则对扩展开放,对修改关闭
5里氏替换子类不能改变父类原有功能语义
6依赖倒置面向接口编程,不面向实现
7DFD平衡原则子图输入输出与父图加工一致
8DFD守恒原则加工输出必须能从输入推导
9风险转移购买保险、外包、签合同
10软著保护期自然人:终生+50年;法人:发表后50年
11署名权永远归实际开发者,不可转让
12Scrum角色PO定优先级、SM守护流程、团队交付增量

八、倒计时提醒

📅 今天:2026-04-19(周日) 📋 距软考:34天 ⏰ 冲刺阶段建议: ✓ 上午刷10道选择题(30分钟)+ 页面置换算法手动模拟 ✓ 下午练习数据流图补全题(找实体/填数据流/检查平衡) ✓ 晚上回顾设计原则7大原则 + Scrum三角色五事件 ✓ 每天花10分钟默写知识产权保护期限表

昨日回顾:PV操作四步解题法、生产者消费者代码、前趋图信号量、ER图转关系模式、范式判断、Cache映射、磁盘存取时间、事务ACID
明日预告:排序算法时间复杂度汇总、二叉树遍历与构造、UML类图与状态图、CMM/CMMI成熟度模型

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 18:54:28

跟我学C++中级篇—C和C++中const的不同

一、const const的应用是一个老生常谈的技术点。前面反复的分析很多次,包括最新的const的扩展等等。但const应用几乎是贯穿着所有开发的应用的。可以这样说,只要稍微大一些的程序,都会用到const关键字,即使开发者自己不使用&#…

作者头像 李华
网站建设 2026/4/24 18:53:29

华为OD机试真题 新系统 2026-04-19 PythonJS 实现【WIFI设备网络规划】

目录 题目 思路 Code 题目 WIFI 网络中,专业的网络规划不仅可以提升业务体验,还可以减少部署成本。把办公区可以看作一个 n * m 的网格,部分网格包含墙壁(无法放置 AP),部分为空地(可以放置 …

作者头像 李华
网站建设 2026/4/24 18:52:57

Flux2-Klein-9B-True-V2 GPU算力适配:CUDA 12.8对FLUX.2注意力机制加速实测

Flux2-Klein-9B-True-V2 GPU算力适配:CUDA 12.8对FLUX.2注意力机制加速实测 1. 项目概述 Flux2-Klein-9B-True-V2是基于官方FLUX.2 [klein] 9B改进的文生图/图生图模型,支持多种图像生成和编辑功能。该模型在CUDA 12.8环境下展现出显著的性能提升&…

作者头像 李华