Bootstrap

软件设计师——100

软设知识点100条

1、码制的表示

定点整数

原码与反码的0既有+0也有-0,数码的表示个数为2n-1个。补码与移码由人为定义,-0编码定义为最小数值-1,数码的表示个数为2n个,最小表示数值为2^n-1。

定点小数

数码的表示个数与定点整数一致。补码与移码的人为定义,将-0的编码定义为最小数值-1。

2、浮点数的表示

浮点数格式

阶码决定范围,阶码越长,范围越大

尾数决定精度,尾数越长,精度越高

浮点数运算过程

对阶==》尾数计算==》格式化

对阶:小数向大数看齐,尾数右移

3、校验码

校验方式校验码位数校验码位置检错纠错校验方式
奇偶校验1一般拼接在头部可检查奇数位错不可纠错奇校验:最终1的个数是奇数个;
偶校验:最终1的个数是偶数个;
CRC循环冗余校验生成多项最高次幂决定拼接在信息位尾部可检错不可纠错模二除法求余数,拼接作为校验位
海明校验2^r ≥ m+r+1插入在信息位中间可检错可纠错分组奇偶校验

CPU(中央处理器)组成

cpu分为运算器与控制器两大部分

运算器

  1. 算术逻辑单元ALU:执行算术运算与逻辑运算
  2. 累加寄存器AC暂存数据,为ALU提供工作区
  3. 数据缓冲寄存器DR
  4. 状态条件寄存器PSW

控制器

  1. 指令计数器PC:存储线下一条要执行指令的地址
  2. 指令寄存器IR:存储即将要执行指令
  3. 指令译码器ID
  4. 时序部件

5、CISC与RISC

CISC(复杂指令集)的特点:指令数量多,指令频率差别大,变长,多种寻址方式,使用微码(微程序)实现。

RISC(精简指令集)的特点:指令数量少,频率接近,定长,单周期,多寄存器寻址,多通用寄存器,硬布线逻辑控制,适用于流水线。有效支持高级程序语言,优化编译

6、流水线技术

  1. 流水线建立时间:第1条指令执行时间
  2. 流水线周期:指令分段后,最长段时间
  3. 流水线执行时间(默认使用理论公式,无答案时考虑实践公式)
  4. 理论公式:流水线建立时间 + (指令条数 - 1) * 流水线周期
  5. 实践公式:指令段数 * 流水线周期 + (指令条数 - 1) * 流水线周期
  6. 吞吐率 = 指令条数/流水线执行时间
  7. 最大吞吐率 = 流水线周期的倒数

7、局部性原理

  1. 时间局部性:指程序中的某条指令一旦执行,不久以后该指令可能再次执行,典型原因时由于程序中存在着大量的循环操作。
  2. 空间局部性:指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。

8、常见存储器

  1. 按内容存取
  • 相联存储器(如Cache)
  1. 按地址存取
  • 随机存取存储器(如内存)

  • 顺序存取存储器(如磁带)

  • 直接存取存储器(如磁盘)

  1. 工作方式
  • 随机存取存储器 RAM (如内存DRAM)
  • 只读存储器 ROM (如BIOS)

9、Cache(高速缓存)

在计算机的存储系统体系中,Cache是(除寄存器以外)访问速度最快的层次。

解决CPU与主存之间速度容量不匹配问题。

Cache与主存映射三种方式:

冲突率电路复杂度
直接相连映像简单
全相联映像复杂
组相联映像折中折中

10、主存编制计算

内存单元数个数 = 最大地址 + 1 - 最小地址

内存编址内容:

  • 按字编址:每个存储单元存放内容为机器字长——由题干定义
  • 按字节编制:每个存储单元内容为1字节(8bit)

内存总容量 = 内存单元数 * 编制内容

总容量 = 单位芯片容量 * 总片数

总片数 = 总容量/单位容量

单位芯片容量 = 总容量 / 芯片片数

11、输入输出技术

  • 程序控制(查询)方式:分为无条件传送和程序查询方式。方法简单,硬件开销小,但是I/O能力不高,严重影响CPU的利用率。
  • 程序中断方式:与程序控制方式相比,中断方式因为CPU无需等待而提高了传输请求的响应速度。
  • DMA方式:DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效。

12、中断

中断处理(CPU无需等待也不必查询I/O状态):

  • 当I/O系统准备好以后,发出中断请求信号通知CPU
  • CPU接到中断请求后,保存正在执行程序的现场(保存现场),打断的程序当前位置即为断点(通过中断向量表 - 保存中断服务程序的入口地址)
  • 转入I/O中的服务程序的执行,完成I/O系统的数据交换
  • 返回被打断的程序继续执行(恢复现场)

13 、可靠性

串联系统计算:R总 = R1 * R2 * R3 * … * Rn;

并联系统计算:R总 = 1-(1-R1)(1-R2)…(1-Rn);

N模混联系统:先将整个系统划分为多个部分串联R1、R2…等,再计算R1、R2内部的并联可靠性,带入原公式。

可靠性表示:MTTF/(1+MTTF)

14、操作系统位置和功能

LZkepj.png

  • 管理系统的硬件、软件、数据资源
  • 控制程序运行
  • 人机之间的接口
  • 应用软件硬件之间的接口

15、嵌入式操作系统

特点:微型化、可定制(针对硬件变化配置)、实时性、可靠性、易移植性(硬件抽象层HAL板级支撑包BSP支持)

  • 初始化过程:片级初始化 ==》 板级初始化 ==》 系统初始化

16、线程

  • 同一个进程当中的各个线程,可以共享该进程的各种资源,如内存地址空间、代码、数据、文件等,线程之间的通信与交流非常方便
  • 对于同一个进程当中的各个线程来说,他们可以共享该进程的大部分资源。
  • 每个线程都有自己独立CPU运行上下文,这是不能共享
  • 程序计数器、寄存器和栈不能共享

17、PV操作

P操作:S = S - 1(申请并锁定资源);S < 0(检查资源是否足够)

V操作:S = S +1(释放资源);S ≤ 0(检查是否有进程排队并通知排队进程)

S信号量:表示资源数,初值即为初始状态无操作时,资源的数量;信号量小于0时的时候,还可以表示排队的进程数量

18、前趋图与PV操作分析题技巧

针对箭线标注信号量

箭线的起点位置是V操作(即前趋活动完成后以V操作通知后继活动)

箭线的终点位置是P操作(即后继活动开始前以P操作检查前趋活动是否完成)

19、死锁

死锁四大条件:

  1. 互斥:即一个资源每次只能被一个进程使用
  2. 保持和等待:有一个进程已获得了一些资源,但因请求其他资源被阻塞时,对以获得的资源保持不放
  3. 不剥夺:系统不能强行收回,只能由进程使用完自己释放
  4. 环路等待:若干个进程形成环形链,每个都占用对方要申请的下一个资源

假设m个进程各自需要w个R资源,系统中共有n个R资源,此时不可能形成死锁的条件是:m * (w - 1)+1 <= n

解决死锁的策略

  • 死锁预防
  • 死锁避免:银行家算法
  • 死锁检测
  • 死锁解除

20、页式存储的淘汰原则

页面淘汰时,主要依据原则(考试中默认按照此原则进行淘汰):

先淘汰最近未被访问的(访问位为0),其次多个页面访问位为0时,则淘汰未被修改的(即修改位为0,因为修改后的页面淘汰时代价更大)

访问0 ——> 修改0

21、树形目录结构(多级目录结构)

绝对路径从根目录开始写起,并且该文件的全名即为绝对路径 + 文件名

相对路径从当前位置下一级目录开始写起。

22、I/O管理软件

LZegmR.png

  • 硬件:完成具体的I/O操作
  • 中断处理程序:I/O完成后唤醒设备驱动程序
  • 设备驱动程序:设置寄存器,检查设备状态
  • 设备无关I/O层:设备名解析、阻塞进程、分配缓冲区
  • 用户级I/O层:发出I/O调用

23、分布式透明性

  • 分片透明:用户不必关心数据是如何分片的,即如何分片对用户是透明的
  • 复制透明:用户不用关心数据库在网络中各个结点的复制情况,被复制的数据的更新由系统自动完成
  • 位置透明:用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的
  • 局部映像透明性(逻辑透明):用户不必知道局部数据库模式

24、数据库三级模式、两级映像

三级模式:

  • 外模式 <===> 视 图

  • 模 式 <===> 基本表

  • 内模式 <===> 文 件

两级映像(外模逻辑,模内物理):

  • 外模式 <===> 模 式映射,保证数据逻辑独立性,即数据的逻辑结构发生变化后,用户程序也可以不修改。只需要修改外模式和概念模式之间的映像
  • 模 式 <===> 内模式映射,保证数据物理独立性,即当数据的物理结构发生改变时,应用程序不用改变。只需要修改概念模式和内模式之间的映像

25、数据库设计过程

1、需求分析阶段产物:数据流图、数据字典、需求说明书

2、概念设计阶段产物:E-R模型

3、逻辑设计(详细设计)阶段产物:关系模式

4、物理设计阶段

5、数据库实施阶段

6、数据库运行和维护阶段

设计依据:需求分析、E-R模、转换原则、规范化理论

26、关系模式基本概念

属性

简单属性和复合属性

  • 简单属性:原子的、不可再分的
  • 复合属性:可以细分为更小的部分(即划分为别的属性)

单值属性和多值属性

  • 单值属性:定义的属性对于一个特定的实体都有单独的一个值
  • 多值属性:在某些特定情况下,一个属性可能对应一组值

NULL属性:表示无意义或不知道

派生属性:可以从其他属性得来

目或度

关系模式中属性的个数

候选码

又称为候选键,唯一标示元组的属性集合,可以有多个

主码

又称为主键,从候选键中选择一个

主属性与非主属性

组成候选码的属性就是主属性,其他的就是非主属性

外码(外键)

其他关系模式的主键

全码(ALL-Key)

关系模式的所有属性组是这个关系的候选码

27、候选键

选择入度为0(无函数依赖可推导得出的属性入度为0)的属性集合,从该集合尝试推导出全部属性(可通过传递函数依赖等进行传递推导),如果可以,该集合为候选键,否则,该集合依次添加既有入度也有出度(既可被推导得出也可推导出其他属性)的中间结点,直到推导出所有属性为止,最终集合即为候选键。

顺藤摸瓜…

28、E-R图转关系模式转换原则

实体必须单独转换为1个关系模式

联系根据类型不同:

  • 1对1联系可以转换为独立的关系模式,也可以归并到任意一端实体中
  • 1对多联系可以转换为独立的关系模式,也可以归并到多端实体中
  • 多对多联系只能转换为独立的关系模式,不能归并

29、关系代数

笛卡尔积x:结果的属性列数是二者之和,结果的元组行数是二者乘积

投影Π🥧:对垂直方向的属性列进行筛选 select

选择:对水平方向的元组行进行筛选 where

自然连接:结果的属性列数是二者之和减去重复列数,结果元组是同名属性列取值相等的元组

30、Amstrong公理体系

A1.自反律(Reflexivity):若Y⊆X⊆U,则X→Y为F所蕴含

A2.增广律(Augmentation):若X→Y为F所蕴含,且Z⊆U,则XZ→YZ为F所蕴含

A3.传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F 所蕴含

合并规则:由X→Y,X→Z,由 X→YZ(A2,A3)

伪传递规则:由X→Y,WY→Z,有XW→Z(A2,A3)

分解规则:由X→Y及Z⊆Y,有X→Z(A1,A3)

31、规范化

1NF:属性值都是不可分的原子值。(基本二维表)

2NF:在1NF基础上,消除了非主属性对候选键的部分函数依赖。(候选键是单属性至少满足2NF)

3NF:在2NF基础上,消除了非主属性对候选键的传递函数依赖。(没有非主属性至少满足3NF)

BCNF:在3NF基础上,消除了主属性对候选键的部分函数依赖和传递函数依赖

32、sql查询

SELECT [ ALL | DISTINCT ] < 目标表达式 > [, < 目标表达式 > ] …

​ FROM < 表名 > [, <表名> ] …

[WHERE <条件表达式> ]

[GROUP BY <列名 1> [ HAVING <条件表达式> ] ]

[ORDER BY <列名2> [ ASC | DESC ] … ]

处理类型处理子类示例 / 语法
结果排序升序或降序ORDER BY 字段名 DESC | ASC
统计COUNT( [ ALL | DISTINCT ] <列名> )
计算一列值的总和SUM( [ ALL |DISTINCT ] <列名> )
计算一列值的平均值AVG( [ALL | DISTINCT] <列名> )
求一列值中的最大值MAX([DISTINCT | ALL] <列名> )
求一列值中的最小值MIN([DISTINCT | ALL] <列名> )
对结果分组将查询结果按列值分组GROUP BY <列名>
对分组结果筛选对分组结果筛选HAVING <条件表达式>

33、事务特性(ACID)

  • 原子性A:事务是原子的,要么都做,要么都不做
  • 一致性C:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态
  • 隔离性I:事务相互隔离,当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的
  • 持续性D:一旦事务提交成功,即使数据库崩溃,其对数据库的更新操作也将永久有效

34、封锁协议

  • 共享锁(S锁🔒S、读锁):若事务T对数据对象A添加了S锁,则只允许T读取A,但不能修改A。并且其他事务只能对A加S锁,不能加X锁
  • 排他锁(X锁、写锁、独占锁):若事务T对数据对象A添加了X锁,则只允许T读取和修改A,其他事务不能再对A加任何锁

35、OSI七层模型

层次名称主要功能主要设备及协议
7应用层实现具体的应用功能POP3、FTP、HTTP
6表示层数据的格式与表达、加密、压缩Telnet、SMTP、DHCP
5会话层建立、管理和终止会话TFTP、SNMP、DNS
4传输层提供端到端的连接TCP、UDP
3网络层分组传输和路由选择三层交换机、路由器
ARP、RARP、IP
ICMP、IGMP
2数据链路层传送以帧为单位的信息网桥、交换机(多端口网桥)、网卡
PPTP、L2TP、SLIP、PPP
1物理层二进制传输中继器、集线器(多端口中继器)

pptp与l2tp的区别

主要区别在于:用途不同、使用要求不同。

一、使用要求不同

1、PPTP的使用要求:互联网络必须为IP网络。

2、L2TP的使用要求:L2TP只要求隧道媒介提供面向数据包的点对点的连接。L2TP可以在IP(使用UDP),帧中继永久虚拟电路(PVCs)、X.25虚拟电路(VCs)或ATM网络上使用。

二、用途不同

1、PPTP的用途:通过PPTP,远程用户能够通过 Microsoft Windows NT工作站、Windows xp 、 Windows 2000 和windows2003。

2、L2TP的用途:L2TP用来整合多协议拨号服务至现有的因特网服务提供商点。PPP 定义了多协议跨越第二层点对点链接的一个封装机制。

SLIP和PPP的区别

都是用于提供两台主机之间的点对点串行通信,它们之间有什么区别?

  1. 什么是SLIP协议?
  • SLIP代表串行线网际协议,是一种TCP / IP协议、一种简单的互联网链接协议。它允许用户使用计算机来获得上网的调制解调器。

  • SLIP连接有助于PC与本地Internet协议进行通信,并将其转换为Internet主机。它消除了将PC用户连接到互联网连接的中央计算机的需要。因此,SLIP直接向个人计算机提供互联网服务。

  1. 什么是PPP协议?
  • PPP代表点对点协议,是指一系列计算机网络协议,它们提供通过点对点链路传输多协议数据的标准方法。
  • PPP已经成为互联网标准,有助于通过点对点串行链路封装和传输数据报。数据报非常类似于分组交换网络环境中的数据包,但它不依赖于物理网络,也不包含分组交换节点号和PSN目的端口。
  1. SLIP和PPP之间的主要区别
  • SLIP代表到串行线路互联网协议;而,PPP代表点对点协议。

  • SLIP是一种过时的协议,尽管它仍然在某些地方使用;而,PPP是用于与SLIP相同目的的新协议,它已经成为互联网标准,提供了一些新功能。

  • IP协议是SLIP支持的唯一协议。而,PPP支持多种协议。

  • PPP提供身份验证,错误检测,纠错,压缩和加密;而SLIP没有这些功能。

  • 在SLIP中,IP地址是静态分配的。而,PPP执行动态分配。

  • 可以在SLIP中以同步模式传输数据。而,PPP促进了数据传输的同步和异步模式。

PPP比SLIP好在哪里?

1、网络协议的多路复用

  • PPP可以适应其他几种网络技术,而不仅仅是限制互联网和TCP / IP。

2、链路配置

  • 它使用协商机制在两个PPP对等体之间建立通信参数。

3、错误检测

  • 在接收端,它丢弃损坏的数据包。

4、增值通信特性

  • 它还支持数据压缩和加密。

5、建立网络地址

  • 设置数据报路由所需的网络地址。

6、身份验证

  • 在启动通信之前,首先对两个最终用户进行身份验证。

36、TCP/IP协议簇四层模型

LZJLHU.png

37、常见协议功能

POP3:邮件收取

SMTP:邮件发送

FTP:20 数据端口、21控制端口,文件传输协议

HTTP:超文本传输协议,网页传输

DHCP:IP地址自动分配

SNMP:简单网络管理协议

DNS:域名解析协议,记录域名与IP地址的映射关系

TCP:可靠的传输层协议

UDP:不可靠的传输层协议

ICMP:因特网控制协议,PING命令来自该协议

IGMP:组播协议

ARP:地址解析协议,IP地址转换为MAC地址

RARP:反向地址解析协议,MAC地址转换为IP地址

38、常见网络诊断命令

  • ping:用于检查网络是否连通
  • tracert(linux:traceroute):用于确定IP数据包访问目标所采取的路径,若网络不通,能定位到具体哪个结点不通
  • ipconfig(linux:ifconfig):显示TCP/IP网络配置值,如:IP地址,MAC地址,网关地址等
  • nslookup:查询DNS记录
  • Netstat:用于显示网络连接、路由表和网络接口信息

39、特殊的IP地址

IP说明
127网段回播地址,本地环回地址
主机号非全0或非全1可作为子网中的主机号使用
主机号全0地址代表这个网络本身,可作为子网地址使用
主机号全1地址特定子网的广播地址
169.254.0.0保留地址,用于DHCP失效(win)
0.0.0.0保留地址,用于DHCP失效(Linux)

40、层次化网络

  • 核心层:主要是高速数据交换,实现高速数据传输、出口路由,常用冗余机制
  • 接入层:主要是针对用户端,实现用户接入、计费管理、MAC地址认证、MAC地址过滤、收集用户信息、可以使用集线器代替交换机
  • 汇聚层:网络访问策略控制、数据包处理和过滤、策略路由、广播域定义、寻址

41、URL

URL(统一资源定位器):协议名://主机名.组名.最高层域名

组织模式含义地理模式含义
com商业组织cn中国
edu教育机构hk中国香港
gov政府机构mo中国澳门
mil军事部门tw中国台湾
net主要网络支持中心us美国
org上述以外组织uk英国
int国际组织jp日本

42、加密算法

常见对称密钥加密算法(共享密钥加密技术):DES、3DES(三重DES)、RC-5、IDEA、AES算法

常见非对称密钥加密算法(公开密钥加密技术):RSA、ECC

常见的摘要算法:MD5(128位)、SHA(160位)

43加密技术应用

  • 数字信封:用接收方公钥加密使用的对称密钥
  • 数字签名:用发送方私钥签名,保证发送方身份真实性,发送者不可抵赖。与信息摘要结合,可防篡改
  • 信息摘要:单向散列值函数,防篡改,保证信息完整性

数字证书:

  • 数字证书的内容:CA签名、用户信息(用户名称)、用户公钥
  • 证书中的CA签名验证数字证书的可靠性、验证网站真伪
  • 用户公钥:客户端利用证书中的公钥加密,服务器利用自己的私钥解密

44、网络安全协议分层

LZv09x.png

HTTPS:是HTTP协议和SSL(安全套接层协议)的结合,默认端口443

PGP:邮件安全协议

SET:电子商务安全协议,涉及电子交易安全

SSH:为建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议

45、网络攻击

攻击类型攻击名称描述
被动攻击窃听(网络监听)用各种可能的合法或非法的手段窃取系统中的信息资源和敏感信息
业务流分析通过对系统进行长期监听,利用统计分析方法对参数进行研究,从而发现有价值的信息和规律
主动攻击重放攻击所截获的某次合法的通信数据拷贝,出于非法的目的而被重新发送
🚫拒绝服务(DOS)对信息或其他资源的合法访问被无条件地阻止

46、网络防御

  • 防火墙技术:防外不防内,对于DMZ非军事区主要放置应用服务器(如邮件服务器、WEB服务器)
  • 漏洞扫描:入侵者可以利用系统漏洞侵入系统,系统管理员可以通过漏洞扫描技术,及时了解系统存在的安全问题,并采取相应措施来提高系统的安全性
  • 入侵检测IDS:根据攻击者行为和模式库记录的应为进行模式匹配,对攻击行为报警

47、病毒

病毒的特性:计算机病毒的特性包括隐蔽性、传染性、潜伏性、触发性和破坏性

文件型计算机病毒感染可执行文件(包括EXE和COM文件)

引导型计算机病毒影响软盘或硬盘的引导扇区

目录型计算机病毒能够修改硬盘上存储的所有文件的地址

宏病毒感染的对象是使用某些程序创建的文本文档、数据库、电子表格等文件

48、常见的软件开发模型

瀑布模型

  • 容易理解,管理成本低,每个阶段都有对应的成果产物,各个阶段有明显的界限划分和顺序要求,一旦发生错误,整个项目推到重新开始
  • 适用于需求明确的项目,一般表述为需求明确、或二次开发,或者对于数据处理类型的项目

V模型

  • 强调测试贯穿项目始终,而不是集中在测试阶段。是一种测试的开发模型

喷泉模型

  • 以用户需求为动力,以对象为驱动,适合于面向对象的开发方法
  • 特点:迭代、无间隙

原型模型

  • 典型的原型开发方法模型。
  • 适用于需求不明确的场景,可以帮助用户明确需求

增量模型

  • 可以有多个可用版本的发布,核心功能往往最先完成,在此基础上,每轮迭代会有新的增量发布,核心功能可以得到充分测试。
  • 强调每一个增量均发布一个可操作的产品

49、螺旋模型与RUP

螺旋模型

  • 典型特点:引入了风险分析
  • 结合了瀑布模型和演化模型的优点,最主要的特点在于加入了风险分析
  • 它是由制定计划、风险分析、实施工程、客户评估这一循环组成的
  • 它最初从概念项目开始第一个螺旋

统一过程RUP

  • 典型特点:用例驱动、以架构为中心、迭代和增量
  • 构思阶段:强调定义和细化用例,并将其作为主要模型
  • 细化阶段:重点是创建分析和设计模型,强调类的定义和体系结构的表示。确定系统架构
  • 构建阶段:将设计转化为实现,并进行集成和测试
  • 移交阶段:将产品发布给用户进行测试评价,交付或再次进行迭代修改产品使之完善

50、敏捷方法

敏捷开发是一种以核心、迭代、循环渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想

水晶法强调经常交付,认为每一种不同的项目都需要一套不同的策略、约定和方法论

并列争球法的核心是迭代、增量交付,按照30天进行迭代开发交付可实际运行的软件

自适应软件开发的核心是三个非线性的,重叠的开发阶段:猜测、合作、学习

51、极限编程

极限编程是一种轻量级的开发方法

它提出了四大价值观:沟通、简单、反馈、勇气

五大原则:快速反馈、简单性假设、逐步修改、提倡更改、优质工作

十二个最佳实践:计划游戏、隐喻、小型发布、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户和编码标准

52、开发方法

1、结构化开发方法:

  • 用户至上,严格区分工作阶段每阶段有任务和结果
  • 强调系统开发过程的整体性和全局性,系统开发过程工程化文档资料标准化
  • 自顶向下,逐步求精。

2、原型化开发方法:

  • 适用于需求不明确的情况

3、面向对象开发方法:

  • 更好的复用性
  • 关键在于建立一个全面、合理、统一的模型
  • 分析、设计、实现三个阶段界限不明确

53、内聚性

内聚类型描述
功能内聚完成一个单一功能,各个部分协同工作,缺一不可
顺序内聚处理元素相关,而且必须顺序执行
通信内聚所有处理元素集中在一个数据结构的区域上
过程内聚处理元素相关,而且必须按特定的次序执行
瞬时内聚(时间内聚)所包含的任务必须在同一时间间隔内执行
逻辑内聚完成逻辑上相关的一组任务
偶然内聚(巧合内聚)完成一组没有关系或松散关系的任务

54、耦合性

耦合类型描述
非直接耦合两个模块之间没有直接关系,他们之间的联系完全是通过主模块的控制和调用来实现的
数据耦合一组模块借助参数表传递简单数据
标记耦合一组模块通过参数表传递记录信息(数据结构)
控制耦合模块之间传递的信息中包含用于控制模块内部逻辑的信息
外部耦合一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息
公共耦合多个模块都访问同一个公共数据环境
内容耦合一个模块直接访问另一个模块的内部数据;
一个模块不通过正常入口转到另一个模块的内部;
两个模块有一部分程序代码重叠;
一个模块有多个入口

55、测试分类

静态测试

  • 桌前检查
  • 代码走查
  • 代码审查

动态测试

  • 黑盒测试
    • 等价类划分(确定无效和有效等价类,设计用例尽可能多的覆盖有效类,设计用例只覆盖一个无效类)
    • 边界值分析(处理边界情况时最容易出错,选取的测试数据应该恰好等于、稍小于或稍大于边界值)
    • 错误推测
    • 因果图
  • 白盒测试
    • 语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、路径覆盖

56、白盒测试

定义特点
语句覆盖被测试程序中的每条语句至少执行一次对执行逻辑覆盖很低,一般认为是很弱的逻辑覆盖
判定覆盖(分支覆盖)被测程序每一个判定表达式至少获得一次 “真” 值和 “假” 值(或者程序中每一个判定取“真”分支和取“假”分支至少通过一次)判定覆盖比语句覆盖更强一些。
判定可以是1个条件,也可以是多个条件的组合
条件覆盖每一个判定语句中每个逻辑条件的各种可能的值至少满足一次条件覆盖和判断覆盖没有包含关系
判断/条件覆盖判定中每个条件的所有可能取值(真/假)至少出现一次,并使每个判定本身的判定结果(真/假)也至少出现一次同时满足判定覆盖和条件覆盖
条件组合覆盖每个判定中的各种可能值的组合都至少出现一次同时满足判定覆盖、条件覆盖、判定/条件覆盖
路径覆盖覆盖被测程序中所有可能的路径
基本路径测试每一条独立路径都执行过(即程序中可执行语句至少执行一次)测试用例个数与环路复杂度一致。
判定为关键控制节点,必须出现在基本路径中
循环覆盖循环中每个条件都得到验证注意数组参数可循环验证

57、特殊的测试阶段及任务

  • 验收测试:有效性测试、软件配置审查、验收测试
  • 系统测试:恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安装测试
  • 集成测试:模块间的接口和通信
  • 单元测试:模块接口、局部数据结构、边界条件、独立的路径、错误处理
  • 回归测试:修改软件后进行的测试,防止引入新的错误
  • 负载测试:对软件负载能力的测试
  • 压力测试:对软件超负荷条件下运行情况的测试

58、McCabe复杂度计算

McCabe复杂度计算公式:V(G) = m - n + 2

其中m是有向弧的条数,n是结点数。

对于伪代码可以先转换为程序流程图,对程序流程图可以最终转换为节点图处理

转换时注意将交点的地方标注为新的结点,以最终的结点图带入公式结算其McCabe复杂度

59、维护

  • 更正性维护:针对真实存在并已经发生的错误进行的维护行为
  • 预防性维护:针对真实存在但还未发生的错误进行的维护
  • 适应性维护:
    • 指使应用软件适应信息技术变化和管理需求变化而进行的修改。
    • 企业的外部市场环境和管理需求的不断变化也使得各级管理人员不断提出新的信息需求
  • 完整性维护:
    • 扩充功能和改善性能而进行的修改。
    • 对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征

60、质量属性与其依次属性

  • 功能性:适合性、准确性、互操作性、安全保密性
  • 可靠性:成熟性、容错性、易恢复性
  • 易用性:易理解、易学性、易操作性、吸引性
  • 效率:时间特性、资源利用性
  • 维护性:易分析性、稳定性、易测试性、易改变性
  • 可移植性:适应性、易安装性、共存性、易替换性

61、CMMI(能力成熟度模型集成)—— 阶段式

  • 初始的:过程不可预测且缺乏控制
  • 已管理的:过程为项目服务
  • 已定义的:过程为组织服务
  • 定量管理的:过程已度量和控制
  • 优化的:集中于过程改进

62、CMMI(能力成熟度模型集成)—— 连续式

  • CL0(未完成的):过程域未执行或未得到CL1中定义的所有目标
  • CL1(已执行的):其共性目标式过程将可标识的输入工作产品转换成可标识的输出工作产品,以实现支持过程域的特定目标
  • CL2(已管理的):其共性目标是集中于已管理的过程的制度化
  • CL3(已定义级的):其共性目标集中于已定义的过程的制度化
  • CL4(定量管理的):其共性目标集中于可定量管理的过程的制度化
  • CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的改变和持续改进计划中的过程域的功效

63、Gantt图与PERT图

甘特图能够清晰描述每个任务的开始/结束时间及各个任务之间的并行性,也可以动态地反映项目的开发进展情况,但难以反映多个任务之间存在的逻辑关系

PERT利用项目的网络图和各活动所需时间的估计值(通过加权平均得到)去计算项目总时间,强调任务之间的先后关系,但不能反映任务之间的并行性,以及项目的当前进展情况

64、PERT图

  • 关键路径:是图中源点到汇点的最长路径,关键路径的时间称之为项目工期,也表述为项目完成所需的最少时间
  • 总时差:在不延误总工期的前提下,该活动的机动时间
  • 一般在图中,以最晚结束时间减去最早结束时间求取,或者以最晚开始时间减去最早开始时间求取

65、风险管理

风险的特性:具有不确定性,可能会造成损失

风险的类别:

  • 项目风险:涉及到各种形式的预算、进度、人员、资源以及客户相关的问题,并且可能导致项目损失
  • 技术风险:涉及到技术相关的可能会导致项目损失的问题
  • 社会风险:涉及到政策、法规

风险曝光度(RiskExposure) = 错误出现率(风险出现率)X 错误造成损失(风险损失)

66、沟通路径

有主程序员:n各成员小组,一个主程序员,普通程序员只需要与主程序员沟通。沟通路径:n-1

无主程序员:n个成员的项目小组,相互之间都可以沟通。沟通路径:n(n - 1)/2

67、数据流图

数据流常见的3中错误

  • 黑洞:加工只有输入没有输出
  • 奇迹:加工只有输出没有输入
  • 灰洞:加工中输入不足以产生输出

子图与父图保持平衡

  • 父图与子图之间平衡是指任何一张DFD子图边界上的输入/输出数据流必须与其父图对应加工的输入/输出数据保持一致
  • 如果父图中某个加工的一条数据流对应于子图中的几条数据流,而子图中组成这些数据流的数据项全体正好等于父图中的这条数据流,那么他们仍然是平衡的

68、面向对象基本概念

面向对象:对象 + 分类 + 继承 + 通过消息的通信

对象:属性(数据) + 方法(操作) + 对象ID

封装:隐藏对象的属性和实现细节,仅对外公开接口(信息隐藏技术)

类(实体类、控制类、边界类):对象的抽象

接口:一种特殊的类,它只有方法定义没有具体的实现

继承与泛化:复用机制

消息和消息通信:对象之间进行通信的一种构造叫做消息。消息是异步通信的

重置/覆盖/重写(override):在子类中重新定义父类中已经定义的方法

重载:一个类可以有多个同名而参数类型不同的方法

动态绑定:根据接收对象的具体情况将请求的操作与实现的方法进行连接(运行时绑定)

多态:不同对象收到同样的消息产生不同的结果。

69、面向对象设计原则

单一职责原则:设计目的单一的类

开放-封闭原则:对扩展开发,对修改封闭

李氏(Liskov)替换原则:子类可以替换父类

依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程

接口隔离原则:使用多个专门的接口比使用单一的总接口要好

组合重用原则:要尽量使用组合,而不是继承关系达到重用目的

迪米特(Demeter)原则(最少知识法则):一个对象应当对其他对象有尽可能少的了解

70、UML图分类

  • 用例图(⭐⭐⭐)
  • 类图与对象图(⭐⭐⭐)
  • 顺序图
  • 活动图
  • 状态图
  • 通信图
  • 构件图
用例图

LeWIED.png

类图与对象图

如图:书籍列表,书籍,借阅记录,借阅记录列表对应的就是类名或对象名。
新增,修改,查询…是方法名。
书名,类别,作者…是属性名。

Lefp5Q.png

多重度
1:表示一个集合中的一个对象对应另一个集合中1个对象。
0…:表示一个集合中的一个对象对应另一个集合中的0个或多个对象。(可以不对应)
1…
:表示一个集合中的一个对象对应另一个集合中的一个或多个对象。(至少对应一个)
*:表示一个集合中的一个对象对应另一个集合中的多个对象。

关系包含以下几类:
LefErV.png

顺序图

LeftaD.png

顺序图最大的特点:清楚表现出 处理事务时,时间顺序的情况。

活动图

LehawT.png

LehHXt.png

状态图

描述的是状态的变迁(状态触发的条件)

Le4XK1.png

通信图

通信图又被称为协作图,顺序图的另一种表达方式。(和顺序图统称为交互图)

Le5sqx.png

71、类图关系

依赖关系:一个事物发生变化影响另一个事物

泛化关系:特殊/一般关系

关联关系:描述了一组链,链是对象之间的连接

聚合关系:整体与部分生命周期不同(有你有我,没你也有我)

组合关系:整体与部分生命周期相同(有你有我,没你无我)

实现关系:接口与类之间的关系

72、用例关系

LeIR00.png

73、设计模式分类

LeIop4.png

74、创建型设计模式应用场景

设计模式名称简要说明速记关键字
Factory Method
工厂方法模式
定义一个创建对象的接口,但由子类决定需要实例化哪一个类
工厂方法使得子类实例化的过程推迟
动态生产对象
Abstract Factory
抽象工厂模式
提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定他们具体的类生产成系列对象
Builder
构建器模式
将一个复杂类的表示与其构造相分离,使得相同的构建过程能够得出不同的表示复杂对象构造
Prototype
原型模式
用原型示例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象克隆对象
Singleton
单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点单实例

75、结构型设计模式应用场景

设计模式名称简要说明速记关键字
Adapter
适配器模式
将一个类的接口转换成用户希望得到的另一种接口。
它使原本不相容的接口得以协同工作
转换接口
Bridge
桥接模式
将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化继承树拆分
Composite
组合模式
将对象组合成树型结构表示“整体—部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性树形目录结构
Decorator
装饰模式
动态地给一个对象添加一些额外的职责。
它提供了用子类扩展功能的一个灵活的替代,比派生一个子类更加灵活
动态附加职责
Facade
外观模式
定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该系统的使用对外统一接口
Flyweight
享元模式
提供支持大量细粒度对象共享的有效方法汉字编码
Proxy
代理模式
为其他对象提供一种代理以控制这个对象的访问快捷方式

76、行为型设计模式应用场景

设计模式名称简要说明速记关键字
Chain of Responsibility
职责链模式
通过多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。
将接收对象链接起来,在链中转递请求,直到有一个对象处理这个请求
传递职责
Command
命令模式
将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作日志记录
可撤销
Interpreter
解释器模式
给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子虚拟机的机制
Iterator
迭代器模式
提供一种方法来顺序访问一个聚合对象中个各个元素,而不需要暴露该对象的内部表示数据集
Mediator
中介者模式
用一个中介对象来封装一系列的对象交互。
它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立地改变对象间的交互
不直接引用
Memento
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态游戏存档
Observer
观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新联动
State
状态模式
允许一个对象在其内部状态改变时改变它的行为状态变成类
Strategy
策略模式
定义一系列算法,把它们一个个封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化多方案切换
Template Method
模板方法模式
定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤框架
Visitor
访问者模式
表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的类的前提下定义作用域这些元素的新操作数据与操作分离开

77、顺序表和链表对比

性能类别具体项目顺序存储链式存储
空间性能存储密度= 1
更优
<1
容量分配事先确定
否则造成空间浪费
动态改变
更优
时间性能查找运算O(n/2)O(n/2)
读运算O(1)
更优
O([n+1]/2)
最好情况为1
最坏情况为n
插入运算O(n/2)
最好情况为0
最坏情况为n
O(1)
更优
删除运算O([n-1]/2)O(1)
更优

78、树的基本概念

双亲、孩子和兄弟:

  • 结点的子树的根称为该结点的孩子
  • 相应地,该结点称为其子结点的双亲
  • 具有相同双亲的结点互为兄弟

结点的度:

  • 一个结点的子树的个数记为该结点的度

叶子结点:

  • 也称为终端结点,指度为0的结点

内部结点:

  • 度不为0的结点,也称为分支结点或非终端结点
  • 除根节点之外,分支结点也称为内部结点

结点的层次:

  • 根为第一层
  • 根的孩子为第二层
  • 以此类推,若某结点在第i层,则其孩子结点在第i+1层

树的高度:

  • 一棵树的最大层次即为树的高度(深度)

79、二叉树的特性

  • **性质1:**二叉树的第i层上至多有2^(i-1)(i≥1)个节点

  • **性质2:**深度为h的二叉树中至多含有2^h-1个节点

  • **性质3:**若在任意一棵二叉树中,有n0个叶子节点,有n2个度为2的节点,则必有n0=n2+1

  • **性质4:**具有n个节点的满二叉树深为log2n+1。(log向下取整)

  • **性质5:**若对一棵有n个节点的完全二叉树进行顺序编号(1≤i≤n),那么,对于编号为i(i≥1)的节点:

    • 当i=1时,该节点为根,它无双亲节点

    • 当i>1时,该节点的双亲节点的编号为i/2

    • 若2i≤n,则有编号为2i的左节点,否则没有左节点

    • 若2i+1≤n,则有编号为2i+1的右节点,否则没有右节点

80、特殊的二叉树

满二叉树:任何结点,或者是树叶,或者恰有两棵非空子树

完全二叉树:最多只有最小面的两层结点的度可以小于2,并且最下面一层的结点全都集中在该层左侧的若干位置

平衡二叉树:树中任一结点的左右子树高度之差不超过1

查找二叉树:又称之为排序二叉树。任一结点的权值,大于其左孩子结点,小于其右孩子结点。(中序遍历结果有序)

线索二叉树:在每个结点中增加两个指针域来存放遍历时得到的前驱和后继信息

81、最优二叉树的概念

最优二叉树:又称哈佛曼树,它是一类带权路径长度最短的树

路径是从树中一个结点到另一个结点之间的通路,路径上的分支数目称为路径长度

树的路径长度是从树根到每一个叶子之间的路径长度之和。

结点的带权路径长度为从该结点到树根之间的路径长度与该结点权值的乘积

树的带权路径长度为树中所有叶子结点的带权路径长度之和

82、二叉树的遍历操作

前序遍历:根左右

中序遍历:左根右

后序遍历:左右根

层次遍历:按层次顺序进行遍历

83、图的概念

完全图

  • 在无向图中,若每对顶点之间都有一条边相连,则称该图为完全图
  • 在有向图中,若每对顶点之间都有两条有向边相互连接,则称该图为完全图

强连通图

  • 在有向图中,对于每一对顶点,从顶点vi到顶点vj和从顶点vj到顶点vi都存在路径,则称为强连通图

84、图的遍历特点

深度优先遍历

  • 当以邻接矩阵作为存储结构时,深度优先搜索遍历图的时间复杂度为O(n^2)
  • 当以邻接表作为存储结构时,深度优先搜索遍历图的时间复杂度为O(n + e)

广度优先遍历和深度优先搜索遍历图的运算时间复杂度相同,其不同之处仅仅在于对顶点的访问次序不同

85、算法特性

可行性(有效性):算法的每个步骤都能有效执行并能在执行有限次后得到确定的结果。

有穷性:执行有穷步骤之后结束,且每一步都可在有穷时间内完成

确定性:算法中每一条指令都必须有确切的含义,不能含糊不清

输入(≥0):算法可以没有输入

输出(≥1):算法至少有一个输入

86、常见算法策略

算法名称关键点特征典型问题
分治法递归技术把一个问题拆分成多个小规模的相同子问题,一般可以递归解决归并排序、快速排序、二分搜索
动态规划法最优子结构和递归式划分子问题(最优子结构),并把子问题结果使用数组存储,利用查询子问题结果构造最终问题结果矩阵乘法、背包问题、LCS最长公共子序列
贪心法一般用于求满意解,特殊情况可求最优解(部分背包)局部最优,但整体不见得最优。
每一步有明确的,既定的策略
背包问题(装箱)、多机调度
找零钱问题
回溯法探索和回退系统的搜索一个问题的所有解或任一解
有试探和回退的过程
N皇后问题、迷宫
背包问题

87、常见的对算法执行所需时间的度量

O(1) < O(log2n) < O(n) < O(nlog2n) < O(n^2) < O(n^3) < O(2^n)

88、常见排序算法对比

LmFdYD.png

89、常见排序算法使用常见对比

  1. 若待排序列的记录数目n较小,可采用直接插入排序和简单选择排序。由于直接插入排序所需的记录移动操作较简单选择排序多,因而当记录本身信息量大时,用简单选择排序方法比较好
  2. 若待排记录按关键字基本有序,采用直接插入或冒泡排序
  3. 快速排序目前被认为是内部排序最好的方法,当待排序关键字随机分布时,快速排序的平均运行时间最短
  4. 堆排序只需要一个辅助空间,并且不会出现在快速排序中可能出现的最快情况
  5. 快速排序和堆排序都是不稳定的排序方法,若要求排序稳定,可选择归并排序

90、编译与解释的区别

编译方式下机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程,因此执行时效率较高(目标程序,移植性好)

解释方式下解释程序程序和源程序(或某种等价表示)要参与到程序的运行过程中,边解释边执行,执行效率较低(无目标程序产生,依赖机器)

91、编译过程

LmVuu9.png

92、文法和正规式

一般的程序设计语言属于上下文无关文法

正规文法,表示的语言集合是正规集,正规集的规律可以用正规式表示。

正规式正规集举例
ab字符串ab构成的集合{ab}
a|b字符串a、b构成的集合{a,b}
a*由0或多个a构成的字符串集合{空,a,aa,aaa,a…a(n个a)}
(a|b)*所有字符a和b构成的串的集合{空,a,b,ab,aab,abb,bba,…}
a(a|b)*以a为首字符的a、b字符串的集合{a,aa,ab,aab,aba,aaab,aaba,…}
(a|b)*abb以abb结尾的a、b字符串的集合{abb,aabb,babb,abaabb,abaabb,…}

93、传值调用和引用调用

传递方式主要特点
传值调用形参取的是实参的值
形参的改变不会导致调用点所传的实参的值发生改变
传址调用
引用调用
形参取的是实参的地址
即相当于实参存储单元的地址引用
因此其值的改变同时改变了实参的值

94、常见的程序设计语言

Fortran语言:第一个高级程序设计语言,科学计算,执行效率高

Pascal语言:结构化程序设计语言,表达能力强,Delphi

C语言:通用、结构化程序设计语言,指针操作能力强,高效

Lisp语言:函数式程序语言,符号处理,人工智能

C++语言:C语言基础上增加了类机制,面向对象,高效,与C兼容

Java语言:面向对象,中间代码,跨平台,通用的程序设计语言

Python:面向对象,解释型程序设计语言,胶水语言,通用的脚本语言

PHP语言:服务器端脚本语言,制作动态网页

Ruby:简单快捷,面向对象,脚本语言

Delphi:快速应用程序开发工具,可视化编程环境

COBOL:数据处理领域最为广泛的程序设计语言,高级编程语言

XML:可扩展标记语言,标准通用标记语言的子集

PROLOG:逻辑式语言,间接性,表达能力强,建造专家系统,数据库,自然语言理解,智能知识库

注意:C/C++常被用于操作系统开发;脚本语言是解释型语言(无目标程序)

95、保护范围和保护对象

法律法规名保护对象及范围注意事项
著作权法著作权文学、绘画、摄影等作品1、不需要申请,作品完成即开始保护
2、绘画或摄影作品原件出售(赠予)著作权还是原作者
原件拥有者有:所有权、展览权
软件著作法
计算机软件保护条例
软件著作权
软件作品
1、不需要申请,作品完成即开始保护
2、登记制度便于举证
专利法专利权需要申请,专利权有效期是从申请日开始计算
商标法商标权需要申请,核准之日起商标受保护
反不正当竞争法商业秘密权1、商业秘密包括技术与经营两个方面
2、必须有保密措施才能认定商业秘密

96、保护期限

LmtdSJ.png

97、知识产权人确定—职务作品判定

LmNVXR.png

98、委托权

LmNGjA.png

99、侵权判断

中国公民,法人或者其他组织的作品,无论是否发表,都享有著作权。(此处发表的定义为公之于众,包括了网络形式的传播)
开发软件所用的思想,处理过程,操作方法或数学概念不受保护。(可以选择申请专利)
著作权法不适用于一下情形:
1)法律,法规,国际机关的决议,决定,命令和其他具有立法,行政,司法性质的文件,及其官方正式译文。
2)时事新闻
3)历法,通用数表,通用表格或公式

LmN7uR.png

100、标准化基础知识——标准的分类

国际标准:
国家标准(⭐):GB-中国,ANSI-美国,BS英国,JIS-日本
区域标准
行业标准(⭐):GJB-中国军用标准,MIT-S-美国军用标准,IEEE-美国电气电子工程师协会
地方标准(⭐):国家地方一级行政机构制定的标准
企业标准(⭐):企业内部指定的标准,也叫企业规范
项目规范
标准的编号

我国国家标准代号:强制性标准代号为GB,推荐性标准代号为GB/T,指导性标准代号为GB/Z,实物标准代号为GSB
行业标准代号:由汉语拼音大写字母组成(如电子行业为SJ)
地方标准代号:由DB加上省级行政区划代码的前两位
企业标准代号:由Q加上企业代号组成

;