简介
- 考试: 上午75分选择 + 下午75分大题, 均为笔试, 必须两门都在45分及以上才算通过
- 视频学习: 2021王寄清 软件设计师
- 必考题
第一章:计算机组成与体系结构
- 考点(6分)
- 数据的表示(4星)
- 运算器与控制器(4星)
- Flynn分类法(2星)
- CISC与RISC(2星)
- 流水线技术(4星)
- 存储系统(4星)
- 总线系统(1星)
- 可靠性(1星)
- 校验码(3星)
数据表示
- R进制转十进制(按权展开法)
- 100 =>
0*2^0 + 0*2^1 + 1*2^2 = 4
(R进制则底数为R)
- 100 =>
- 十进制转R进制(如短除法)
1 | # 右边记录余数,然后从下往上开始排列数字即为 1100100 |
- 二进制转8进制
1 | # 二进制 111 => 1*2^2 + 1*2^1 + 1*2^0 = 7 (如果是8进制,到7之后就要进位了) |
- 二进制转16进制
1 | # 二进制 1111 => 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 15 (如果是16进制,到15之后就要进位了) |
- 原码/反码/补码/移码
- 高8位(左边第一位)为符号位,用来区分正数和负数,0表示正数,1表示负数;后7位为数据位
- 正数的原/补/反码一样;
- 负数的反码是基于原码取反(但符号位不变),补码是基于反码加1(符号位不变)
- 移码是基于补码数据位不变,仅符号位取反
- 下例可看出计算机是基于补码进行数学计算的
1 | 1 -1 1-1 => 等同于1+(-1) |
浮点运算
- 浮点表示: N = 尾数 基数^指数 (3.14 10^3 = 0.314 * 10^4)
- 一般尾数用补码,阶码(指数位)用移码表示
- 运算过程: 对阶 - 尾数计算 - 结果格式化
- 3.14 10^3 + 1.2 10^5 = 0.0314 10^5 + 1.2 10^5
- 对阶就是让指数位一致,对阶时,小数向大数看齐;对阶是通过比较小数的尾数右移实现的
-存储方式: 阶符(0/1)、阶数、尾符(0/1)、尾数
计算机结构
- 运算器
- 算术逻想单元ALU:数据的算术运算和逻辑运算
- 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用在暂存数据
- 数据缓冲奇存器DR:写内存时,暂存指令或数据
- 状态条件寄存器PSW :存状态标志与控制标志(争议:也有将其归为控制器的)
- 控制器
- 程序计数器PC:存储下一条要执行指令的地址
- 指令寄存器IR:存储即将执行的指令
- 指令译码器ID:对指今中的操作码宇段进行分析解释
- 时序部件:提供时序控制信号
计算机体系结构分类(Flynn)
- 单指令流单数据流 SISD(I表示指令)
- 单指令流多数据流 SIMD: 控制部分一个,处理器和主存模块多个
- 多指令流单数据流 MISD
- 多指令流多数据流 MIMD
指令的基本概念
- 组成: 操作码字段、地址码字段
- 三地址指令: a+b=c => +,a,b,c
- 二地址指令: a+=b => +,a,b
- 一地址指令: a++ => +,a
寻址方式
- 立即寻址(操作数在指令中)
- 直接寻址(存放主存储中操作数的地址)
- 间接寻址(存放的是地址的地址)
- 寄存器直接寻址
- 寄存器间接寻址
CISC与RISC指令集
- CISC复杂
- RISC精简
- 指令: 数量少,定长格式,单周期,少寻址,只有Load/Store操作内存
- 实现方式: 增加了通用寄存器,硬布线逻辑控制为主,适合采用流水线
流水线
- 是指在程序执行时多条指令重叠进行操作时的一种并行处理技术
- 流水线周期是执行时间最长的一段的耗时
- 流水线计算公式
- 理论公式
1条指令执行时间 + (指令条数-1)*流水线周期
- 实践公式(将第1条指令的各个阶段都按流水线周期计算):
k*流水线周期 + (指令条数-1)*流水线周期
(k为指令执行包含k个阶段)
- 理论公式
- 吞吐率: 单位时间内完成的任务或输出结果的数量
- 公式
指令条数/流水线执行时间
- 最大吞吐率公式:
1/流水线周期
- 公式
层次化存储结构
- CPU(寄存器)
- Cache: 按内容存取, 时间/空间
- 内存(主存): RAM/ROM
- 外存(辅存,如硬盘)
Cache
- 映象
- 直接相联映像:硬件电路较简单,但冲突率很高。
- 全相联映像:电路难于设计和实现,只适用于小容量的cache,冲突率较低
- 组相联映像:直接相联与全相联的折中
- 地址映像是将主存与Cache的存储空间划分为若干大小相同的页(或称为块)
- 例如,某机的主存容量为1GB,划分为2048页,每页512KB; Cache客最为8MB,划分为16页,每页512KB
主存-编址与计算
- 按字节编址: 存储体的存储单元是字节存储单元,最小寻址单位是一个字节
总线
- 一条总线同一时刻仅允许-个设备发送,但允许多个设备接收。
- 总线的分类
- 数据总线(Data Bus)
- 地址总线(Address Bus)
- 控制总线(Control Bus)
校验码
- 奇偶校验: 可检查1位的错误 (最后1位表示奇偶)
- 循环校验码CRC: 可检错,不可纠错 (将余数拼接在最后,传输后可整除则正确)
- 海明校验码: 可检错,也可纠错
第二章:操作系统
- 考点(6-8分)
- 进程管理
- 进程的状态(2星)
- 前趋图(3星)
- 信号量与PV操作(4星)
- 死锁及银行家算法(4星)
- 存储管理
- 段页式存储(4星)
- 页面置换算法(1星)
- 文件管理
- 绝对路径与相对路径(3星)
- 索引文件(2星)
- 位示图(2星)
- 作业管理
- 设备管理
- 虛设备与SPOOLING技术(1星)
- 进程管理
进程管理
- PV操作: P申请资源(没有则等待),V释放资源(之后可唤醒其他进程)
- S信号量(一般为可用资源数)
- 互斥模型: 多个进程共用一个打印机
- 同步模型: 单缓冲区生产者、消费者问题
- 死锁的避免
- 有序资源分配法
- 银行家算法
存储管理
- 页式存储: 将程序和内存均划分为同样大小的块,以页为单位将程序调入内存中
- 优点: 利用率高、碎片小、分配管理简单
- 缺点: 增加了系统的开销,可能产生抖动现象
- 段式存储: 按用户作业中的自然段来划分逻辑空间,段的长度可以不一样
- 优点: 多道程序共享内存,各段程序修改互不影响
- 缺点: 利用率低,内存碎片大
- 段页式存储: 先分段再分页
- 页面置换算法
- 最优(OPT)算法
- 随机算法
- 先进先出(FIFO),可能产生抖动
- 最近最少使用(LRU)
- 磁盘管理
- 读取数据时间: 寻道时间(磁头移动到磁道) + 寻找扇区时间(即旋转延迟) + 传输时间
- 磁盘调度算法
- 先来先服务FCFS
- 最短寻道时间优先SSTF
- 扫描算法SCAN
- 循环扫描算法CSCAN
作业管理
- 作业调度算法
- 先来先服务
- 时间片轮转法
- 短作业优先法
- 最高优先权法
- 高响应比优先法
文件管理
- 索引文件结构
第三章:数据库系统
- 考点(6-8分)
- 数据库模式(2星)
- ER模型(5星)
- 关系代数(3星)
- 规范化理论(5星)
- SQL语言(4星)
- 并发控制(2星)
- 数据库完整性约束(1星)
三级模式-两层映射
- 三级模式
- 外模式(视图级, 用户视图)
- 概念模式(表级, DBA视图)
- 内模式(文件级)
- 数据库设计过程
- 需求分析
- 概念结构设计(ER模型)
- 逻辑结构设计(关系模式)
- 物理设计
E-R模型
- 长方形: 实体
- 长方形(含两条竖线): 弱实体
- 椭圆形: 属性
- 菱形: 联系
- 一条线中间有个小圆圈: 特殊化
- 线上标记1/m/n: 表示1对1, 1对多, 多对多
规范化理论
- 求候选建(业务主键): 使用图示法
- A -> B -> C, 此时侯选建为A
- 只有入没有出的肯定不是,箭头出的时候只要可以推导出其他所有节点即可(尽管有入的箭头也可以)
- 所有侯选建的组合涉及到的字段即为主属性,其他为非主属性
- 范式,参考三范式
- 1NF: 要有主键,列不可分
- 2NF: 不能存在部分依赖(每一个非主属性完全依赖侯选建)
- A,B->C, B->D 此时A,B如果为侯选建,则D不完全依赖A,B(仅依赖B)
- 可能存在数据冗余,增删改异常
- 3NF: 不能存在传递依赖
- A->B->C, 此时不能把这个3个字段放到一张表,否则存在传递依赖
- 有传递依赖则为(仅符合)2NF
- BCNF(第4范式): 消除主属性对侯选建的部分和传递依赖
模式分解
- 将关系R(A,B,C,D,E)分解成多个关系p={R1(A,B,C),R1(A,D,E)}
- 如果分解之后的模式可以还原成原关系依赖,则为无损分解,否则为有损分解
- 公式法(仅限于分解后关系模式只有2个,否则只能用表格法):
R1^R2(交集) ->(推导) R1-R2(差集) 或 R2-R1
- 如关系R(A,B,C),函数依赖F={A->B}
- 当分解成 p1={R1(A,B), R2(A,C)} 此时交集为A, 差集为B、C, 所以存在关系依赖A->B、A->C, 任然存在F, 所以为无损
- 当分解成 p1={R1(A,B), R2(B,C)} 此时无法推导出F,所有为有损
- 如关系R(A,B,C),函数依赖F={A->B}
表格法
第四章:计算机网络和网络安全
- 计算机网络考点(4分)
- 开放系统互连参考横型(2星)
- TCP/P协议族(4星)
- IP地址与子网划分(5星)
- 网络规划与设计(1星)
- 3G与4G标准(2星)
- HTML语言(2星)
- 网络安全考点(3分)
- 对称加密与非对称加密(3星)
- 信息摘要与数宇签名(2星)
- 数宇证书(2星)
- 网络安全协议(3星)
- 防火墙技术与网络攻击(3星)
- 计算机病毒与木马(3星)
OSI七层模型和TCP/IP四层模型
- 链路层协议如: PPTP/L2TP
- TCP传输: POP3邮件收取(110)、SMTP邮件发送(25)、FTP、HTTP、Telnet(23)
- UDP传输: DHCP地址自动分配(67)、TFTP(69)、SNMP简单网络管理协议(161)、DNS域名解析协议(53)
- IP地址: 参考计算机网络.md
- 网络规划与设计
- 需求分析
- 网络规划原则
- 网络设计与实时原则
- 层次化网络设计: 核心层、汇聚层、接入层
- Internet - 核心交换机 - 汇聚交换机(过滤) - 接入交换机
- 计算机网络分类
- 分布范围: 局域网(LAN)、城域网(MAN)、广域网(WAN)、因特网
- 拓扑: 总线、星型、环形
- 无线网络
- 无线局域网: WLAN, 802.11, Wi-Fi
- 无线城域网: WMAN, 802.16, WiMax
- 无线广域网: WWAN, 3G/4G
- 无线个人网: WPAN, 802.15, Bluetooth
- 对称加密与非对称加密
- 对称加密: 加密解密秘钥一样
- 非对称加密: 加密解密秘钥不一样(公钥和私钥), 但是是成对出现的
- A公钥加密只能用A私钥解密, B私钥加密只能用B公钥解密
- 如A给B发送加密信息时,可使用B的公钥加密,从而B使用私钥解密
- 数字签名
- A给B发送数字签名信息
- 明文 - hash函数 - 消息摘要 - 用A的私钥加密(签名过程) - Internet
- 用A的公钥解密 - 得到消息摘要 - 和接受到的明文进行Hash函数获取的摘要比对 - 一致说明确实为A发送过来的信息
- A给B发送数字签名信息
- 消息摘要
- 使用MD5/SHA等函数加密成固定长度的散列值,基本不可逆
- MD5使用128位,SHA使用160位,因此SHA安全性更高
- 网络安全
- DoS(拒绝服务)
第五章:系统开发基础
- 考点(11分)
- 开发模型(5星)
- 软件开发方法(1星)
- 需求分析(1星)
- 软件设计(2星)
- 软件测试与维护
- 白盒测试用例(4星)
- 软件维护类型(3星)
- McCabe复杂度计算(4星)
— 软件质量保证(1星)
- 软件过程改进(2星)
- 项目管理基础
- Gant图与Pert图(4星)
- 风险管理(3星)
- 开发模型
- 瀑布模型
- 确定需求,项目设计,编码
- 缺点: 无法解决设计阶段出现的问题
- V模型
- 比较重视测试: 编码-单元测试, 集成测试, 系统测试, 验收测试
- 缺点: 测试晚于编码, 无法解决设计阶段问题
- 喷泉模型
- 面向对象的开发模型,每个阶段没有界限
- 原型化模型
- 通过与用户的重复沟通,得到原型
- 分为: 探索型、实验型、演化型(最终的原型可用于后续开发)
- 螺旋模型
- 基于瀑布模型+原型化模型
- 适合开发高风险项目
- 统一过程(UP/RUP)
- 以用例驱动, 以架构为中心, 迭代和增量
- 步骤: 初始、细化、构建、交付
- 敏捷方法
- 4大价值观: 沟通、简单、反馈、勇气(接收变更)
- 基本原则
- 短平快的会议
- 小型版本发布
- 较少的文档
- 合作为重
- 客户直接参与
- 自动化测试
- 结对编程
- 测试驱动开发
- 持续集成
- 重构
- 开发方法
- XP(极限编程)
- Cockbum水晶系列方法
- 开放式源码
- SCRUM(并列争球法)
- Coad功用驱动开发
- ASD
- 瀑布模型
- 软件开发方法
- 结构化方法: 面向数据流的方法
- 原型法
- 面向对象方法
- 面向服务的方法
- 面向数据结构的方法: json
第六章:面向对象技术
- 考点(12分)
- UML图
- 设计模式
第七章:数据结构与算法基础
考点(10分)
二叉树
- 前序遍历: 根左右。对应前缀表达式
- 中序遍历: 左根右。对应中缀表达式
- 后续遍历: 左右根。对应后缀表达式
- 树转二叉树
- 孩子节点(第一个左节点) - 作为二叉树的左子树节点
- 兄弟节点(右边节点) - 作为(树的)左节点的(二叉树的)右子树节点
- 查找二叉树
- 左孩子小于根,右孩子大于根
- 满二叉树
- 约定编号从根结点起, 自上而下, 自左而右
- 无空节点,一定是完全二叉树
- 完全二叉树
- 约定编号同满二叉树
- 除去叶子节点,其他节点都包含两个子元素,如果最后一层的枝干节点正在填充叶子节点也算
- 最优二叉树(哈夫曼树)
- 节点数一定是奇数
- 只有度为0(无叶子节点)和2(有两个叶子节点)的节点,且度为0的节点比度为2的节点多1
- 平衡二叉树
- 整个树中任意节点的左子树和右子树的高度差的绝对值不大于1
- 堆
- 可以认为是完全二叉树
第八章:程序设计语言与语言处理程序基础
- 考点(3-5分)
第九章:多媒体基础知识
- 考点(3分)
- 计算图像大小
- 知道像数,位数: 每个使素为16位,图像为640x480像素,求容量:640x480x16/8=614,400B (1Byte=8位)
- 知道像数,色数: 640x480使素,256色的图像,求容量:640x480xlog(256)/8=307,200B
- 媒体的种类
- 感觉媒体: 如声音人体能感知的
- 表示媒体: 人为构造出来的媒体,编码如文本编码、图像编码
- 显示媒体(表现媒体): 如键盘等输入输出设备
- 交换/转换媒体
- 存储媒体
- 传输媒体
第十章:知识产权与标准化
- 考点(2分)
- 标准分类
- 国际标准:ISO、IEC等国际标准化组织
- 国家标准:GB一-中国、ANSI-美国、BS一英国、J1S—日本
- 区域标准:又称为地区标准,如PASC—太平洋地区标准会议、CEN-欧洲标准委员会、ASAC—亚洲标准咨询委员会、ARSO—非洲地区标准化组织
- 行业标准:GJB一中国军用标准、MTT-S— 美国军用标准、IEEE— 美国电气电子工程师协会
- 地方标准:国家的地方一级行政机构制订的标准
- 企业标准
- 项目规范
- 标准编号
- 国际、国外标准代号:标准代号+专业类号+顺序号+年代号
- 我国国家标准代号:强制性标准代号为GB、推荐性标准代号为GB/T、指导性标准代号为GB/Z、实物标准代号GSB
- 行业标准代号:由汉语拼音大写字母组成(特殊的如电子行业为SJ)
- 地方标准代号:由DB加上省级行政区代码的前两位
- 企业标准代号:由Q加上企业代号组成
第十一章:数据流图
- 考点(12-15分)
- 符号
- (外部)实体: 长方形, 为人或组织
- 箭头: 数据流
- 加工: 圆形或椭圆形
- 存文件: 长方形去掉一条或两条宽线
- 数据流图平衡原则
- 父图与子图之间的平衡
- 子图内平衡
- DFD图: 顶层图到0层图的转换时,外部实体保持不变,且实体的流入流出保持不变
- 常见错误: 加工无进(奇迹)、或无出(黑洞)
第十二章:数据库设计
- 考点(15分)
- 数据库设计过程
- 需求分析: 得出数据流图
- 概念结构设计: 得出E-R模型
- 逻辑结构设计: 得出关系模式
- 物理设计
第十三章:UML建模
- 考点(15分)
- 类关系符号
- 依赖: 虚线实三角
- 泛化: 实线虚三角
- 组合: 实线实菱形
- 聚合: 实线虚菱形
- 实现: 虚线虚三角
第十四章:数据结构与算法应用
- 考点(10分)
- 算法
- 分治法
- 回溯法: 有岔路口则一直往下走,走不通则回溯到上一个路口选择另外一条路往下走。如走迷宫
- 贪心法: 找到局部最优,不一定是整体最优。如装背包,找零钱
- 动态规划法: 先找到局部最优,最后找到整体最优
- 时间复制度
- 无循环: O(1)
- k个嵌套循环: O(n^k)
- 某个循环一个元素基于二叉树: O(log_2_n)
- 堆排序: 每次重建的复杂度为 log_2_n,如果n个元素复杂度就为 nlog_2_n
第十五章章:面向对象程序设计
- C++
- 派生类:
class CashNormal : public CashSuper {}
- 类外定义函数体:
double CashNormal :: acceptCash(double money) {}
- 虚函数:
virtual double acceptCash(double money) {}
- 纯虚函数:
virtual 函数类型 函数名(形惨列表) = 0
(主要是 = 0)- 如果类里面存在一个纯虚函数则此类为抽象类
- 对象指针与对象引用
- 对象指针:
类名 *对象指针名
- 对象引用:
类名 &对象引用名 = 被引用的对象
- 使用
->
访问对象成员
- 对象指针:
- 派生类:
软考高级
- 数据流图
- 外部实体(长方形)、数据流(箭头)、加工(原型/椭圆形)、存储(平行线/少一条边的长方形)
- 对比顶层图、0层图,使用数据平衡原则(箭头个数和方向是否匹配)
- UML图
- 用例图
- 参与者->用例(功能单元)
- 关系: 包含(include)、扩展(extend)、泛化
- 用例细化(用例规约包含项)
- 用例名称:登录
- 用例ID:IBM_ESHOP_002.1
- 角色:普通用户
- 用例说明:用例主要显示登录功能
- 前置条件:启动程序,进入登录页面
- 基本事件流:用户输入账号密码,点击确定;系统查询数据库进行匹配
- 其他事件流:无
- 异常事件流:用户输入错误密码,系统进行提示密码错误
- 后置条件:登录成功
- 类图
- 实现(虚线空心箭头)、依赖(虚线实行箭头,调用)、泛化(实线空性箭头,继承,箭头指向父类)、关联(聚合:实线空心菱形箭头、组合:实线实心菱形箭头)
- 顺序图
- 协作图(通信图)
- 强调对象之间存在消息收发关系
- 状态图
- 活动图
- 特殊的状态图,活动图的每个节点是一个动作和业务逻辑,而状态图里面的节点不是某个动作
- 定时图(UML2.0)
- 构件图
- 部署图
- 描述硬件节点与软件构件间的关系
- 用例图
- 软件架构风格:五大架构风格及其子风格
- 数据流风格:批处理、管道-过滤器
- 调用/返回风格:主程序/子程序、面向对象、层次结构
- 独立构件风格:进程通信、事件驱动系统(隐式调用)
- 虚拟机风格:解释器、规则系统;有自定义场景时使用
- 仓库风格:数据库系统、黑板系统(语言处理、信号处理)、超文本系统
- 层次型软件架构风格
- C/S和B/S
- 两层C/S:胖客户端(业务逻辑) + 服务器(数据库);升级维护困难
- 三层C/S:瘦客户端(进界面) + 应用服务器(业务逻辑) + 服务器(数据库)
- 三层B/S:零客户端(浏览器) + WEB应用服务器(业务逻辑) + 服务器(数据库)
- 常用层次型架构:表现层(MVC、MVP、MVVM)、中间层、访问层(ORM)、数据层
- MVC架构风格(也有说是设计模式的),J2EE体系结构中对应EJB(EntityBena/JavaBean)、JSP、Servlet
- RIA(中间层?):富客户端(临时下载客户端):Ajax、HTML5、小程序
- 物联网分层架构:应用层、网络层、感知层(传感器/芯片/通信模组)
- 大数据分层架构:数据应用层、数据接口层、数据层(数据仓库、分布式数据库、Hadoop平台)、数据采集层、数据源
- C/S和B/S
- 分布式软件架构风格
- 面向服务的软件架构风格
- SOA(面向服务的架构)
- 微服务架构风格
- 微服务架构模式方案:数据共享微服务、异步消息传递微服务、聚合器微服务、链式微服务
- 云原生架构风格
- 质量属性与架构评估
- Web架构综合考查