计算机考研复试知识点总结(408、数据库、C++)

考研复试的时候做的知识点总结,包含408、C++和数据库。分享给有需要的人,希望能帮到大家~

数据结构

1、 O(n)
算法频度的数量级
2、 存储结构
a) 顺序存储
b) 链式存储
c) 索引存储
d) 散列存储(哈希)
3、 贪心算法
解出局部的最有解,从上往下,得到最后的结果。不保证全局最优,dfs
4、 动态规划
把总的问题分为许多子问题,子问题可能会有重复。记录下子问题的最优解,最终得到总问题的最优解。
5、 分治法
把原问题分成许多与原问题相似的子问题,通过递归解决。如归并排序
6、 线性表(一种逻辑结构)
每个数据的类型相同,有限次序,只有一个直接前驱和一个直接后继

7、 顺序表(一种存储结构)
a) 逻辑上相邻,物理上也相邻(使用地址连续的存储单元)
b) 随机访问
如数组
8、 顺序表和链表比较
可以从4个方面作对比:
(1) 存取(读写)方式
(2) 逻辑结构和物理结构
(3) 查找、插入和删除操作
(4) 空间分配(扩充时的操作)
9、 栈
一种只允许在一端插入和删除的线性表,栈顶、栈底,后进先出
10、队列
允许在一端输入,另一端输出的线性表。先进先出
11、判断循环队列队空和队满
普通情况下,Q.front==Q.rear都表示队空和队满。解决方法:
(1) 牺牲一个存储空间。当Q.rear+1%MaxSize == Q.front时表示队满
(2) 添加一个表示元素个数的变量size记录元素个数。
(3) 增设tag标志,当Q.front ==Q.rear是由于插入导致时,tag=1,表示队满。
12、栈在递归中的应用
函数调用栈,栈中主函数在栈底,调用的递归函数在上,每调用一次递归,就把递归所需信息压入栈顶,返回出栈。
13、队列在树的层次遍历中的应用。
把每个节点的左右子节点入队。访问后出队。
14、树和二叉树的相关概念
树是非线性结构,有明显的层级关系,节点只有一个前驱称为父节点,后继称为子节点,没有前驱的称为根节点,没有后继的称为叶节点。子节点个数称为度,树中最大的节点的度称为树的度。
二叉树:除了叶节点外,只有两个后继节点,有左右之分。
15、由遍历序列构造一颗二叉树(必须有中序)
(1)中序+先序。先序的第一个元素为根节点,根节点把中序分割为左右子树。递归下去就可以确定一颗二叉树。
(2)后序+中序,后序的最后一个结点为根节点、分割左右序列。
(3)层次+中序,层次遍历序列中第一个节点为根节点。
16、线索二叉树
n+1个空链域用来存储前驱结点的指针和后继结点的指针。这些指针叫做线索。
分为前序、中序、后序线索二叉树。
17、树的存储结构
(1)双亲表示法。一位连续空间存储结点。伪指针指向双亲结点的位置。
(2)孩子表示法。孩子结点用链表链接起来形成一个线性结构。
(3)孩子兄弟表示法。二叉链表作为存储结构,左指针指向第一个孩子,右指针指向下一个兄弟节点。
18、二叉排序树
又称为二叉查找树。特点是左孩子结点小于根节点,根节点小于右孩子结点。中序遍历是一个递增的序列。
查找效率:O(log2n);最坏O(n)
删除一个结点,需要中序遍历的后继结点补充原结点的位置。
19、平衡二叉树(AVL)
本质是为了防止二叉排序树高度增长过快,降低查找效率,规定左右子树的高度差的绝对值不超过1.
20、哈夫曼树
带权路径长度最小的二叉树称为哈夫曼树。
21、图的相关概念

简单图:(1)没有重复边;(2)没有顶点到自身的边。
完全图:任意两顶点之间都有边,即无向图有n(n-1)/2条边,有向图有n(n-1)条边
22、图的存储结构
(1)邻接矩阵法
(2)邻接表法。每个结点建立一个单链表,用来存储与该结点邻接的结点。分为顶点表和边表。
(3)十字链表法
(4)邻接多重表
23、图的遍历
(1)广度优先遍历(bfs)
(2)深度优先遍历(dfs)从某一节点w0开始,访问与它邻接而未访问过的节点w1,接着再访问w1邻接而未访问过的结点,直至不能进行下去。退到最初的节点w0,若它还有未访问过的结点,则继续上述过程,直至所有结点访问过为止。
24、最小生成树
(1)prim算法
任取一个顶点加入树T。选择一条T中顶点的边中权值最小的边,将该边邻接的点加入T,以此类推,将所有顶点加入到T中,最终得到最小生成树。
(2)Kruskal算法。
按照递增序列依次选择未选择过的权值最小的边,且边依附的顶点落在不同的连通分量上。直至所有的顶点都在一个连通分量。
25、最短路径
(1)Dijkstra算法(某一点到其它顶点)
(2)Floyd算法(任意顶点之间)
26、查找
(1)顺序查找
(2)折半查找
必须是有序表。查找停止的条件是查找范围的上界<=查找范围的下界,或者high指针小于low指针。
(4) 分块查找(索引顺序查找)
(5) 二叉排序树
(6) 平衡二叉树。
27、B树
(1)m阶B树,是所有结点的平衡因子等于0的m路平衡二叉树。本质是一颗平衡二叉树
(2)一个结点最多只有m-1个关键字,最多m棵子树
(3)最少m/2(向上取整)棵子树,最少m/2(向上取整)-1个关键字
(4)所有叶节点出现在同一层上,不携带信息。

28、B+树
(1)m阶B+树最多有m棵子树,
(2)根节点最少两棵子树,其它非叶结点最少m/2(向上取整)棵子树
(3)结点的关键字个数跟子树个数相等。(每个关键字对应一颗子树/子结点)
(4)所有叶结点包含全部关键字以及指向相应记录的指针。叶节点中的关键字按照大小顺序排列,相邻的叶节点也按照关键字链接起来。
(5)分支结点中仅包含它的各个子节点(即下一级索引块)中最大的关键字,以及指向子节点的指针。

29、B树和B+树的区别
(1)B+树n个关键字有n棵子树,B树中n个关键字有n-1棵子树
(2)B+树关键字个数范围「m/2]<=n<= m,B树关键字个数范围「m/2]-1<=n<= m-1。
(3)B+树非叶结点只是起到索引的作用,指向下一个结点,包含下一个结点的关键字最大值。不含有关键字对应记录的存储地址。
(4)B+树叶节点包含所有关键字,B树中叶节点包含的关键字与在其他结点中出现的关键字不重复。
30、哈希表
(1)又称散列表
(2)根据关键字的值直接访问的数据结构
(3)通过关键字的值直接映射到表的某一位置,映射函数称为散列函数。
31、哈希函数的构造方法
(1)直接订址法:取关键字的某个线性函数作为散列地址
(2)除留余数法,取一个小于等于表长的质数,key取余
(3)数学分析法。取数码分布比较均匀的几位作为散列地址。
(4)平方取中法。取关键字平方值的中间几位,作为散列地址
32、冲入解决方法
开放定值法:
(1) 线性探查法
(2) 平方探查法
(3) 双散列法
拉链法:
33、排序
定义:使表中元素满足按关键字有序的过程。
稳定性:排序前关键字相同的元素经过排序后相对位置没有变化。稳定性不是衡量算法优劣的标准
内部排序:插入排序,交换排序,选择排序,归并排序,基数排序
外部排序:多路归并排序

34、插入排序
(1)直接插入排序
(2)折半插入排序
(3)希尔排序
35、交换排序
(1)冒泡排序
(2)快速排序
36、选择排序
(1)简单选择排序
(2)堆排序
37、时间复杂度和稳定性

计算机组成原理

1、 冯诺依曼机和存储思想
(1) 计算机硬件由运算器、存储器、控制器、输入、输出设备组成
(2) 指令和地址以同等地位存储,计算机能识别
(3) 指令由地址码和操作码组成
(4) 采用存储程序的思想
(5) 早期冯诺依曼机以运算器为中心
存储程序:事先把数据和程序送入主存,程序一旦执行,无序干预,逐条执行。
2、 什么是编译?什么是解释?
编译:把程序转换成可执行文件。包括预处理阶段、编译阶段、汇编阶段和链接阶段
翻译:解释则不同,解释性语言的程序不需要编译,在运行程序的时候才翻译,翻译一句执行一句,不 生成目标程序,这样解释性语言每执行一次就要翻译一次,效率比较低。
3、 指令的执行过程
(1) 取指令:PC->MAR,M->MDR,MDR->IR
(2) 分析指令:OP(IR)->CU
(3) 执行指令:AD(IR)->MAR,M->MDR,->ACC
每取完一条指令,PC=PC+1
4、 计算机主要性能指标
(1) 机器字长:计算机进行一次整数运算所能处理的二进制位数,通常与寄存器位数有关,通常是8的倍数。
(2) 数据通路宽度。数据总线一次能够并行传送的位数。
(3) 主存容量:主存储器能够存储的数据总量。通常以字节为单位。MAR位数能够反映主存储器容量(最大值)。
(4) 运算速度
a) 吞吐量:单位时间内处理请求的数量
b) 响应时间
(5) 主频:机器的时钟频率,数值上为时钟周期的倒数
(6) CPU时钟周期:通常为节拍脉冲或者T周期,即主频的倒数。最小的时间单位。完成一个基本动作至少需要一个时钟周期。
(7) CPI:执行一条指令所需的时钟周期数。
5、 浮点数表示

数符:1,阶码:8(移码),尾数:23(原码)
6、 C语言中浮点数类型转换
(1) int->float,int可以保留32位,float只能保留24位,可能会有舍去一部分
(2) double->float可能会溢出
(3) float、double->int,可能会丢失小数位,也可能溢出
7、 多级存储
主要体现在Cache-主存和主存-辅存层次上,前者主要解决CPU和主存速度不匹配的问题,后者主要解决存储系统的容量问题。
8、 存储器
(1) 随机存储器RAM
a) DRAM(需要刷新)
b) SRAM(不需要刷新,速度快成本高)
(2) 只读存储器ROM,ssd
(3) 串行访问。磁盘
9、 提高CPU访存速度
多体并行存储器
低位交叉编址(采用流水线的方式并行存取)
10、 Cache
(1) 高速缓冲存储器,位与CPU和主存储器之间
(2) 使用Cache改善系统性能的依据是程序的局部性原理
(3) 替换算法:Cache未命中,需要替换Cache中的旧数据
a) 随机算法
b) 先进先出算法
c) LRU算法(近期最少使用算法)
(4) 写操作:
a) 全写法,Cache和主存同时写
b) 回写法,只写入Cache,被换出时再写回主存
(5) 映射方式:
a) 直接映射,主存块号MODCache行数
b) 全相联映射
c) 组相联映射,组间用直接映射,组内用全相联映射
11、 虚拟存储器
虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩存的一种存储器1系统。
12、 TLB快表
虚页号转成实页号过程中回访问主存中的页表,频繁访问主存回降低存取效率,因此将页表中最常访问的页表项复制存储在高速缓存中,这个高速缓存中的页表就是快表。
13、 指令流水线的理解
指令执行一般分为五个步骤:取指、译码、访存、执行、写回。这五个步骤分别在五个子部件中并行完成,每个部件完成一条指令的相应步骤后马上开始下一条指令的相应步骤。从而提高指令的执行效率和速度。
14、 CPU
(1) 由运算器和控制器构成,控制器负责协调并控制指令的执行,运算器负责对数据的加工
(2) 功能包括:指令控制,时间控制,操作控制,数据加工,中断控制
15、 CPU响应中断的条件
a) 处于开中断状态
b) 有中断请求,中断请求触发器处于“1”状态
c) 中断允许触发器必须为“1”
d) CPU处于指令周期的中断响应周期
16、 中断响应优先级和中断处理优先级分别指什么
a) 中断响应优先级是由硬件决定的,不可改变,针对同时到达的中断请求优先处理哪个中断的问题。
b) 中断处理优先级,是由中断屏蔽字决定的,反映的是正在处理的中断是否比新发生的中断请求的处理优先级高低,若屏蔽字中某一中断请求的屏蔽位为0,则该中断请求的优先级比正在处理的中断高,此时中止正在处理的中断,转到新的中断去处理,完成后返回被中止的中断。
17、 中断向量、向量地址
a) 中断向量:中断服务程序的入口地址
b) 向量地址:中断向量表或中断向量跳转表中每个表项所在的内存地址或索引值
18、 中断和异常的区别
a) 中断:CPU对系统中发生的某一事件的相应,中断可分为外中断和内中断
b) 外中断:就是通常所说的中断,来自CPU的外部硬件设备,包括磁盘中断、打印机中断等。其中也可分为可屏蔽中断和不可屏蔽中断,不可屏蔽中断包括电源漏电等。
c) 内中断:就是所说的异常。异常来自CPU内部,按照类型可分为故障,自陷和终止。举例:故障:缺页,除0,溢出;自陷:条件陷阱指令;终止:控制器出错,存储器校验出错…
d) 不同的地方:
i. 异常来自CPU内部,由指令执行引起。中断来自CPU外部,由外部设备引起
ii. 异常在指令的执行过程中检测,中断在执行完一条指令后检测
iii. 异常不可屏蔽,中断有些可以屏蔽

操作系统

1、 操作系统的理解
操作系统是控制和管理整个计算机系统软件和硬件资源,合理组织、调度计算机工作与资源分配,进而为用户和其他软件提供方便接口和环境的程序集合。
2、 内核程序和应用程序(用户态和内核态)
a) 内核程序是应用程序的管理者,可以执行一些特权指令,这些指令在用户态下,出于安全的考虑不能直接执行,如IO指令
3、 内核
计算机上配置的底层软件,是计算机功能的延伸,包括以下内容
(1) 时钟管理
(2) 中断机制
(3) 原语
(4) 系统控制的数据结构及处理
4、 中断执行过程,9步走
a) 关中断
b) 保存断点
c) 识别中断类型,中断服务程序寻址
d) 保存现场和屏蔽字
e) 开中断
f) 执行中断服务程序
g) 关中断
h) 恢复现场和屏蔽字
i) 开中断
j) 中断返回
5、 大内核和微内核
a) 大内核:将操作系统的功能作为一个紧密结合的整体放到内核,各个模块共享信息。
b) 微内核:将部分功能迁移出内核,并分成独立的模块,只有微内核一个模块在内核态运行。
6、 并行和并发的区别
a) 并发:多道程序环境下,在一段时间内,多个程序在宏观上同时运行,在微观上,一个处理器只能同时处理一个程序,这些程序在处理器上交替运行。
b) 并行:有多个处理器,多个程序在不同的处理器上同时运行
7、 进程
(1) 进程:多个程序并发运行,会导致程序之间失去封闭性。为了更好地描述和控制程序的并发执行,引入了进程的概念。进程是系统资源分配和调度的一个基本单位。
(2) 进程状态和转换

就绪态->运行态:进程被调度后,获得处理器资源(时间片)
运行态->就绪态:时间片用完或者优先级更高的进程就绪时,被剥夺
运行态->阻塞态:进程申请某一资源(如外设)的使用或等待分配时,主动的
阻塞态->就绪态:进程等待的资源或事情到来,被动的
8、 线程
a) 进程中的一个实体,是CPU独立调度和分配的基本单位
b) 一个线程与进程中的其它线程共享进程中的资源和地址空间
9、 进程和线程的区别
a) 进程是系统资源调度和分配的基本单位,线程是CPU调度和分派的基本单位。
b) 线程依赖进程而存在,一个进程至少有一个线程。
c) 进程有独立的地址空间,线程之间共享进程的地址空间
d) 进程拥有系统资源,线程基本上自己不用有系统资源。
e) 进程切换,涉及CPU环境的保护和新调度的CPU环境的设置,开销较大;线程切换只需保存和设置少量的寄存器内容,开销较小。
10、 进程的通信方式
a) 共享内存
b) 消息传递
c) 管道通信
11、 进程调度算法
a) 先来先服务
b) 最短作业优先
c) 优先级调度
d) 时间片轮转
e) 最高响应比优先
f) 多级反馈队列调度算法
12、 同步和互斥
a) 同步:进程执行的先后顺序
b) 互斥:同一时刻只能有一个进程进入临界区
13、 死锁
a) 进程之间因争夺资源造成的相互等待的现象
b) 原因:系统资源的竞争,进程执行的顺序非法
14、 死锁产生的必要条件
a) 互斥条件,资源只能由一个进程使用
b) 不可剥夺,资源不可被剥夺
c) 请求并保持,拥有了某一系统资源,又提出了新的资源请求
d) 环路等待,发生死锁时,必然存在一个资源申请的环路
15、 预防死锁(破坏死锁的四个必要条件)
a) 破坏互斥条件
b) 破坏不可剥夺条件。请求资源得不到满足的时候,需要释放所保持的资源
c) 破坏保持并请求条件,一次性全部所需条件。
d) 破坏循环等待条件。按照规定顺序申请
16、 死锁避免(防止进入不安全状态)
a) 安全状态
b) 银行家算法
17、 死锁检测和解除
a) 检测:资源分配图,判断为死锁的条件是资源分配图不可完全化解,死锁定理
b) 解除:
i. 资源剥夺
ii. 撤销进程
iii. 进程回退(进程资源)到足以避免死锁的状态
18、 死锁和饥饿的区别
饥饿产生的原因:由于分配策略的原因,导致进程长时间等待
区别:(1)进入“饥饿”状态的进程可以只有一个,死锁产生时至少有两个进程
(2)进入“饥饿”的进程可以为就绪态,也可以为阻塞态,死锁的进程一定是阻塞态
11、存储器应该具备的功能
(1)内存的分配和回收
(2)地址变换
(3)扩充内存(虚拟存储技术)
(4)内存保护(保证内存中的各作业都在自己的存储空间下运行)
12、将用户程序编为内存中执行的步骤
(1)编译,将代码编译成目标模块
(2)链接,将库函数和目标模块链接在一起
(3)装入,将模块装入内存中运行
13、链接的方式
(1)静态链接,程序运行前链接
(2)装入时动态链接,边装入边链接
(3)运行时动态,在运行时,需要哪些模块,才对这些模块进行链接
14、装入的方式
(1)绝对装入,编译时产生物理地址
(2)可重定位装入,装入时逻辑地址转换为物理地址
(3)动态运行时装入
15、内存连续分配管理方式
(1)单一连续分配
(2)固定分区分配
(3)动态分区分配
(4)动态分区分配算法
a、首次适应算法
b、最佳适应算法
c、最坏适应算法
d、邻近适应算法
16、页面置换算法
(1)最佳置换算法
(2)先进先出置换算法
(3)LRU算法(最近最久未使用)
(4)时钟置换算法,简单CLOCK置换算法,改进型CLOCK置换算法
17、什么是页表和快表,有什么作用
(1)页表:指出逻辑地址中的页号与主存块号的对应关系
(2)快表:存放在高速缓冲存储器的部分页表
18、地址翻译过程
TLB->页表->Cache->主存(Cache不命中)->外存
19、 文件的定义
a) 以硬盘为载体
b) 信息集合
c) 形式可以是文本、图片、程序
d) 输入输出的基本单位
20、 文件的基本操作
文件属于抽象数据类型
(1) 创建文件
(2) 写文件
(3) 读文件
(4) 文件重定位
(5) 删除文件
(6) 截断文件
21、 磁盘调度算法
a) 先来先服务算法
b) 最短寻道时间优先算法
c) SCAN算法
d) CSCAN算法
22、 I/O控制方式
a) 程序I/O方式,CPU对外设状态进行循环检查
b) 中断驱动方式,允许外设主动打断CPU的运行并请求服务
c) DMA方式(直接存储器访问),I/O设备和内存之间开启一个直接传输数据的通路,DMA控制器控制一个数据块的传输。CPU只在开始阶段设置好传输所需的控制信息,并在传输结束阶段做处理。
d) I/O通道控制方式
23、 Spooling技术
a) 将一个物理I/O设备虚拟成多台逻辑I/O设备,允许多个用户共享一个物理I/O设备
b) 输入井和输出井,分别模拟脱机时输入的磁盘设备和输出的磁盘设备
c) 输入缓冲区和输出缓冲区,用来暂存从输入设备送来的数据,输出缓冲区用来暂存从输出设备送来的数据,最后再送入输入井和输出井。
d) 输入进程SPi和输出进程SP0.,用来模拟数据输入输出的外围控制机。
特点:
(1) 提高I/O速度
(2) 将独占设备改成共享设备
(3) 实现了虚拟设备功能

计算机网络

1、 计算机网络的主要功能
a) 硬件资源的共享
b) 软件资源的共享
c) 用户之间信息的交换
d) 分布式处理
2、 主机通信方式
a) C/S
b) P2P
3、 电路交换、报文交换、分组交换的区别
(1) 电路交换:整个报文的比特流从源点连续的直达终点,像在一个管道中传输。在这一过程中一直独占物理通信路径。包括建立连接、传输连接、断开连接三个阶段。典型例子是传统电话网络。
(2) 报文交换:将整个报文转发到相邻节点,全部存储下来,根据转发表,转发到下一个节点。(存储转发)报文携带源地址、目标地址等信息。无需建立连接、动态分配线路。
(3) 分组交换:将报文分组转发到相邻节点,查找转发表,转发到下一个节点。也是存储转发类型的网络。线路利用率高、简化存储管理

4、 数据报和虚电路
a) 数据报:不需要建立连接、随时发送分组、网络尽最大努力交付、传输不保证可靠性、不一定按序到达
b) 虚电路:数据报与电路交换结合起来,建立一条逻辑上相连的虚电路。可靠、有序,缺点是某个结点出现故障,会影响整条虚电路。
5、 性能指标
(1) 宽带:线路传送数据的能力,b/s
(2) 时延:排队时延+处理时延+传输时延+传播时延
6、 计算机网络提供的服务的三种分类
(1) 面向连接服务和无连接服务。TCP面向连接,IP、UDP无连接
(2) 可靠服务和不可靠服务
(3) 有应答服务和无应答服务
7、 ISO/OSI模型和TCP/IP模型
(1)OSI七层,TCPIP五层

(2)五层协议
a) 物理层:物理媒体上传输原始比特流。
b) 数据链路层:为同一链路的主机提供数据传输服务。传输的单位是帧、
c) 网络层:为主机提供数据传输服务。网络层将传输层传递下来的报文封装成分组传送。
d) 传输层:为进程提供通用数据传输服务(端到端服务)。TCP、UDP
e) 应用层:为特定的应用程序提供数据传输服务。HTTP、DNS
8、 OSI
(1)会话层
不同主机之间的进程之间会话
(2)表示层
数据压缩、加密、数据描述
9、TCP/IP
只有四层,将五层协议中的数据链路层和物理层合并成网络接口层。
10、端到端和点到点通信的区别
(1)点到点通信是由物理层、数据链路层、网络层提供。传输层在基于点到点的通信网络上提供端到端通信
(2)直接相连的结点之间的通信称为点到点。点到点通信不保证数据传输之间的可靠性,也不能说明源主机和目的主机之间是那两个进程在通信。这些工作是由传输层来完成。
(3)端到端是基于点到点通信的,它是由一段段点到点通信构成的。是比点到点通信更高级的通信方式。端是指端口。端口号标识了应用层中不同的进程。
11、流量控制
(1)限制发送方的数据流量,使其发送的数据不会因接收方来不及接收而被淹没造成数据丢失。
(2)通过某种反馈机制通知发送方。
12、流量控制方式
(1)停止-等待流量控制方式
接收到应答信号才能发送下一帧,否则一直等待。
(2)滑动窗口方式。
发送窗口:一组连续的允许发送的帧的序号。接收窗口:一组连续的允许接收的帧的帧号。
(3)后退N帧协议(GBN)(发送窗口大小>1,接收窗口大小=1)
发送发可以连续发送多个帧,接收方只能按照顺序接收。若发送的帧超时,需要重新发送超时的帧以及其后面的帧。
(4)选择重传协议(SR)(发送窗口>1,接收窗口>1)
可以只重传发生差错的帧。发送窗口和接收窗口大小通常是相同的。
13、可靠传输机制有哪些
(1)确认机制。将确认捎带在一个回复帧中,称为捎带确认。超时重传:发送某个帧后开启一个计时器,在一定时间内没有得到发送的数据帧的确认帧,就要重新发送改数据帧。
(2)自动重传请求(ARQ)。通过接收方请求发送方重传出错的帧。通常有三种方式:停止-等待协议、后退N帧协议(GBN)、选择重传协议(SR)。后两种协议是滑动窗口协议和请求重发技术的结合。
13、随机访问介质访问控制
总线性网络中,当有两个或以上的用户同时发送信息时,会产生冲突,导致信息发送以失败告终。为解决随机接入发生的碰撞,每个用户需要按照一定的规则反复的传它的帧,直到该帧无碰撞地通过。这些规则就是随机访问介质访问控制。常用的协议有:ALOHA协议、CSMA协议、CSMA/CD协议和CSMA/CA协议
(1)ALOHA协议
有则发送,检测冲突,冲突后重发。
(2)CSMA协议(载波侦听多路访问)(发送前监听,信道空闲再发送)
1-坚持CSMA
发送前监听,直到空闲就发送。
发生冲突等一段随机事件再发送。

非坚持CSMA
发送前监听,如果信道忙则放弃监听,等随机时间后再重复上述过程。

P-坚持
发送前监听,信道忙则持续监听,直到空闲时,以p概率发送信息,以1-p的概率推迟到下一个时隙。

(3)CSMA/CD(Coliision Detection)碰撞检测
发送前先监听,空闲时再发送。边发边监听。冲突停发,随机(截断二进制退避法)再发。
最短帧长:总线传播时延数据传输速率2

(4)CSMA/CA(Collision Avoidance)碰撞避免
(a)使用于无线局域网
(b)使用预约信道、ACK帧、RTS/CTS帧等三种机制来实现碰撞避免
发送的同时通知其它站点不要发送。
接收到数据帧后都要发送一个ACK帧。如果发送方没有在规定时间内收到ACK帧,则认为发送失败,需要重传。
14、PPP协议(点到点协议)
为在同等单元之间传输数据包这样的简单链路设计的链路层协议。
15、中继器、集线器、网桥和交换机的区别和联系
(1)中继器工作在物理层。用来连接两个网段。作用是消除数字信号在传播过程中的时针和衰减,使其波形和强度达到所需要求。原理是信号再生。
(2)集线器也工作在物理层。是多端口的中继器。将多个结点连接成一个共享式的局域网。但是任何时候只能有一个结点通过公共信道发送数据。
(3)网桥工作在链路层。可以互联不同的物理层、Mac子层以及不同速率的以太网。作用是过滤和转发。可以隔离冲突域,但不能隔离广播域。
(4)交换机,工作在数据链路层,相当域一个多端口的网桥。作用是实现多接口的并发传输。

16、路由器
(1)路由选择。根据路由选择协议构造路由表,并定期维护和更新。
(2)分组转发。根据IP地址和路由表(转发表)将分组从合适的端口转发出去。
17、动态路由算法(两个算法的区别)
(1)距离-向量路由算法,(RIP)
(a)所有结点定期将它们的整个路由表(知道的全部信息)传送给所有与之直接相邻的结点。
(b)最多15跳。
(c)可能会出现“坏消息穿得慢”的现象。
(2)链路状态路由算法,开放最短路径优先(OSPF)
(a)定期将与自己相连的链路状态广播播给所有其它结点(洪泛法)
(b)只有链路状态发生变化时,才发送信息。且更新收敛快。
18、外部网关协议(EGP)
(1)BGP边界网关协议,选择一条能够到达目标网络且较好的路由,并非找到最好路由。基于路径向量路由选择协议。BGP是应用层协议,基于TCP
(2)每个自治系统要有一个路由器作为BGP发言人,通过该发言人与其他自治系统的BGP发言人建立联系,并建立会话,交换路由信息,从而找到到达各个自治系统的较好路由。
19、ARP地址解析协议(网络层协议)
(1)IP地址对Mac地址的映射。ARP表存放映射
(2)工作原理:先在ARP高速缓存中查看是否有目的IP地址,如果有,直接将其对应的Mac地址写进Mac帧,然后通过局域网将该Mac帧发往该硬件地址。如果没有,则通过广播的方式发送ARP请求(地址为FF-FF-FF-FF-FF-FF),使得局域网中的所有设备都收到,如果目的主机收到这个请求,则向它发送ARP响应分组,里面包含IP地址和Mac地址,主机收到这个响应帧后将其写入ARP缓存,并按地址发送Mac帧。如果目的主机不在同一局域网,则要发送给某个路由器,让它将分组转发到目的网络中。
20、DHCP动态主机配置协议
(1)给主机动态分配IP地址。基于UDP
(2)工作过程:1、DHCP客户机广播“DHCP”发现消息,寻找网络中的DHCP服务器(目的地址:255.255.255.255)
2、DHCP服务器接收到“DHCP发现”消息后,广播“DHCP提供消息”,其中包括提供的IP地址。
3、客户机接收到“DHCP提供消息”后,如果接收该IP地址,则广播“DHCP”请求消息给DHCP服务器请求提供IP地址。
4、DHCP服务机广播“DHCP确认”消息,将地址分配给DHCP客户机。

21、ICMP网际控制报文协议
(1)主机或路由器报告差错和异常情况。网络层
(2)分为ICMP差错报告报文和ICMP询问报文
(3)终点不可达。
(4)源点抑制。由于拥塞而丢弃数据
(5)时间超过。生存时间为0
(6)参数问题
(7)改变路由
22、IPv4重要字段
(1)首部长度
(2)总长度。
(3)标识。分片的序号
(4)标志。用来标记是否分片等信息
(5)片位移
(6)生存时间
(7)协议
(8)源地址字段
(9)目的地址字段
23、网络地址转换NAT
(1)将专有网络地址转换为公有地址
(2)节省了IP地址的消耗
24、子网划分
在IP地址中增加一个“子网号字段”,使得两级IP地址变成三级IP地址,对主机号进行借位
25、子网掩码
(1)是一个和IP地址对应的、32bit对的二进制串。用来划分子网。
(2)1对应网络号和子网号,0对应主机号。
(3)与IP地址诸位相与得到子网网络号。
26、传输层的功能
(1)提供端到端的通信服务。
(2)复用和分用。复用:不同进程使用同一协议传输数据。分用:接收方剥去首部后可将数据正确交付给目的进程。
(3)差错检测(首部和数据部分)
(4)两种不同的传输协议
27、UDP
(1)无需简历连接
(2)无连接状态。没有接收和发送缓存、拥塞控制、确认号等。
(3)首部开销小。(8B)
(4)尽最大努力交付
28、TCP
可靠、有序、不丢失、不重复
(1)面向连接
(2)一对一
(3)可靠的交付服务,保证数据无差错、有序、不重复
(4)双工道通信
29、三次握手建立连接

(1)SYN=1,seq=x
(2)ACK=1,ack=x+1,seq=y
(3)ACK=1,ack+y+1,seq=x+1(可以携带数据,不携带不消耗序列号)
30、四次握手释放连接
(1)FIN=1,seq=u,
(2)ACK=1,seq=v,ack=u+1
(3)FIN=1,ACK=1,ack=u+1,seq=w
(4)ACK=1,seq=u+1,ack=w+1

31、拥塞控制和流量控制的区别
(1)拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程。防止过多数据注入网络
(2)流量控制是点对点的通信量的控制。防止发送端发送速率太快。
(3)相同点是都通过控制发送方发送数据的速率来达到控制效果
32、拥塞控制的四种算法
拥塞窗口和接收窗口。接收窗口:根据接收缓存空间确定,反映接收方的容量。拥塞窗口:根据网路的拥塞程度设置的窗口值。
发送窗口取两者的最小值。
(1)慢开始。开始时cwnd为1,每次收到一个对报文的确认,cwnd+1。每经过一个传输轮次,cwnd就会加倍,即呈指数级增长。
(2)拥塞避免。cwnd超过慢开始门限(阈值)ssthresh,就改用拥塞避免算法。每经过一个往返时延,增加MSS(最大报文段长度)。出现一次超时,慢开始门限变为往前cwnd的一半。

(3)快重传。当发送方连续收到三个重复的ACK报文时,立即重传为收到的报文,无需等待超时。
(4)快恢复。认为收到三个重复确认的报文的情况下,网络并不是特别拥挤。把cwnd设置为慢开始门限ssthresh改变后的值,而不是重新从1执行慢开始算法。然后执行拥塞避免算法。
33、为什么不采用“三次握手”释放连接,且发送最后一次握手报文后要等待2MSL的时间呢?
(1)保证客户机发送的最后一个确认报文能够到达服务机。如果不等待2MSL,若A返回的确认报文段丢失,则服务机不能进入正常关闭状态,而A此时已经关闭,也不能再重传。
(2)防止出现“已失效的请求连接报文段”,A在发送最后一个确认报文段后,再经过2MSL可保证本连接持续的时间内所产生的所有报文段从网络中消失。
34、为什么不采用“两次握手”建立连接?
主要是防止两次握手情况下已失效的连接请求报文突然又传送到服务器而产生错误。
35、DNS域名解析协议
域名解析式指把域名映射成IP地址或把IP地址映射成域名的过程。前者是正向解析,后者称为反向解析。当客户端需要域名解析时,通过本地的DNS客户端构造一个DNS请求报文,以UDP数据报方式发往本地域名服务器。域名解析有两种方式,递归查询和递归与迭代相结合的方式。
本地域名服务器->根域名服务器->顶级域名服务器->权限域名服务器
36、FTP文件传输协议
功能:
(1)提供不同种类主机系统之间的文件传输能力
(2)以用户权限管理的方式提供对远程FTP服务器上的文件管理能力
(3)以匿名FTP的方式提供公用文件共享的能力
控制连接和数据连接
(1)控制连接:服务器监听21号端口,建立在这个端口上的连接是控制连接,用来传输控制信息。在整个会话期间一直开启。
(2)数据连接:用来连接客户端和服务器端的数据传送进程。传送完成后关闭。
37、SMTP简单邮件传输协议
SMTP提供一种可靠且有效的电子邮件传输服务。C/S方式。
38、HTTP超文本传输协议
HTTP定义了客户进程如何向服务器请求万维网文档,以及服务器如何把文档传送给浏览器。定义了请求和响应的格式和规则。
用户单击鼠标后发生的事情:
(1)浏览器分析链接指向的URL
(2)向DNS请求解析网址的IP地址,
(3)域名系统DNS解析出服务器的IP地址
(4)客户端与服务器建立TCP连接
(5)浏览器发出HTTP请求:GET….
(6)服务器通过HTTP响应返回文件给浏览器
(7)TCP连接释放
(8)浏览器解释文件index.html,并将网页展示给用户。
39、

C++

1、C和C++
(1)C语言面向过程,重点在于算法和数据结构。C语言首先是考虑如何通过一个程序,对输入(或环境条件)进行运算处理得到输入(或实现过程(事务)控制)。
(2)C++语言是面向对象语言,首先考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域。这样就能通过获取对象的状态信息得到输入或实现过程(事务)输出。它在c语言的基础上增加了面向对象、模板和标准模板库。如类、继承、虚函数、模板、容器类等。
2、类
(1)定义了事物的属性和它能够完成的行为。
(2)方法和属性称为“成员,是一个类所含方法和数据描述一组对象的共同属性和行为。
(3)类是对象之上的抽象,对象是类的具体化(实例)。
3、封装性
使数据和加工数据的方法封装成一个整体。隔离了对象的设计者和使用者,使用者无需知晓行为实现的细节。增加了安全性。
4、继承性
继承是子类共享父类之间数据和方法的机制,一个类直接继承其它类的全部描述,同时可以修改和扩充。增强了代码的复用性。
5、多态性
对象根据所接受的信息做出动作。同一消息为不同对象接收时产生完全不同的行动。
6、宏定义和操作符的区别
(1)宏定义是预处理指令。
(2)是一个替换符,不做计算和表达式求解,不占用内存和编译时间。
7、虚函数和纯虚函数
虚函数必须是基类的非静态成员函数,其权限可以是protected和public。纯虚函数是虚函数的一个子集,含有纯虚函数的类就是抽象类,不能生成对象。
子类必须重写纯虚函数,不然也是一个抽象类。
8、纯虚函数的使用
Virtual……=0。纯虚函数用来定义没有意义的实现,没有函数体,用于抽象类中交给派生类实现的方法。
9、引用和值传递的区别
(1)值传递传递的是一个值的副本,函数对形参的操作不会影响实参的值。
(2)引用传递传递的是引用对象的内存地址,函数对形参的操作会影响实参的值。
10、指针和引用的区别
(1)引用在定义时必须被初始化,之后也不能改变,指针可以改变。
(2)引用不能为空,指针可以为空、
(3)引用不会为其分配内存空间,和所指向的变量共享内存空间,指针会分配内存空间。
11、类和结构体的区别
(1)结构体存储在栈中,类的实例化可以存储在栈中,也可以存储在堆中
(2)结构体没有析构函数,类有析构函数
(3)结构体没有继承
12、覆盖、隐藏、重载的区别
重载:
(1)同一作用域
(2)函数名和参数都一样
(3)没有virtual
覆盖(重写):
(1)不同作用域
(2)函数名和参数名相同
(3)有virtual
隐藏:
(1)不同作用域
(2)函数名相同,参数不同
(3)无virtual
13、内联函数
类声明的内部声明或定义的成员函数叫做内联函数(inline),在内联函数不允许有循环语句,或者Switch语句。
在调用处直接嵌入函数体。避免压栈等操作所花费的开销。
14、静态函数
(1)用static修饰,只能访问静态成员变量。可以用类名直接访问。
(2)生存期为整个源程序
15、函数模板和模板函数
用模板技术定义的参数化类型的非成员函数,程序可以使用不同的参数类型调用相同的函数。
模板函数式函数模板的实例化对象。
16、类模板
使用模板技术定义的类,描述了能够管理其它数据类型的通用数据类型。如c++中的容器类,队列、链表、栈等。
17、泛化编程
独立于特定类实现的方式编写代码,针对不同的类型提供通用的实现。
18、C++堆和栈的区别
(1)堆用来存放动态分配的对象,如new出来的对象。
(2)栈用来存放函数内的非static的对象。仅在其定义的程序块运行时才存在。
(3)栈和静态内存的对象都是由编译器自动创建和销毁的。
19、内存泄漏
动态存储分配的空间,使用完后未释放,导致一直占据该内存单元。
20、const的用途
(1)防止变量被修改
(2)优化程序性能,避免没必要的复制,从而提高程序性能
(3)保护类的成员变量不被修改
21、构造函数和虚构函数的作用
构造函数:一种特殊的成员函数,主要为对象分配空间,进行初始化。
(1)函数名与类名相同
(2)可以有参数,但不能有返回值
(3)不需要用户调用,创建对象时自动执行。
析构函数:在对象释放时执行一些清理任务。如释放分配给对象的内存空间。
(1)波浪号加类名。
(2)不返回任何值
(3)只有一个
(4)撤销对象时,自动调用
22、this指针
(1)创建对象时,将this初始化为指向该对象,即this指向当前被调用的成员函数所在的对象的起始地址。
(2)不同对象调用同一成员函数时,c++编译器根据成员函数的this指针指向的对象来确定应该引用哪一个对象的数据成员。
23、友元函数
(1)在类中声明某个函数为友元函数,该函数时独立于类的函数。
(2)函数可以访问类的所有成员。包括私有成员
24、有几种继承方式
Public、protected、private
(1)公有成员。私有继承->私有成员,公有继承->公有成员,保护继承->保护成员
(2)保护成员。私有继承->私有成员,公有继承->保护成员,保护继承->保护成员
25、派生类构造函数和析构函数的构造规则
(1)当基类的构造函数没有参数时,派生类可以不向基类传递参数,甚至可以不定义构造函数。
(2)当基类有带参数的构造函数时,派生类必须定义构造函数,已提供把参数传递给基类构造函数的途径。
25、多继承
一个派生类有多个基类
26、虚基类
(1)在多继承中,如果基类有一个共同的基类,那么在派生类中访问这个共同的基类时就会产生二义性。为了解决这种二义性,C++引入了虚基类的概念。
27、友元运算符重载函数和成员运算符重载函数有什么不同
(1)对于双目运算符,成员运算符重载只有一个参数,友元运算符重载函数有两个参数。对于单目运算符,成员运算符重载函数没有参数,友元运算符重载函数有一个。
(2)有些情况必须用友元运算符重载,如一个常数与一个对象相加。有些情况必须要使用成员运算符重载函数,如“=”;
28、变量定义和变量声明的区别
区别在于有没有分配内存空间。变量声明只是指出本源文件的程序用到了某个变量。
29、为什么头文件要包含#ifndef…#endif这对编译预处理指令?
这对编译预处理指令表示,如果#ifndef后的标识符已经定义过,则跳过中间的所有指令,直接调到#endif,这样可以避免多次编译。
30、复制构造函数为什么一定要用引用传递而不是指传递?
值传递的参数在参数传递时有一个过程,即用实际的参数的值构造形式参数,这个构造过程是由复制构造函数完成的。如果将复制构造函数的参数设计成值传递,将会引起复制构造函数的递归调用。

数据库

1、数据库管理系统DMBS
操纵和管理数据库的大型软件
功能:
(1)数据定义
(2)数据操控
(3)数据库的运行管理
(4)数据库的建立和维护
2、DBA的职责是什么
数据库管理员的职责主要是管理和维护数据库管理系统:
(1)决定数据库中要存放哪些信息
(2)决定数据库的存储结构和存储策略
(3)定义数据的安全性要求和完整性约束条件
(4)监控数据库的使用和运行
(5)对数据库进行改进和完善
3、DDL、DML、DCL、DQL
(1)DDL数据库定义语言
主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。如:CREATE、DROP、ALTER
(2)DML数据库操纵语言
对数据进行增删改等操作。INSERT、UPDATE、DELETE
(3)DQL数据库查询语言
查询操作。SELECT
(4)DCL数据库控制语言
主要是用来设置、更改用户权限。如GRANT、REVOKE
4、索引
功能:当表的数据量较大时,查询操作会比较费时,简历索引可以加快查询速度。
确定:占据一定存储空间
索引方式:B+树索引、哈希索引
5、索引和键的区别
(1)索引是物理结构
(2)键是逻辑概念
6、数据库的安全性技术
(1)安全性:保护数据库防止被恶意破坏和非法存取
(2)方法:用户表示和识别(合法用户才能进入数据库访问资源),多层存储控制(自主存取控制、强制存取控制),审计(审计员利用审计日志监控数据库的各种行为),视图
7、触发器
触发器是定义在关系表上的由数据驱动的特殊过程。
用户的增删改操作会引起数据库系统自动激活相应的触发器完成某种操作。
8、合并E-R图时会有哪些冲突
(1)属性冲突。不同实体对同一属性的定义不同,如对学号有些定义为INT类型有些定义为CHAR类型
(2)命名冲突。同一实体命名不同。
(3)结构冲突。一些实体在其他E-R图中被定义为属性。
9、三级模式,两级映射
三级模式:外模式、模式、内模式。
模式描述了数据库中全体数据的逻辑结构和特征;
外模式描述了用户可见的局部数据的逻辑结构和特征;
内模式描述了数据库的物理结构和存储方式。
外模式/模式映像保证了数据的逻辑独立性(应用程序和数据库的物理存储是相互独立的);
内模式/模式映像的优点保证了数据的物理独立性(应用程序和数据库的逻辑结构是相互独立的)。
10、SQL的特点
(1)综合同一,集DML、DCL,DDL于一体
(2)高度非过程化,只需要提出“做什么”,不需要指明怎么做
(3)面向集合的操作方式
11、DD数据字典
数据字典是系统内部的一组系统表,记录数据库的所有定义信息,包括关系模式定义,视图定义、索引定义和完整性定义等。在需求分析阶段建立。
12、数据库的范式
(1)1NF:
每个属性都是不可分割的原子值
(2)2NF:
消除非主属性对主属性的部分函数依赖
(3)3NF
消除非主属性对主属性的传递依赖
(4)BCNF
消除所有属性对码的部分函数依赖和传递函数依赖。决定因素必含有码
13、完整性
数据库的完整性是防止数据库中有不符合语义的数据,防止错误信息的输入和输出
数据库安全性措施的防范对象是非法用户和非法操作,完整性措施防范的对象是不合语义的数据。
14、数据库恢复技术
(1)数据转存。DBA定期将数据库复制到磁盘或者其他存储介质中保存起来。这些备用数据称为后备副本或者后援副本。
(2)登记日志文件。日志文件时用来记录事务对数据库的更新操作的文件。日志的内容主要包括事务标记(指明是那个事务)、操作的类型(增删改查)、操作对象、旧值和新值。
(3)先写日志文件,后写数据库。写日志文件和写数据库是两个不同的操作。故障可能会发生在这两个操作之间。如果先写数据库后写日志文件,那将无法恢复这个修改。如果先写日志后写数据库,那只会过写了一次数据库,可以undo解决,不影响数据库的正确性。
15、故障类型
(1)事务故障。发生在事务运行至终点前,又事务本身发现的,是非预期的,无法由应用程序解决。
事务恢复是由系统自动完成的,利用日志文件撤销此事务对数据库的修改。
反向扫描日志文件,查找事务的操作。对更新操作进行逆操作,直到此事务的开始标记。
(2)系统故障。是指造成系统停止运转的任何事件,使得系统要重新启动。
系统故障的恢复是系统重启后自动完成的,撤销(undo)未完成的事务,重做(redo)已提交的事务。
正向扫描日志文件,记录故障发生前已提交的事务和提交的事务,分别转入重做队列和撤销队列。最后进行重做(正向扫描,重做更新操作)和撤销(逆向扫描,做逆操作)。
(3)介质故障。是指磁盘或者存储介质的物理结构和日志被破坏。
恢复方法是重装数据库,重做已完成的事务。
恢复方法:装入最新副本,使数据库恢复到最近一次转存时候的一致性状态。装入日志文件副本,查找记录已完成的事务和未完成的事务。分别进行重做和撤销。

  • 45
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值