目录
三十二、逻辑运算(自然连接什么的什么的、左外连接、右外连接、完全外连接)
三十三、主机开机后没有得到DHCP服务器的响应。则获得什么IP
三十五、系统总线(外总线)用于主存与外设(I/O接口)的连接、内总线连接CPU内部
一、哈夫曼树的性质与构造

哈夫曼树的性质:
①在哈夫曼树中,只有度为0和度为2的结点。
②设叶子结点个数为n,则树中总结点数为n +n-1 =2n-1。
己知哈夫昙树共有127个结点,根据上述性质可得:2n-1=127,叶子结点数n=64.
哈夫曼树的叶子结点代表需要编码的字符,所以共能得到64个字符的编码。

(1)构造哈夫曼树
先排序(从小到大):5、9、12、13、16、45
两个最小数相加,结果放回去并标记:
5+9=14 新序列:12、13、++14++、16、45
12+13=25 新序列:++14++ 、16、++25++、45
14+16=30 新序列:++25、30++、45
25+30=55 新序列:++55++、45
构造:


(2)字符编码
左零右一
|----|----|----|------|
| 频率 | 位数 | 字符 | 编码 |
| 45 | 1 | a | 0 |
| 13 | 3 | b | 101 |
| 12 | 3 | c | 100 |
| 16 | 3 | d | 111 |
| 9 | 4 | e | 1101 |
| 5 | 4 | f | 1100 |
总频率是100,用100*4(最大位数)=400
频率*编码位数=45*1+13*3+12*3+16*3+9*4+5*4=224
400-224=176
176/4=44%
二、简单选择排序


三、应用层协议的端口号

四、加密算法

五、网络安全协议与不安全协议

六、叶子节点计算
所有节点度数总和=(个数*度数)+(个数*度数)+(个数*度数)..........
节点总数=所有节点度数总和+1
叶子节点总数=节点总数-已知度数的节点的个数之和

七、优先存储
1.按行Address(A[i][j]) = Base + ((i * N) + j) * Size
2.按列Address(A[i][j]) = Base + ((j * N) + i) * Size

八、函数依赖的Armstrong公理
前面三个是公理内容,后面三个是推导拓展

九、网络设备在OSI的工作位置与OSI各层功能
|-------|----------------------|-----------|
| 应用层 | 提供程序运行环境、管理执行程序 | 网关 |
| 表示层 | 在数据传输之前加密、解密、压缩、格式转化 | |
| 会话层 | 对对话双方进行资格审查与验证 | |
| 传输层 | 建立通信信道传输报文 | |
| 网络层 | 建立中间设备连接、子网内路径选择 | 路由器、三层交换机 |
| 数据链路层 | 将数据组装成帧为传输单位 | 网桥、二层交换机 |
| 物理层 | 物理连接 | 中继器、集线器 |

十、正负数的原码与补码
整数正数的补码与原码相同
整数负数的补码=原码除了符号都取反+1

十一、海明码纠错最少的验证码
信息位n,校验位k
2**k-k>=n+1
海明码:2的k次方减k,大于等于n+1

十二、网络通信攻击的被动与主动

十二、排序时间复杂度、空间复杂度、稳定性与原理巧记
时间n**2的稳定是?
时间nlogn的稳定是?
空间1的稳定是?


|------|----------------------------------------------------------------|
| 插入排序 | 像打牌摸一张按大小插到牌堆 |
| 冒泡排序 | 煮开水,气泡不断冒上来,最大的"冒"到最上面 |
| 选择排序 | 找最小的与目前要排序的元素互换位置 |
| 希尔排序 | 选一个步长先排好,慢慢缩小步长(换位置,不另开空间) |
| 快速排序 | 选个标志元素放中间,先动远的指针,小的放左指针,大的放右指针。先排的离标志元素远。只有元素放到了另一个指针上才换指针 |
| 堆排序 | 建一个"金字塔"(大顶堆),每次把塔尖(最大)换到最后,再重新建塔 |
| 归并排序 | 两队人排好队,然后两队头头比较,小的人先并入新队,直到两队合一 |
| 基数排序 | 先按个位数分桶,再按十位数分桶,直到最高位,最后连起来 |

十三、段数、段大小、页大小计算

十四、运算速度CPI与MIPS

概念:
CPI:每条指令所用的时间周期数
时钟周期:主频的倒数
时钟频率=主频
MIPS:每个时钟周期所执行的指令数
M(兆)是百万(10**6)
G(吉)是十亿(10**9)
计算:
CPI=总时间周期数/指令数
MIPS=主频 / 平均CPI*10**6=.8*10**9/3.5*10**6=800
MIPS又=指令总数/执行时间*10**6
十五、访问控制的任务包括什么?

授权、确定存取权限、实施存取权限。没有审计
十六、内部与外部网关协议

RIP(路由信息协议)是内部网关协议
OSPF(开放式最短路径优先)是内部网关协议
BGP是边界网关协议,运行于TCP,是外部网关协议
十七、信息的完整性、可用性、保密性和不可抵赖性

保密性:数据传输过程中不能被非授权者偷看
完整性:数据传输过程中不能被非法篡改
不可抵赖性:数据的真实性会确认一下信息的发送者身份
可用性:发送者和接受者双方通信方式正常
十八、Windows系统命令
显示网络配置(IP、MAC、网关等)用ipconfig
用于确定IP数据包访问目标采取的路径,若网络不通,可以找出节点用tracert
显示一下网络连接、路由表与网络接口的应用程序信息用netstat
查询DNS记录用nslookup
十九、软件著作权的永久保护
修改权、署名权、保护作品完整权
二十、软件成本估算模型COCOMOII三种不同的估算
应用组装阶段------对象点(对象的组装所以按照对象)
早起设计阶段-------功能点(设计功能所以按照功能)
体系结构阶段--------代码行数(软著算代码行)
二十一、C/C++语言的过程
预处理、编译、汇编、链接
二十二、进程资源图的化简

申请边:进程到资源
分配边:资源到进程
1.找一个只有分配的边、去掉分配边
2.把去掉的分配边给别的进程的申请边(替换)
3.重复看看能不能都变孤立
二十三、索引节点管理的计算

已知索引块大小为1k,数据块大小为1k,地址项大小为4字节,1k=1024字节,则一个索引盘有1k/4B=256个索引。
iaddr【5】和iaddr【6】为一级间接索引,共256*2=512个
iaddr【7】为二级,则为256*256=65536个
则共66053个
二十四、多线程的共享与不共享
共享:代码段、公有数据、打开的文件、信号处理器、当前目录、组ID和用户ID
不共享:线程ID、寄存器组的值、栈、堆、错误返回码、信号屏蔽码
二十五、开发模型的特点与使用场景
喷泉模型:用户需求为动力、对象为驱动模型、面向对象、没有明显界限、可同步开发
瀑布模型:阶段明确、文档驱动、需求明确的项目
敏捷开发:分为多个短周期每次交付软件增量、用户参与、灵活、Scrum(并列争球法:30天为一周期冲刺)、Kanban、XP(极限编程:价值观、原则、实践、行为)。
螺旋模型:风险分析、大型且复杂高风险
V模型:测试与开发一一对应
需求分析 <──────────────────> 验收测试
│ │
│ │
概要设计 <──────────────────> 系统测试
│ │
│ │
详细设计 <──────────────────> 集成测试
│ │
│ │
编码 <──────────────────> 单元测试
原型模型:需求不明确、快速构建模型得到用户反馈、用户参与、风险低
迭代模型:循环开发、功能拓展、需求逐步明确
增量模型:分模块按优先级交付、并行开发、早起交付
二十六、面向对象系统设计的原则
共同封闭原则:包中所有类对于同一种性质的变化是共同封闭的。一个变化若对一个封闭的包产生影响,则将对该包中的所有类产生影响,而对对于其他包则不造成任何影响
共同重用原则:一个包中的所有类一个是共同重用的。如果重用了包中的一个类,那么也就相当于重用了包中的所有类。
开放-封闭原则:对拓展开放,对修改封闭。
接口隔离原则:使用多个专门的接口比使用单一的总接口要好
二十七、多态的不同形式

参数多态:应用广泛、最纯的多态
包含多态:通过子类型化实现,子类对象可以当作父类类型使用,调用方法时根据实际对象类型执行不同行为。
强制多态:通过隐式或显式类型转换,使不同类型的数据兼容操作。
过载多态:同一方法名或操作符在不同上下文中因参数列表不同而具有不同含义。
二十八、设计模式
|--------------|-------------------|-------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
| 所属类型 | 模式名称 | 核心考点 | 软考怎么考 |
| 创建型 | 单例模式 | 确保一个类仅有一个实例,并提供一个全局访问点 | |
| 创建 型 类模式 | 工厂方法模式 | 定义一个用于创建对象的接口,让子类决定实例化哪个类 | 描述一个框架需要支持多种数据库(MySQL, Oracle),但具体用哪种由应用开发者决定。问框架设计者应该采用什么模式。 |
| 创建型 | 抽象工厂模式 | 提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。 | 给出一个需要创建"产品族"(如Windows风格的按钮和文本框、Mac风格的按钮和文本框)的场景,问是工厂方法还是抽象工厂。关键区别:工厂方法创建一个产品,抽象工厂创建多个产品组成一个族。 |
| 创建型 | 建造者(生成器构建器)模式 | 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 | 描述一个软件(如IDE)的安装过程,用户可以选择不同的组件(编译器、插件、文档),但安装流程是固定的。问这体现了什么模式。 |
| 创建型 | 原型模式 | 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 | 当创建对象的成本很大(如需要昂贵的数据库查询)时,为了提高性能,应该使用哪种模式。 |
| 结构型 类模式 | 适配器模式 | 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 | 给出一个"遗留系统"的接口和一个新系统的接口,需要一个"转换器"来对接。问这个转换器是什么设计模式。 |
| 结构型 | 桥接模式 | 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 | 描述一个图形形状(如圆形、方形)可以有多种颜色(红、绿),形状和颜色需要独立扩展。问用什么模式最好。关键:避免类数量爆炸(2x2=4个类)。 |
| 结构型 | 组合模式 | 将对象组合成树形结构以表示"部分-整体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 | 文件系统(文件和文件夹)、GUI中的容器和控件、公司组织架构(部门和员工),问这些结构的设计体现了什么模式。 |
| 结构型 | 装饰器模式 | 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 | 给一个窗口动态添加滚动条、边框等功能。问这是哪种模式。 |
| 结构型 | 外观模式 | 为一个复杂的子系统提供一个简化的统一接口。 | 场景题:启动一个复杂的软件(如视频播放器),用户只需点击"播放"按钮,背后却涉及解码、渲染、音频输出等多个子系统。问这个"播放"按钮属于什么模式 UML图:识别出一个Facade类,它内部引用了多个子系统类的实例,并提供简单的方法。 |
| 结构型 | 享元模式 | 运用共享技术来有效地支持大量细粒度的对象。 | 文本编辑器中大量的字符对象、围棋棋盘中的棋子对象。问如何设计以节省内存。 |
| 结构型 | 代理模式 | 为其他对象提供一种代理以控制对这个对象的访问。 | 远程代理(访问远程对象)、虚拟代理(延迟加载大图片)、保护代理(控制访问权限)。问这些场景分别对应什么模式的哪种应用。 |
| 行为型 | 责任链模式 | 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。 | 公司报销审批流程(项目经理->部门经理->财务)。问这是什么模式。 |
| 行为型 | 命令模式 | 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化。 | GUI中的菜单项和按钮、宏命令(记录一系列操作)、撤销/重做功能。问这些功能的设计通常采用什么模式。 |
| 行为型 类模式 | 解释器模式 | 给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 | 正则表达式引擎、SQL解析器。问这些工具的底层设计可能采用了什么模式。 |
| 行为型 | 迭代器模式 | 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 | 几乎所有的集合类(Java的Collection接口和Iterator接口)都使用了此模式。问遍历集合元素而不暴露其内部结构,用什么模式。 |
| 行为型 | 中介者模式 | 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散。 | 机场塔台调度飞机、GUI中的对话框(多个控件交互通过对话框本身协调)。问如何降低对象间的复杂耦合。 |
| 行为型 | 备忘录模式 | 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 | 游戏存档、编辑器的撤销/重做、数据库事务的回滚。问如何实现对象状态的保存与恢复。 |
| 行为型 | 观察者模式 | 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 | MVC架构中Model和View的关系、事件监听机制、消息队列/发布-订阅系统。问这是什么模式。 |
| 行为型 | 状态模式 | 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 | 和策略模式很像,但状态模式强调状态之间的流转,而策略模式强调算法的替换。 |
| 行为型 | 策略模式 | 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。 | 一个旅游应用提供不同的出行策略(坐飞机、坐火车、自驾),用户可以选择。问如何设计让这些策略可以灵活切换。 |
| 行为型 类模式 | 模板方法模式 | 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 | Java Servlet的service方法、数据库访问的通用流程(连接->执行->关闭)。问如何设计让父类控制流程,子类实现具体步骤。 |
| 行为型 | 访问者模式 | 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 | 相对复杂,考的概率中等偏下,但理解其"双分派"机制是关键。 |
一、核心判断法(一句话巧记)
记住这三个核心关注点,就能解决90%以上的判断题:
-
创建型模式:怎么"生"?
-
巧记口诀 :"关注对象创建,控制出生过程。"
-
核心思想:这类模式全都围绕着"如何创建一个对象"以及"由谁来创建"这个问题。它们试图将对象的创建与使用解耦,让系统更灵活。
-
你看到什么就选它 :如果模式的主要目的是为了实例化对象,比如想控制实例数量(单例)、想隐藏创建细节(工厂)、想组装复杂对象(建造者),那它就是创建型。
-
-
结构型模式:怎么"搭"?
-
巧记口诀 :"关注类与对象,像搭积木一样组合成更大结构。"
-
核心思想:这类模式关注如何将现有的类或对象像乐高积木一样组合在一起,形成更强大、更灵活的结构。它们解决的是"组合"的问题。
-
你看到什么就选它 :如果模式的主要目的是为了组合类或对象,比如把两个不兼容的接口接起来(适配器)、给一个对象动态加功能(装饰器)、把部分和整体统一起来(组合),那它就是结构型。
-
-
行为型模式:怎么"动"?
-
巧记口诀 :"关注对象间职责分配与通信,解决谁干活、怎么干的问题。"
-
核心思想 :这类模式不仅仅关注单个对象,更关注对象之间的交互和职责分配。它们描述了对象之间如何协作,以及如何划分责任。
-
你看到什么就选它 :如果模式的主要目的是为了定义对象间的行为,比如一个请求怎么传递下去(责任链)、一个状态怎么改变另一个状态(观察者)、一个算法怎么被封装和替换(策略),那它就是行为型。
-
二、快速自查流程
当你遇到一个模式,可以按这个流程快速判断:
-
第一步:问"它的主要目的是为了创建一个新东西吗?"
-
如果是,比如提供了一种创建对象的新方法,或者隐藏了创建细节 -> 创建型。
-
如果不是,进入第二步。
-
-
第二步:问"它主要是为了把几个东西组合起来,形成一个更大的结构吗?"
-
如果是,比如把两个类拼在一起,或者给对象包装一下 -> 结构型。
-
如果不是,进入第三步。
-
-
第三步:问"它是不是在规定谁来做某件事,以及事情怎么传递?"
- 如果是,比如定义了对象间的通信方式、算法的封装、状态的流转 -> 行为型。
场景:给你一个模式的描述,如何快速判断是类模式还是对象模式?
-
找关键词:
- 如果描述中反复出现"子类"、"重写"、"继承"、"实现接口"等词,大概率是类模式。
- 如果描述中出现"一个对象包含另一个对象"、"引用"、"组合"、"委托"、"调用XX对象的方法"等词,绝对是对象模式。
二十九、E-R图冲突(理解题目的描述对象是谁)
属性冲突:同一属性可能会存在于不同的E-R图,但是类型于取值不同(描述对象是属性取值)
命名冲突:相同意义的属性在不同E-R图有不同的命名(描述对象是属性的命名)
结构冲突:同一实体在不同E-R图有不同的属性(描述对象是实体的属性)

三十、范式
|------|------------------|
| 第一范式 | 原子不可分 |
| 第二范式 | 完全依赖主属性,即使主属性有两个 |
| 第三范式 | 没有传递依赖 |
| BC范式 | (严格要求)消除主属性对码的依赖 |
三十二、逻辑运算(自然连接什么的什么的、左外连接、右外连接、完全外连接)

自然连接是自动按所有同名属性(这里是A1和A2)进行等值连接,然后去掉重复列。
左外连接以左表R为准,返回R的所有元组,以及S中能匹配上的。如果S中没有匹配,则S的列补NULL。
右外连接以右表S为准,返回S的所有元组,以及R中能匹配上的。如果R中没有匹配,则R的列补NULL。
完全外连接返回左右两表的所有元组,匹配不上的部分补NULL。
三十三、主机开机后没有得到DHCP服务器的响应。则获得什么IP
169.254.X.X
三十四、最小生成树


三十五、系统总线(外总线)用于主存与外设(I/O接口)的连接、内总线连接CPU内部
三十六、软件维护的种类
改正性维护:纠正软件错误
适应性维护:去适应外部环境、数据环境
完善性(改善性)维护:新需求、提高、完善
预防性维护:重新设计用先进办法
三十七、二分查找不可能的关键字序列(树的左小右大)


三十八、配置管理的范畴
配置审计、变更管理、版本控制

三十九、两个浮点数的加减运算中,右规会导致阶码溢出
四十、网络攻击的类型
供应链投毒:通过合法开发流程渗透,代码混淆,数字证书伪造绕过审查
零日漏洞:利用未被公开的软件漏洞进行攻击
撞库攻击:通过批量尝试账号密码组合登录系统,暴力破解
四十一、数据总线带宽计算

总线带宽=总线位宽(操作位数32或者64)*总线频率
1Mb*8=1MB
本题:(32*133) / 8
有效频率=总线频率/n
本题:5个周期传一次的带宽=(32*133/5)/8=106.4MB/s
四十二、案例分析:新建实体的关系模式填写技巧

一定要有一个主键,这个主键是题目的没有的
紧急联系人(紧急联系人ID、职员号、紧急联系人姓名、与本人关系、联系电话、备注)
四十三、案例分析:数据流组成的填写技巧


题中没有给出ID号、和时间要自己拓展,记得用"+"连接
充电桩ID+计量装置ID+检测电压+检测电流+检测电能+计量电压+计量电流+计量电能+时间
四十四、案例分析:用结构化语言对加工逻辑进行描述的填写技巧
外层采用
选择:IF、THEN、ELSEIF、ENDIF
循环:WHILE、DO、EMDDO
内层没有严格要求
值得注意:
1.可能不只有一个类,要注意题中的关键名词,如:竞拍体系(单独的类,这时候就需要对两个类分别命名)、最后(最后执行的,在主类里)
2**.DO和类是有{}的,其他没有**
3.WHLIE是有()的,其他没有
4.THEN要换行,他是IF/ELSEIF的执行语句

寻找物流商{
WHILE(新订单)
DO{
IF 订单类型为保卖车或全国购
THEN
分配到竞拍体系中
ELSEIF 订单路线符合固定路线或包车路线
THEN
分配给合约物流商
ELSE
分配到竞拍体系中
ENDIF
给承运的物流商发送信息
更新订单物流信息
给车辆交易系统发送物流信息
}ENDDO
}
竞拍体系{
WHILE(收到订单)
DO{
订单信息推送给相关路线物流商
选取最优报价的物流商
}ENDDO
}
四十五、案例分析:已经存在的关系模式属性的填写技巧
1.一个空可能填多个属性
2.要仔细阅读题目的隐藏属性,如红括号里的
3.填完自己想一下要是自己设计的数据库这样的属性合不合理(有没有意义)


四十六、案例分析:关系模式主键与外键的填写技巧
1.主键可能不止有一个属性(多对多,就需要两个属性确认)
2.外键可能不止有一个属性
3.仔细阅读题中的暗示(如红括号里的)




四十七、案例分析:一个关系中是否存在传递函数依赖的答题模板
大白话推导+【可推元素】通过【中间元素】依赖传递于【主键】,故存在传递函数依赖
如:

四十八、案例分析:类图中填写类名技巧
三个字:拆单词做类名(类名没有空格)
如:重点看C4怎么来的




