包含数据结构、计算机网络、操作系统、数据库、热点概念

数据结构

1、顺序存储和链式存储优缺点比较
① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。
优点:存储密度大(=1),易于查找和修改。
缺点:插入或删除元素时不方便;存储空间利用率低,预先分配内存可能造成存储空间浪费。
②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针
优点:插入或删除元素时很方便,使用灵活,存储空间利用率高。
缺点:存储密度小(<1),查找和修改需要遍历整个链表。

2、数据结构的存储结构(4个)和对应的存储模式(1对1 1对多 多对多)
4种逻辑结构:
1.集合结构:数据元素之间没有任何关系.
2.线性结构:数据元素之间定义了线性关系.1对1
3.树形结构:数据元素之间定义了层次关系 1对多.
4.图状结构:数据元素之间定义了网状关系 多对多.
4种数据存储结构:
1.顺序存储结构:借助数据元素之间的相对位置来表示元素之间的逻辑结构.(vector动态数组、 deque双端队列、stack栈容器、queue队列容器)
2.链式存储结构:借助数据元素之间的元素的指针表示数组元素的逻辑结构.
3.散列存储结构:顺序存储+算列.
4.索引存储结构:顺序存储+索引.

3、最小生成树两种算法优缺点比较
Prim和Kruskal的不同之处在于两者选择的变量不同,Prim算法可以称为“加点法”,每次迭代选择代价最小的边对应的点,加入到最小生成树中。算法从某一个顶点s开始,逐渐长大覆盖整个连通网的所有顶点。而Kruskal主要是应用了并查集的思想,算法可以称为“加边法”,初始最小生成树边数为0,每迭代一次就选择一条满足条件的最小代价边,加入到最小生成树的边集合里。
Prim算法的时间复杂度为O(|V|平方),不依赖于|E|,因此它适用于求解边稠密的图的最小生成树。Kruskal的时间复杂度为O(|E|log|E|),因此它适用于求边稀疏而定点较多的图。

4、hash函数的特点以及如何处理冲突
Hash,也叫哈希或散列,就是把任意长度的输入(也叫预映射),通过散列算法,变换成固定长度的输出,该输出就是散列值。
HASH函数必须具备两个基本特征:单向性 和 碰撞约束。单向性是指其的操作方向的不可逆性,在HASH函数中是指 只能从输入推导出输出,而不能从输出计算出输入;碰撞约束是指 不能找到一个输入使其输出结果等于一个已知的输出结果 或者 不能同时找到两个不同的输入使其输出结果完全一致。一个函数只用同时严格的具备了这样的特性,我们才能认可这样的一个HASH。
解决冲突的方法:
1、开放地址法:基本原理是:当关键字key的哈希地址出现冲突时,计算key的下一个存储地址w1,假如w1被占用;则计算key的下一个存储地址w2,如果w2仍被占用,继续计算key的存储地址w3,w4……直至找到能用的存储地址,将相应元素放入其中。
2、拉链法:也叫链地址法,将哈希值相同的数据元素存放在一个链表中,在查找哈希表的过程中,当查找到这个链表时,必须采用线性查找方法。链地址法适用于经常进行插入和删除的情况。
对于拉链法来说,数组的每一个结点指向一个链表,链表中的每一个结点都存储了散列值为该索引的键值对,而链表的维护需要结点之间的指针来维护。

5、散列表的建立方法
平方取中法:先通过求关键字的平方值扩大相近数的差别,然后根据表长度取中间的几位数作为散列函数值。
除余法:它是以表长m来除关键字,取其余数作为散列地址,即 h(key)=key%m
相乘取整法:首先用关键字key乘上某个常数A(A大于0小于1)并抽取出key.A的小数部分;然后用m乘以该小数后取整
随机数法:选择一个随机函数,取关键字的随机函数值为它的散列地址

6、hash适合存储什么样的数据
表示的自然数太大,或是表示的自然数不连续,或者是不是自然数

7、影响hash表平均查找长度的因素
Hash表的平均查找长度依赖于散列表的装填因子,而不直接依赖于表中记录或hash表长度。当装填因子越大的时候,表示装填的记录越满,发生冲突的可能性越大,查找长度越长。
哈希函数、哈希表的大小、碰撞处理方法

8、排序算法有哪些,及其时间复杂度
直接插入排序:平均时间复杂度 n方
冒泡排序:n方
简单选择排序:n方
快速排序:nlog2 n
堆排序:nlog2 n
2路归并排序:nlog2 n
基数排序:d(n+r)

9、排序最优和最差相同的排序算法
简单选择排序都是n方;堆排序都是nlog2 n;2路归并排序都是nlog2 n;基数排序都是d(n+r)。

10、最差和平均的算法复杂度一样的排序算法
直接插入;冒泡;简单选择;堆排序;2路归并排序;基数排序

11、最好最坏平均都一样的排序算法
简单排序;堆排序;2路归并排序;基数排序

12、怎么确定图是一个环
深度优先遍历该图,如果在遍历的过程中,发现某个节点有一条边指向已经访问过的节点,并且这个已访问过的节点不是当前节点的父节点(这里的父节点表示dfs遍历顺序中的父节点),则表示存在环。
//如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。
算法:第一步:删除所有度<=1的顶点及相关的边,并将另外与这些边相关的其它顶点的度减一。
第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。
如果最后还有未删除顶点,则存在环,否则没有环。
有向图是否有环的判定算法,主要有深度优先和拓扑排序方法。
拓扑排序,如果能够用拓扑排序完成对图中所有节点的排序的话,就说明这个图中没有环,而如果不能完成,则说明有环。

13、简述线索二叉树
传统的二叉树一般都是以链式存储的结构来表示。这样,二叉树中的每个节点都可以用链表中的一个链节点来存储,每个链节点就包含了若干个指针。但是,这种传统的链式存储结构只能表现出二叉树中节点之间的父子关系,而且不能利用空余的指针来直接得到某个节点的在特定的遍历顺序(先序,中序,后序)中的直接前驱和直接后继。
为了在二叉树中引入结点的前驱后继关系,引入了线索二叉树。 线索化:对二叉树以某种遍历顺序进行扫描并为每个节点添加线索的过程称为二叉树的线索化。进行线索化的目的是为了加快查找二叉树中某节点的前驱和后继的速度。 那么在有N个节点的二叉树中需要利用N+1个空指针添加线索。
//若无左子树,则将左指针指向其前驱结点;若无右子树,则将右指针指向其后继结点。

14、汉罗塔:Hn=Hn-1 x 2 + 1.

15、图的存储
邻接矩阵:用一个一维数组存储图中顶点的信息,用一个二维数组存储图中边的信息,存储顶点之间邻接关系的二维数组称为邻接矩阵。
邻接表:邻接表为了避免内存的浪费引入了链式存储,它的处理办法是:
1.用一个一维数组存储顶点,当然你也可以用单链表存储,
2.用单链表存储顶点的邻接点,可以将顶点改为结构体数组,结构体中存放邻接点的指针,邻接点也创建一个结构体,定义指针next存放该顶点的另一个邻接点,这样就可以把该顶点的所有邻接点串起来了。
邻接矩阵的优缺点:
1)优点:a. 便于判断两个顶点是否有联系。确定顶点后再确定矩阵上的相应位置是否非0或非MaxInt即可。
b. 便于计算各个顶点的度。其实也不用计算,数就完事了。对于无向图,多少个(1,n)的值为1,v1的度就是多少;对于有向图,多少个<1,n>的值为1,v1的出度就是多少,多少个<n,1>的值为1,v1的入度就是多少。
2)缺点:a. 不便于增加和删除顶点。非链式结构的通病。
b. 不便于统计边的数目,需要遍历邻接矩阵的所有元素,时间复杂度为O(n²)。无向图遍历完后还要除以2。
c. 空间复杂度高。非链式结构的另一通病,稀疏图(边或弧数较少)尤其浪费空间。
邻接表的优缺点:
1)优点:a. 便于增加和删除顶点。
b. 便于统计边的数量,时间复杂度为O(n+e)。
c. 空间效率高。
2)缺点:a. 不便于判断顶点间是否有联系。
b. 不便于计算有向图各个顶点的入度,需要遍历其余所有起始顶点的单链表。
还有十字链表法和邻接多重表

16、图的深度和广度遍历是什么,在工程中有哪些应用
广度优先搜索BFS:类似于二叉树的层序遍历算法。首先访问起始顶点v,接着从v出发,依次访问v的各个未访问过的邻接顶点w1,w2…,wi的所有未访问过的邻接顶点,再从这些访问过的顶点出发,直至图中所有顶点都被访问过为止。广度优先搜索是一种分层的查找过程,每向前走一步可能访问一批顶点,因此它不是一个递归算法。Dijkstra单源最短路径算法和prim最小生成树算法也应用了类似的思想。
深度优先搜索DFS:类似于树的先序遍历,运用了递归的思想,这种算法所遵循的搜索策略是尽可能深地搜索一个图。首先访问图中某一起始顶点v,然后从v出发,访问与v邻接且未被访问的任一顶点w1,再访问与w1邻接且未被访问的任一顶点w2…重复上述过程,当不能再继续向下访问时,依次退回到最近被访问的顶点,直至所有顶点均被访问过为止。
BFS应用:用来确定在互联网中从一个结点到另一个结点(一个网络到其他网络的网关)的最佳路径,最短路径
DFS应用:拓扑排序,走迷宫

17、树和图的遍历的区别,存储方式;
存储方式:邻接矩阵、邻接表
遍历方式:BFS和DFS

18、两个最短路径算法有什么不同,用于什么情况
Floyd算法是按顺序逐渐允许每个顶点作为中间节点,按照这个中间节点的变化去进行松弛。
Dijsktra算法是根据当前离开始节点最近为标准来确定当前扩展节点,按照这个起始节点的变化去进行松弛。
拓扑排序中使用了哪些数据结构

19、简述二叉排序树
二叉排序树:二叉排序树也叫二叉查找树、二叉搜索树(简称:BST)对于二叉树中的任何一个非叶子节点要求左子节点比当前节点值小,右子节点比当前节点值大(一个空树也可以称为一个二叉排序树)。

20、二叉树和度为二的树的区别
1、度不同
度为2的树要求每个节点最多只能有两棵子树,并且至少有一个节点有两棵子树。二叉树的要求是度不超过2,节点最多有两个叉,可以是1或者0。
2、分支不同
度为2的树有两个分支,但分支没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右子树的次序不能随意颠倒。
3、次序不同
度为2的树从形式上看与二叉树很相似,但它的子树是无序的,而二叉树是有序的。即,在一般树中若某结点只有一个孩子,就无需区分其左右次序,而在二叉树中即使是一个孩子也有左右之分。

21、解释下关键路径和关键活动,什么情况下才有关键路径
在带权有向图中,以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销,称之为用边表示活动的网络,简称AOE网。在AOE网中,有些活动是可以并行进行的。从源点到汇点的有向路径可能有多条,并且这些路径长度可能不同。完成不同路径上的活动所需的时间虽然不同,但是只有所有路径上的活动都已完成,整个工程才能算结束。因此,从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径,把关键路径上的活动称为关键活动。

22、简述背包问题
f[v]=max{f[v],f[v-w[i]]+v[i]}
这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值为f[i-1][v];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-w[i]的背包中”,此时能获得的最大价值就是f [i-1][v-w[i]]再加上通过放入第i件物品获得的价值v[i]。

23、数组和链表有哪些优缺点
数组优点:查找效率高,可随机访问;
数组缺点:1、增删操作不方便,会引起大量元素的移动;
2、内存空间大小固定,不能动态拓展,且容易造成内存浪费。
链表优点:1、增删操作方便,只需移动指针;
2、可动态分配空间,内存利用率高;
链表缺点:不能随机访问,必须从第一个开始遍历,查找效率低。

24、计算机的局部性是什么?
局部性分为时间局部性和空间局部性
时间局部性是指一个信息被访问,那么它在近期很可能再次被访问;
空间局部性是指一个存储位置被访问,那么它附近的存储位置很可能下次被访问。

25、b树
全称Balance-tree(平衡多路查找树),平衡的意思是左边和右边分布均匀。多路的意思是相对于二叉树而言的,二叉树就是二路查找树,查找时只有两条路,而B-tree有多条路,即父节点有多个子节点。
使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。这个数据结构一般用于数据库的索引,综合效率较高。
对于一棵m阶B-tree,每个结点至多可以拥有m个子结点。即遍观整棵树,子节点最多的个数是m,那么这棵树就是m阶树。
所有的叶子结点都出现在同一层次上,即所有叶节点具有相同的深度,等于树高度。并且不带信息(可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。

26、顺序表和链表的区别
相同点
1.都是线性表
2.元素在逻辑上都是连续的(存储上顺序表连续,链表不连续)
3.每个元素都有唯一的前驱和唯一的后继(注意:第一个元素没有前驱,最后一个元素没有后记—>循环链表除外)
不同点
1.底层存储空间不同:
顺序表底层存储空间连续;
链表不连续;
2.插入和删除的方式不同:
顺序表插入和删除得搬移后面的所有元素,效率低,时间复杂度为O(N);
链表不需要搬移后面的元素,效率高,时间复杂度位O(1);
3.随机访问:
顺序表底层空间连续,支持随机访问,访问元素时间复杂度为O(1);
链表底层空间不连续,不支持随机访问,访问元素时间复杂度为O(N);
4.扩容:
顺序表在插入时需要扩容–>开辟新空间,拷贝元素,释放就空间;
链表在插入时不需要扩容;
5.空间利用率:
一般情况顺序表空间利用率较高(链表每个节点中需要存储date和next,顺序表只存储元素date);
链表中的元素存储再一个一个节点中,而每个节点都是malloc出来的:频繁向堆申请小的内存块–造成内存碎片,效率低;

计算机网络

1、TCP/IP 位于哪一层?
TCP位于传输层;IP位于网络层

2、TCP/IP 有几层,为什么没有物理层
有四层,分别是网络接口层,网际层,传输层和应用层。网络接口层类似于OSI模型中的物理层和数据链路层。

3、TCP和UDP有什么区别
TCP面向连接,提供可靠的服务,通过TCP连接传送的数据是无差错的且按序到达;UDP是无连接的,它是一种尽最大努力交付,不能保证可靠交付,但是UDP具有较好的实时性。

4、TCP怎么实现可靠传输
TCP保证可靠性主要依靠几种机制:首先是TCP将每个字节的数据都进行了编号,就是序列号,序列号能够保证数据的按序到达;第二是确认应答机制,即ACK,接收方对于按序到达的数据会发送ACK进行确认;第三是超时重传机制,当发送方发出后在一定时间内未收到接收方的确认,发送方就会进行重传;第四是流量控制,接收端处理数据的速度是有限的,如果发送方发送数据的速度过快,导致接收端的缓冲区满,而发送方继续发送,就会造成丢包,继而引起丢包重传等一系列连锁反应,因此TCP支持根据接收端的处理能力,来决定发送端的发送速度。

5、TCP怎么解决拥塞控制
拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程。拥塞控制主要是慢开始、拥塞避免、快重传和快恢复四个算法。发送方维持一个叫做拥塞窗口cwnd(congestion window)的状态变量,慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞,就把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1。
TCP的拥塞控制采用了四种算法,即慢开始、拥塞避免、快重传和快恢复。
(1)慢开始算法
在TCP刚刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd = 1,即一个最大报文段长度MSS。每收到一个对新报文段的确认后,将cwnd 加1,即增大一个MSS。用这样的方法逐步增大发送方的拥塞窗口 cwnd,可使分组注入网络的速率更加合理。
(2)拥塞避免算法
拥塞避免算法的做法如下:发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加一个MSS的大小,而不是加倍,使cwnd按线性规律缓慢增长(即加法增大),而当出现一次超时(网络拥塞)时,令慢开始门限ssthresh等于当前cwnd的一半(即乘法减小)。
(3)快重传
快重传技术使用了冗余ACK来检测丢包的发生。同样,冗余ACK也用于网络拥塞的检测(丢了包当然意味着网络可能出现了拥塞)。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。
(4)快恢复
快恢复算法的原理如下:发送端收到连续三个冗余ACK(即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh设置为出现拥塞时发送方cwnd的一半。与慢开始(慢开始算法将拥塞窗口cwnd 设置为1)的不同之处是,它把cwnd 的值设置为慢开始门限ssthresh改变后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。

6、怎么判断是不是拥塞了,拥塞了怎么办
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况叫做拥塞。如果网络得吞吐量随着网络负载的增大反而下降,那么网络就可能进入拥塞状态。拥塞后可以使用四种算法解决拥塞控制。

7、UDP有哪些应用
UDP是无连接的传输层协议,是一种尽最大努力的交付,是面向报文的。UDP应用于对销量要求相对高,但是对准确性要求相对低的场景,比如QQ聊天,网络语音电话(就是即时通讯,速度要求高,但是出现偶尔断续不是太大问题)。

8、计算机网络中有哪些流量控制
流量控制:如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。流量控制的方法有三个,停止-等待协议、滑动窗口-后退N帧协议(GBN)、滑动窗口-选择重传协议(SR)。停止等待协议:每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧;
停止-等待协议:发送窗口大小=1,接收窗口大小=1;
后退N帧协议(GBN):发送窗口大小>1,接收窗口大小=1;
选择重传协议(SR):发送窗口大小>1,接收窗口大小>1;

9、子网掩码的作用
子网掩码是一种用来指明一个IP地址所标示的主机处于哪个子网中。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

10、交换机、路由器和集线器的区别
路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记 录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
  交换机:(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。发生在数据链路层。
  集线器:(Hub)是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。发生在物理层。
路由器的转发依据是IP地址,而交换机的转发依据是Mac地址,路由器能够连接不同的网络,交换机是连接局域网中的电脑。交换机和集线器都是基于MAC识别的,但是通过集线器连接的电脑共享带宽,而交换机中每个端口都有一条独占的带宽。
集线器不能打破冲突域和广播域,交换机可以打破冲突域但是不能分割广播域,路由器则可以打破冲突域也能分割广播域。

11、交换机能不能用在大型网络中
可以。三层交换机就是具有部分路由器功能的交换机,他的最重要目的是加快大型局域网内部的数据交换。三层交换技术就是二层交换技术+三层转发技术。

12、IP地址和MAC地址的区别
IP地址是指internet protocol address,是ip address的缩写。Ip地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
MAC地址又称为物理地址,用来定义网络设备的位置。它是烧录在网卡或者接口上的物理地址,具有全球唯一性。
对于网络上的某一设备,其IP地址是基于网络拓扑设计出的,可以改动,但是MAC不能改动。IP地址为32位,MAC为48位,IP地址位于网络层,而Mac位于数据链路层。

13、网络层的设备有哪些
路由器:路由器是一种具有多个输入端口和多个输出端口的专用计算机,其主要任务是路由选择和分组转发。是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
三层交换机、防火墙

14、计算机网络中各层和网络中的地址对应关系
物理地址:即mac地址,在数据链路层和物理层使用。
逻辑地址:即IP地址,IP地址标识着网络一个主机的位置,每个IP地址都是由32位(IPv4地址,4个字节)组成。在网络层及以上使用。
域名地址:仅仅在应用层用到。域名地址,就是IP地址的符号化,一个ip可以绑定多个域名,但是一个域名不能同时解析到多个IP地址下,域名的出现就是为了方便人们记忆。

15、IP地址的组成,有几位
IP地址一共有32位,由网络号和主机号两部分组成。IP地址由4个8位的二进制数组成,但是二进制可读性差,所以将二进制转换成十进制表示,点分十进制。可以分为a,b,c,d,e五类,代表不同的用法,比如私有地址、公有地址。

16、OSI模型有几层
共七层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。低三层统称为通信子网,它是为了联网而附加的通信设备,完成数据的传输功能。高三层统称为资源子网,它相当于计算机系统,完成数据的处理等功能。

17、传输层的作用
传输层位于OSI模型的第四层,传输单位是报文段(TCP)或用户数据报(UDP),传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。传输层还有复用分用的功能。复用是指多个应用层进程可以同时使用下面传输层的服务,分用是指传输层把收到的信息分别交付给上面应用层中相应的进程。

18、传输层有什么协议
传输层主要是负责应用程序之间的数据传输,传输层主要的协议有TCP和UDP。UDP:无连接、不可靠、面向数据报的传输。无连接是指通信的时候不需要建立连接,只需要知道对方的地址信息,就可以发送数据;不可靠是指在通信中并不保证数据安全可靠以及有序的到达对方;面向数据报是指在UDP传输时,对于上层协议传过来的数据既不合并也不拆分,直接添加上一个UDP头部就开始传输。
TCP是有连接的可靠的面向字节流的传输。TCP的可靠主要是使得数据能够有序并且安全不丢包的到达对端,有序是通过协议中的序号来管理包序,安全则是通过确认应答、超时重传、流量控制、拥塞控制、以及校验字段来实现。

19、各层作用
物理层:主要对物理连接方式,电气特性,机械特性等制定统一标准,传输比特流。
数据链路层:不同的网络类型,发送数据的机制不同,数据链路层就是将数据包封装成能够在不同网络传输的帧。能够进行差错检查,但不纠错,检测出错误丢掉该帧。
网络层:主要任务是把网络层的协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务。关键问题是对分组进行路由选择,并实现流量控制、拥塞控制、差错控制等功能。
传输层:传输层负责主机中两个进程之间的通信,功能是为端到端连接提供可靠的传输服务,为端到端连接提供流量控制、差错控制、服务质量、数据传输管理等服务。传输层还有复用分用的功能。复用是指多个应用层进程可以同时使用下面传输层的服务,分用是指传输层把收到的信息分别交付给上面应用层中相应的进程。
会话层:会话层允许不同主机上的各个进程之间进行会话。会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的会话。
表示层:表示层主要处理在两个通信系统中交换信息的表示方式。不同机器采用的编码和表示方法不同,使用的数据结构也不同。为了使不同表示方法的数据和信息之间能互相交换,表示层采用标准的编码形式。
应用层:为特定类型的网络应用提供访问OSI参考模型环境的手段。

20、内部网关协议有哪些,各有什么特点
内部网关协议(IGP)在一个域中选择路由。一个域(domain)是一组主机和使用相同路由选择协议的路由器集合。内部网关协议主要有RIP和OSPF。
RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议。RIP是一种分布式的、基于距离向量的路由选择协议。RIP协议要求网络中的每一个路由器都要维护从它自己到每一个目的网络的距离记录。RIP协议让互联网中的所有路由器都和自己相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(跳数最少)。RIP是应用层协议,它使用UDP传送数据(端口520),RIP选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。
RIP的特点:仅和相邻路由器交换信息;路由器交换的信息是当前路由器所知道的全部信息,即自己的路由表;按固定的时间间隔交换路由信息
RIP优点:实现简单、开销小、收敛过程较快
RIP缺点:限制了网络的规模,它能使用的最大距离为15;路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大;网络出现故障的时候,会出现慢收敛现象。
开放最短路径优先OSPF(Open Shortest Path First)是为克服RIP的缺点开发出来的。“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。“最短路径优先”是因为使用了Dijkstra提出的最短路径算法。OSPF最主要的特征就是使用分布式的链路状态协议,而不是像RIP那样的距离向量协议。
OSPF向本自治系统的所有路由器发送消息,而RIP协议仅仅向自己相邻的几个路由器发送消息。OSPF只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此消息。在RIP协议中,不管网络拓扑是否有变化,路由器之间都要定期交换路由表的信息。OSPF是网络层协,它不适用UDP或TCP,而直接用IP数据报传送;而RIP是应用层协议,它在传输层使用UDP。

21、路由表有哪些字段/ 路由表表项
1 destination:目的地址,用来标识IP包的目的地址或者目的网络。
2 mask:网络掩码,与目的地址一起标识目的主机或者路由器所在的网段的地址。
3 pre:标识路由加入IP路由表的优先级。可能到达一个目的地有多条路由,但是优先级的存在让他们先选择优先级高的路由进行利用。
4 cost:路由开销,当到达一个目的地的多个路由优先级相同时,路由开销最小的将成为最优路由。
5 interface:输出接口,说明IP包将从该路由器哪个接口转发。
6 nexthop:下一跳IP地址,说明IP包所经过的下一个路由器。

22、路由器内部有哪些协议
RIP、OSPF
BGP(Border Gateway Protocol):边界网关协议。
与内部网关协议不同的是,其不在于发现和计算路由,而在于控制路由的传播和选择最佳路由,BGP只力求寻找一条能够到达目的网络且比较好的路由。BGP是应用层协议,它是基于TCP的。
BGP工作原理:每个自治系统的管理员要选择至少一个路由器作为该自治系统的“发言人”,BGP发言人要和其他自治系统中的发言人交换路由信息,要先建立TCP连接,然后在此连接上交换BGP报文以建立对话,再利用对话交换路由信息。

23、你把家里的路由器看成什么设备
路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。

24、路由器的作用和功能
路由器主要完成两个功能,分组转发和路由计算。前者处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度;后者通过和其他路由器基于路由协议的交互,完成路由表的计算。路由器能够使异构网络互联,连接不同的网络。
第一,网络互连:路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
第二,数据处理:提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
第三,网络管理:路由器提供包括路由器配置管理、性能管理、容错管理和流量控制等功能。

25、路由的定义
“路由”是一个网络层的术语。它是指从某一网络设备出发去往某个目的地的路径;路由表则是若干条路由信息的一个集合体。在路由表中,一条路由信息也被称为一个路由项或一个路由条目。

26、计算机网络有哪些地址
(1)IP(IPV4、IPV6)地址
(2)MAC地址

27、mac和IP怎么相关转换
使用ARP协议。ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址。

28、MAC地址是什么地址,为什么要有MAC地址
MAC地址又称为物理地址,用来定义网络设备的位置。它是烧录在网卡或者接口上的物理地址,具有全球唯一性。Mac地址的长度为48位。
因为IP只是逻辑上的标识,任何人都能随意修改,因此不能用来标识用户;而MAC地址是固化在网卡里的,很难被顶替,因此局域网采用了MAC地址来标识具体用户的方法,也就是IP和MAC的绑定,因此是需要MAC地址的。

29、计算机网络的拓扑结构
网络拓扑结构按照几何图形的形状可分为四种类型:总线拓扑、环型拓扑、星型拓扑和网状拓扑。不同的网络拓扑结构适用于不同的网络规模。例如局域网应用的是总线、星型或环型拓扑结构,而广域网则采用网状拓扑结构。
在星型拓扑结构中,网络中的每个节点通过一个中央设备,如集线器连接在一起。网络中的每个节点将数据发送到中央设备,再由中央设备将数据转发到目标节点。
环型拓扑结构是由连接成封闭回路的网络节点组成的,每一节点与它左右相邻的节点连接。环型网络常使用令牌环来决定哪个节点可以访问通信系统。
在总线型结构中,所有网上计算机都通过相应的硬件接口直接连在总线上,任何一个节点的信息都可以沿着总线向两个方向传输扩散,当一个节点向另一个节点发送数据时,所有节点都将被动地侦听该数据,只有目标节点接收并处理发送给它的数据,其他节点将忽略该数据。这类似于广播电台,故总线网络也被称为广播式网络。
在网络拓扑结构中,每两个节点之间都直接互连。网状拓扑常用于广域网,由于对两点之间的数据传输提供多条链路,因此,网状拓扑是最具容错性的网络拓扑结构。

30、计算机网络按照覆盖可以划分成什么
广域网(WAN):是连接不同地区局域网或城域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里。
城域网(MAN):是在一个城市范围内所建立的计算机通信网。
局域网(LAN):覆盖范围较小,通常是直径为几十米到几千米的区域。传统上,局域网使用广播技术,而广域网使用交换技术。
个人区域网(PAN):覆盖区域的直径为10m,是指在个人工作的地方将消费电子设备用无线技术连接起来的网络。

31、你认为计算机网络的定义是什么
计算机网络是一个将分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。简而言之,计算机网络就是一些互联的、自治的计算机系统的集合。

32、网关是什么
网关的英文名称:gateway,又叫做网间连接器、协议转换器。网关是在采用不同体系结构或协议的网络之间进行互通时,用于提供协议转换、路由选择、数据交换等网络兼容功能的设施。
网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。

33、数据链路层的三个基本问题和解决办法
1、封装成帧:就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
2、透明传输:传输过程中,如果数据中的某个字符恰好和SOH或EOT这种控制字符一样,数据链路层就会错误地找到帧的边界,把剩下的部分数据丢弃。
解决方法:字节填充或字符填充。发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”(其十六进制编码是 1B),接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
3、差错检查:在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。为了保证数据传输的可靠性,传输数据时必须采用各种差错检测措施。使用的检错技术为循环冗余检验CRC(Cyclic Redundancy Check)。CRC 码的基本思想:a,在信息报文上加上一些检查位,构成一个特定的待传报文,使它能被一个事先约定的多项式(生成多项式)除尽。b,接收方收到报文后,再用同样的生成多项式去除收到的报文多项式,可以除尽表示传输无误,否则不正确。

34、传输层端口号和http、ftp、web的端口号
FTP的端口是21;DHCP的端口号是67;pop3/SMTP的端口号是110/25;DNS的端口号是53;HTTP通信用的端口号是80;

35、已经有交换机了,还需要CSMA/CD协议吗
如果是全双工模式下,则不需要。在半双工模式下,一个端口中的接受和发送就能够产生冲突,此时CSMA/CD冲突检测机制将侦听在这个端口上是否有数据正在被接收而占用。所以,交换机在半双工工作模式下工作,网卡会启用CSMA/CD冲突检测机制来避免冲突的发生。

36、ARP协议
ARP 工作在网络层,其工作原理如下:主机A 欲向本局域网上的某台主机B 发送IP 数据报时,先在其ARP 高速缓存中查看有无主机B 的IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC 帧,然后通过局域网将该MAC 帧发往此硬件地址。如果没有,那么就通过使用目的MAC 地址为FF-FF-FF-FF-FF-FF 的帧来封装并广播ARP 请求分组,使同一个局域网里的所有主机收到ARP 请求。主机B 收到该ARP 请求后,向主机A 发出响应ARP 分组,分组中包含主机B 的IP与MAC 地址的映射关系,主机A 在收到后将此映射写入ARP 缓存,然后按查询到的硬件地址发送MAC 帧。ARP 由于“看到了"IP 地址,所以它工作在网络层,而NAT路由器由于“看到了“端口,所以它工作在传输层。

37、IPv4的地址是不够用的,怎么处理这个问题
解决“IP地址耗尽”问题的举措有三种:
1、采用无类别编址CIDR,使IP地址的分配更加合理
2、采用网络地址转换(NAT)方法以节省全球IP地址
3、采用具有更大地址空间的新版本的IPv6
其中前两个方法只是延长了IPv4地址分配完毕的时间,只有第三种方法从根本上解决了IP地址的耗尽问题。
什么是CIDR(无分类域间路由选择)?
无分类域间路由选择是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分。
其特点主要有:
1、消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间。CIDR使用“网络前缀”的概念代替子网络的概念。因此,IP地址的无分类两级编址为:IP::=<网络前缀>,<主机号>。
2、将网络前缀都相同的连续IP地址组成“CIDR地址块”。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的路由选择信息的交换,从而提高网络性能。
什么是NAT?
NAT即网络地址转换,是指通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址可以重用,因此NAT大大节省了IP地址的消耗。
使用NAT的时候需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由至少有一个有效的外部全球地址。
普通的路由器在转发IP数据报的时候,不改变其源IP地址和目的IP地址。而NAT路由器在转发IP数据报的时候,一定要更换其IP地址。普通路由器仅工作在网络层,而NAT路由器转发数据时需要查看和转换传输层的端口号。
什么是IPv6?
IPv6的主要特点:
1、更大的地址空间。IPv4有32位,而IPv6有128位。
2、灵活的首部格式。IPv6将IPv4的校验和字段彻底移除。
3、允许协议继续扩充。
4、支持即插即用,即自动配置。
5、IPv6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片。IPv6只能在主机处分片,而IPv4可以在路由器和主机处分片。
6、增大了安全性。

38、子网掩码的作用
同一个IP地址根据不同子网掩码,会划分出不同的网络号和机器号。
子网掩码就是用来遮掩IP地址并划分网段的工具,根据遮掩的位数不同来划分不同的网段

39、TCP四次挥手的区别
第一次挥手:客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送
第二次挥手:服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
第三次挥手:服务器B关闭与客户端A的连接,发送一个FIN给客户端A
第四次挥手:客户端A发回ACK报文确认,并将确认序号设置为收到序号加1

40、为什么建立连接协议是三次握手,如果两次挥手会怎么样?
TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。
如果采用两次的话,会出现下面这种情况。
比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;
于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。传完东西后,断开。结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。

41、正向代理与反向代理区别
正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。
反向代理正好相反。对于客户端来说,反向代理就好像目标服务器。并且客户端不需要进行任何设置。客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反向代理后面的服务,也因此不需要客户端做任何设置,只需要把反向代理服务器当成真正的服务器就好了。
区别:正向代理需要你主动设置代理服务器ip或者域名进行访问,由设置的服务器ip或者域名去获取访问内容并返回;而反向代理不需要你做任何设置,直接访问服务器真实ip或者域名,但是服务器内部会自动根据访问内容进行跳转及内容返回,你不知道它最终访问的是哪些机器。
正向代理是代理客户端,为客户端收发请求,使真实客户端对服务器不可见;
而反向代理是代理服务器端,为服务器收发请求,使真实服务器对客户端不可见。

42、TCP的粘包问题怎么解决
TCP粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数据的头紧接着前一包数据的尾,出现粘包的原因是多方面的,可能是来自发送方,也可能是来自接收方。
1、使用带消息头的协议、消息头存储消息开始标识及消息长度信息,服务端获取消息头的时候解析出消息长度,然后向后读取该长度的内容。
2、设置定长消息,服务端每次读取既定长度的内容作为一条完整消息,当消息不够长时,空位补上固定字符。
3、设置消息边界,服务端从网络流中按消息编辑分离出消息内容,一般使用‘\n’。

43、解释TCP/IP的三次握手
step1:首先客户机TCP向服务器TCP发送连接请求报文,报文中SYN=1,随机发送一个序号seq=x;
step2:服务器TCP接收到连接请求报文后,若同意连接,则返回确认报文,且为该TCP连接分配TCP变量和资源,确认报文中SYN=1,ACK(确认位字段)=1,ack(确认号字段)=x+1,seq=y;
step3:客户机接收到服务器的确认连接报文后,同样返回确认报文,且为该TCP连接分配TCP变量和资源,确认报文中,ACK=1,ack=y+1,seq=x+1。

44、说出socket(套接字)的有关含义
套接字是由主机IP地址和端口号组成,是传输层在进行端到端通信时两端连接的端点。两个网络应用程序进行数据传输时,必须创建套接字来完成。

45、防火墙技术的特点及其组成部分
防火墙是由计算机硬件和软件组成的系统,部署于网络边界,是连通内部网络和外部网络的桥梁。
防火墙技术:包过滤、应用代理等
特点:1、防火墙可防止非法用户进入内部网络,减少内网中主机的风险;
2、集中管理内部网络,增强保密性;
3、不能防范来自内部的攻击;
4、不能防范未知的威胁。

46、谈谈分段的地址结构变化
分页的作业地址空间是一维的,而分段的作业地址空间是二维的。分段地址结构为:<段号,段内偏移量>
将作业分成若干个逻辑段(大小可不同),每个段都有自己的段号,然后再将每个段分成若干个大小相同的页。

47、HTTP 与 HTTPS 的区别是什么?
(1)HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,一般免费证书较少,因而需要一定费用。(以前的网易官网是http,而网易邮箱是 https 。)
(2)HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
(3)HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
(4)HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息)。

操作系统

1、缓存满了怎么调度
有三种调度方法:1.FIFO(First In First out):先见先出,淘汰最先近来的页面,新进来的页面最迟被淘汰,完全符合队列。
2.LRU(Least recently used):最近最少使用,淘汰最近不使用的页面
3.LFU(Least frequently used): 最近使用次数最少, 淘汰使用次数最少的页面

2、程序和软件的区别
程序和软件的区别是,软件是为了完成特定的功能,解决特定的问题而用计算机语言编写的命令序列集合,可以理解为应用程序的集合。而应用程序是软件的一个组成部分,它是软件的必要元素。计算机软件是计算机系统中程序和文档的总称

3、内存管理有什么方式
页式存储管理:页式存储管理是把主存储器划分成大小相等的若干区域,每个区域称为一块,并对它们加以顺序编号,如0#块、1#块等等。与此对应,用户程序的逻辑地址空间划分成大小相等的若干页,同样为它们加以顺序编号,从0开始,如第0页、第1页等。页的大小与块的大小相等。分页式存储管理的逻辑地址由两部分组成:页号和页内地址。

优点:没有外部碎片,程序不必连续存放;缺点:要求程序全部装入内存,没有足够的内存,程序不能执行
段式存储管理:逻辑地址格式:段号和段内地址

优点:没有内部碎片;缺点和页式存储管理的一样。
区别:
1、页是信息的物理单位,是系统管理的需要而不是用户的需要;而段则是信息的逻辑单位,它含有一组意义相对完整的信息,分段是为了更好地满足用户的需要。
2、页的大小固定且由系统决定,因而一个系统只能有一种大小的页面;而段的长度却不固定,由用户所编写的程序决定,通常由编译程序对源程序进行编译时根据信息的性质来划分。
3、分页式作业的地址空间是一维的,页间的逻辑地址是连续的;而分段式作业的地址空间则是二维的,段间的逻辑地址是不连续的。

段页式存储管理:用户对作业采用分段组织,每段独立编程,在主存空间分配时,再把每段分成若干个页面,这样每段不必占据连续的主存空间,可把它按页存放在不连续的主存块中。逻辑地址格式:段号+页号+页内地址

4、进程阻塞
正在运行的进程由于提出系统服务请求(如I/O操作),但因为某种原因未得到操作系统的立即响应,或者需要从其他合作进程获得的数据尚未到达等原因,该进程只能调用阻塞原语把自己阻塞,等待相应的事件出现后才被唤醒。

5、操作系统为什么会有进程
进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;如果没有并发,无法高效处理操作。

6、进程与线程之间的关系
进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;
线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。

7、进程通信的方式
管道:管道是指用于连接一个读进程和一个写进程以实现它们之间通信的一个共享文件(pipe文件)。1.互斥,即当一个进程正在对pipe执行读/写操作时,其它进程必须等待;2.同步,当一个进程将一定数量的数据写入,然后就去睡眠等待,直到读进程将数据取走,再去唤醒。读进程与之类似。
消息队列:消息队列,就是一个消息的链表,是一系列保存在内核中消息的列表。用户进程可以向消息队列添加消息,也可以向消息队列读取消息。
信号量:在进程访问临界资源之前,需要测试信号量,如果为正数,则信号量-1并且进程可以进入临界区,若为非正数,则进程挂起放入等待队列,直至有进程退出临界区,释放资源并+1信号量,此时唤醒等待队列的进程。信号量本身就是临界资源,所以必须是原子操作。
共享内存:共享内存是最快的进程间通讯的方式

8、进程调度的策略有哪些
1、先来先服务调度算法:先来先服务(FCFS)调度算法是一种最简单的调度算法,每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。
2、高优先权优先调度算法:该算法是把处理机优先分配给就绪队列中优先权最高的进程。
3、时间片轮转调度算法:系统还是按照先来先服务调度就绪进程,但每次调度时,CPU都会为队首进程分配并执行一个时间。执行时间片用完后计时器即产生时钟中断,停止该进程并将它送到队尾,其他依次执行。这样保证系统能在给定的时间内执行所有用户进程的请求。
4、多级反馈队列调度算法:多级反馈队列调度算法则不必事先知道各种进程所需的执行时间,而且还可以满足各种类型进程的需要,因而它是目前被公认的一种较好的进程调度算法。实施过程:
(1) 应设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,第二个队列次之,其余各队列的优先权逐个降低。
(2)当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾。
(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;
5、高响应比优先调度算法:根据计算响应比,高者优先。响应比=响应时间/要求服务时间。

9、进程和线程的区别
①就调度而言。传统操作系统,进程是资源分配和调度的基本单位,也是拥有资源的基本单位,引入线程后,线程是资源分配和调度的基本单位,而进程是拥有资源的基本单位。
②就并发性而言。不同的进程可以并发执行,而同一进程中的不同线程也可以并发执行,因此线程的并发性更高。
③就资源占有而言。进程是拥有资源的基本单位,而线程除了自身所必须分配的那一点资源外,基本上不占用资源。
④就开销而言。进程的创建和撤销,系统都需要为之分配和回收资源,开销大,而线程切换时,系统只需要保存和设置少量寄存器的内容,开销很小。

10、虚电路和数据报的区别
虚电路和数据报都是分组交换技术。
①数据报是无连接的数据交换,而虚电路是面向连接的数据交换;
②数据报的分组都是通过独立的路由选择和转发,而同属于一条虚电路的分组按照同一路由转发;
③数据报不保证数据的可靠交付,虚电路可靠性由网络保证;
④数据报不保证分组的有序到达,虚电路保证分组的有序到达。

11、流水线的性能指标有哪些?
流水线是指把一个重复的过程分解为若干子过程,每个子过程与其他过程并行运行。
性能指标:吞吐量、加速比、效率
吞吐量是指单位时间内流水线所完成的单位数量;
加速比是指完成相同任务的前提下,使用流水线所花时间和不使用流水线所花时间之比;
效率是指流水线的设备利用率。

12、解释周期窃取(周期挪用)的概念
这种情况出现于DMA传送方式中,CPU要访存,I/O设备也要访存,两者发生冲突时。此时,I/O访存优于CPU访存,I/O可以窃取一两个存取周期占用总线,使得CPU延缓了一两个周期访问主存。

13、临界区与互斥量的概念和区别
临界区是指进程中访问临界资源的那段程序;
互斥量是用来保证共享数据操作的完整性,使得在任一时刻,只有一个线程访问该对象。
两者区别:互斥量和信号量在系统的任何进程里都是可见的,也就是说,一个进程创建了一个信号量或互斥量,另一个进程试图去获取该锁是合法的。然而,临界区的作用范围仅限于本进程,其它进程无法获取该锁。

14、时延
时延指数据(报文/分组/比特流)从一端传送到另一端所需的时间,也叫延迟或迟延。
发送时延,pc端的数据传输到信道上所用的时间,也叫信道带宽
传播时延,传播时延是数据包从路由器一端传输到另一端所需要的时间排队时延,排队时延是当前数据包等待前面数据包传输完毕所需要的时间
处理时延,路由器或交换机处理数据,排错,寻找下一个数据接收设备所用的时间
传输时延:传输时延是路由器将数据包的所有比特传输(推)向链路所需要的时间

15、银行家算法
当一个进程申请使用资源的时候,银行家算法通过先试探分配给该进程资源,然后通过安全性算法判断分配后的系统是否处于安全状态,若不安全则试探分配作废,让该进程继续等待。
本质就是两个部分,第一部分是判断现在执行的进程安不安全?第二部分是判断给出一资源后安不安全 去找个一个安全序列

16、中断向量
中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。
所有中断的中断服务程序入口地址构成一个表,称为中断向量表;

17、五种CPU与外设交换方式
1、程序 I/O 方式。早期的计算机系统中, 没有中断系统,所以CPU和I/O设备进行通信,传输数据时CPU速度远快于I/O设备,于是CPU需要不断测试I/O设备,看其是否完成了传输
2.当某进程要启动某个 I/O 设备工作时,便由 CPU 向相应的设备控制器发出一条 I/O 命令,然后立即返回继续执行原来的任务。仅当输完一个数据时,才需 CPU 花费极短的时间去做些中断处
3.DMA方式(直接存储器访问)
通过在I/O设备和内存之间开启一个可以直接传输数据的通路,采用DMA控制器来控制一个数据块的传输,CPU只需在一个数据块传输开始阶段设置好传输所需的控制信息,并在传输结束阶段做 进一步处理。
4.I/O通道控制方式
虽然DMA方式比起中断方式来已经显著地减少了CPU的干预,即已由以字(节)为单位的干预减少到以数据块为单位的干预。但CPU每发出一条I/O指令,也只能去读/写一个连续的数据块。而 当我们需要一次去读多个数据块且将它们分别传送到不同的内存区域,或者相反时,则需由CPU 分别发出多条I/O指令及进行多次中断处理才能完成。
---- 通道控制方式与DMA控制方式类似,也是一种以内存为中心,实现设备与内存直接交换数据的控制方式。
---- 与DMA控制方式相比,通道方式所需要的CPU干预更少,而且可以做到一个通道控制多台设备,从而进一步减轻了CPU负担。
---- 通道本质上是一个简单的处理器,专门负责输入、输出控制,具有执行I/O指令的能力,并通过执行通道I/O程序来控制I/O操作。
---- 通道的指令系统比较简单,一般只有数据传送指令、设备控制指令等。

18、简述处理机管理、文件管理
处理机管理(进程控制、进程同步、进程通信、死锁处理、处理机调度)
存储器管理(提高内存利用率,内存的分配与回收、地址映射、内存保护与共享、内存扩充)
文件管理(计算机中的信息都是以文件的形式存在的)
设备管理(完成用户的I/O请求,方便用户使用设备、并提高设备的利用率)

19、介绍一下实时操作系统和分时操作系统
分时(Time Sharing)操作系统的工作方式是:一台主机连接了若干个终端,每个终端有一个用户在使用;
实时操作系统(RealTimeOperatingSystem,RTOS)是指使计算机能及时响应外部事件的请求,在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作。

20、说一下并行和串行
1、数据传送方式不同:串行口传输方式为数据排成一行、一位一位送出接收也一样,并行口传输8位数据一次送出.
2、针脚不同:串行口针脚少、并行口针脚多.
3、用途不同:串行口现在只用作控制接口、并行口多用作打印机、扫描仪等接口。

数据库

1、数据库并发机制
锁分两种,一个叫 悲观锁,一种称之为 乐观锁。事实上,无论是悲观锁还是乐观锁,都是人们定义出来的概念,是一种解决问题的思想。因此,不仅仅在数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernate、tair等都有类似的概念。比如,在线程并发处理中, Synchronized内置锁 就是悲观锁的一种,也称之为 独占锁,加了synchronized关键字的代码基本上就只能以单线程的形式去执行了,它会导致其他需要该资源的线程挂起,直到前面的线程执行完毕释放所资源;而 乐观锁是一种更高效的机制,它的原理就是每次不加锁去执行某项操作,如果发生冲突则失败并重试,直到成功为止,其实本质上不算锁,所以很多地方也称之为 自旋。
在解决数据库的事务并发访问问题时,虽然将事务串形化可以保证数据在多事务并发处理下不存在数据不一致的问题,但串行执行使得数据库的处理性能大幅度地下降,常常是我们接受不了的。所以,一般来说,我们常常结合事务隔离级别和其它并发机制来保证事务的并发,以此来兼顾事务并发的效率与安全性。事实上,大多数数据库的隔离级别都会设置为 Read Committed(只能读取其他事务已提交的数据),然后由应用程序使用乐观锁/悲观锁机制来解决其他事务并发问题,比如不可重复读问题。特别地,乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。
特别地,乐观锁的理念是:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性;而悲观锁的理念是假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。

2、建立数据库的流程
1.修改当前数据库,用于删除;2.如果存在数据库,则进行删除;3.创建数据库:4.使用数据库:5.删除表(先删除外键表,再删除主键);6.创建数据表:7.插入数据

3、数据库范式
第一范式 1NF->每一列的属性都是不可再分的属性,属性具有原子性
第二范式 2NF->列之间要有一个主键,各属性都要与主键相关,要求记录具有唯一性即实体
唯一性,不存在部分依赖
第三范式 3NF->列之间不存在传递依赖,每个属性直接依赖于主键

4、数据库完整性
1、实体完整性
实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity属性比如说我们的身份证号码,可以唯一标识一个人。
2、域完整性
域完整性是对数据表中字段属性的约束,通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。限制数据类型,缺省值,规则,约束,是否可以为空,域完整性可以确保不会输入无效的值。
3、参照完整性
参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是NULL。参考完整性维护表间数据的有效性,完整性,通常通过建立外部键联系另一表的主键实现,还可以用触发器来维护参考完整性

4、数据库的索引
数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表中一个或多个列的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息
优点:
1.大大加快数据的检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点:
1.索引需要占用数据表以外的物理存储空间
2.创建索引和维护索引要花费一定的时间
3.当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。
索引类型:唯一索引: UNIQUE;主键索引: primary key

5、数据库的视图
视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。

6、数据库delete和drop的作用
Delete:用来删除表的全部或者一部分数据行;Truncate删除表中的所有数据;Drop命令从数据库中删除表,所有的数据行,索引和权限也会被删除,即删除表的结构

7、数据库触发器
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,会激活促发其执行相应的操作。

8、数据库的三级模式和两级映像
三级模式结构提供了三种级别的数据抽象,即视图级、概念级和物理级。在数据库系统的三级模式结构间存在着二级映像:外模式与模式之间的映像;模式与内模式之间的映像。这种映像实现了数据库系统的数据独立性。

9、数据库死锁
由于多用户、多任务的并发性和事务的完整性要求,当多个事务处理对多个资源同时访问时,若双方已锁定一部分资源但也都需要对方已锁定的资源时,无法在有限的时间内完全获得所需的资源,就会处于无限的等待状态,从而造成其对资源需求的死锁。
① 一次封锁法:一次性将所有要使用的数据全部加锁,否则就不能继续执行
存在的问题:扩大了封锁范围,降低了系统的并发度;
② 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按照这个顺序实施封锁。

10、主键和外键
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键;表的外键是另一表的主键, 外键可以有重复的, 可以是空值

11、数据库DBA、DBMS的作用
带有数据库的计算机系统,除具备一般的硬件、软件外,必须有用以存储大量数据的直接存取存储设备、管理并控制数据库的软件——数据库管理系统(DBMS)、管理数据库的人员——数据库管理员 (DBA)。
用户能不能对数据库进行增删改查
可以,授权后即可。

12、数据库的存储程序
一组存储和执行在数据库服务器端的程序。存储程序总是在服务器的进程或线程的内存中执行的。
存储程序分为3类,分别是:
● 存储过程:有输入和输出参数,可以执行一组sql语句。
● 存储函数:有一个返回值,可以执行一组sql语句,可以传递参数。
● 触发器:执行一组sql语句,由事件驱动自动执行,不能传递参数。

13、数据库的事务
事务就是一个对数据库操作的序列,是一个不可分割的工作单位,要不这个序列里面的操作全部执行,要不全部不执行。

14、sql server中事务的语句有哪些
Begin Transaction:标记事务开始。
Commit Transaction:事务已经成功执行,数据已经处理妥当。
Rollback Transaction:数据处理过程中出错,回滚到没有处理之前的数据状态,或回滚到事务内部的保存点。
Save Transaction:事务内部设置的保存点,就是事务可以不全部回滚,只回滚到这里,保证事务内部不出错的前提下。

15、数据库中怎么消除冗余,举个例子
数据冗余指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。删除冗余数据:使用一个分析的函数RANK()和一个嵌套的子查询来消除冗余数据然后控制应该保留的记录,比如用rank枚举每一个组中的元素,并用order by进行分组,显示的是根据记录的条数的个数来显示尤其对于冗余数据,最后删除即可。

16、数据库的ACID特性
(1)原子性 (Atomicity):事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。
(2)一致性 (Consistency):数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。
(3)隔离性 (Isolation):一个事务所做的修改在最终提交以前,对其它事务是不可见的。
(4)持久性 (Durability):一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。使用重做日志来保证持久性

17、数据库有哪些操作类型
1数据 查询(DQL) 语言 基本构成 SELECT FROM WHERE 这些语句构成
2数据 操纵(DML ) 语言 基本构成 INSERT UPDATE DELETE
3数据 定义(DDL) 语言 基本构成 CREATE TABLE VIEW 表的创建 ,属性定义
4数据 控制 (DCL) 语言 主要时对数据库 进行检测 管理(授权,回滚( SQL>ROLLBACK;),提交数据( COMMIT [WORK]));

18、数据库了解哪些系统
SQL Server:只能在windows上运行;Oracle:能在所有主流平台上运行;SQLite:轻量型嵌入式开源数据库

19、视图和表的区别
1、视图是虚拟的表,视图展示的数据来自于 基本表。
2、视图中不存储具体的数据,而存储的是sql逻辑,基本表的数据发生改变,视图的展示结果也会随着发生改变,它占用少量的物理空间;而表中保存的是数据,占用大的物理空间;
3、对视图的操作跟普通表是一样的,如:创建视图,删除视图。。视图的建立create和删除drop只影响视图本身,不影响对应的基本表。

20、冷备份和热备份区别,和优点缺点
热备份是数据库仍旧处于工作状态时进行备份。是针对归档模式的数据库备份。优点在于当备份时数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。缺点是不能出错,否则后果严重;若热备份不成功,所得结果不可用于时间点的恢复。
冷备份指在数据库关闭要备份的服务后进行备份,适用于所有模式的数库。优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。缺点是单独使用时,只能提供到“某一时间点上”的恢复;在实施备份的时候,数据库必须是关闭状态;不能按表或用户恢复。

21、数据库外模式与内模式
数据库的外模式也称用户模式,描述的是用户可见的局部数据的逻辑结构和特征;
数据库的内模式也称存储模式,描述的是数据库的物理结构和存储方式,是数据在数据库内部的组织方式。

语言

1、static的特点
1、随着类的加载而加载。static修饰的变量和方法都会放在方法区中静态区,是属于类的。
2、静态变量属于类不属于对象。
3、static修饰的成员被所有的对象所共享。
4、static优先于对象存在,因为static的成员随着类的加载就已经存在了。
5、静态方法中不能使用this或者super关键字。

2、讲一下java python C C++的区别
C++、Java和Python都是面向对象的编程语言。
1、python:python是基于C++创造的,python语法简单,它的库非常丰富,可以迅速地开发程序,不过,python的脚本的运行效率较低,不适合对运行效率要求较高的程序。Python是一种脚本语言。它更适合用来做算法。
2、JAVA:Java的语法比较规则,采用严格的面向对象编程方法,同时有很多大型的开发框架,比较适合企业级应用。用途:Android & IOS 应用开发,软件开发等。
3、C++:C++更接近于底层,方便直接操作内存。C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。C++运行效率较高,同时能够比较容易地建立大型软件,适合对效率要求高的软件,比如机器学习中的神经网络,大型游戏编程等等。
4、C:C语言是面向过程的语言,用户创建过程或函数来执行他们的任务。C语言的编译器比其他语言的编译器要更快,代码执行速度快。C语言是一种结构化程序设计语言,这种模块化使程序调试、测试和维护变得容易。

3、C++派生举例
派生类继承了基类的全部成员变量和成员方法(除了构造和析构之外的成员方法),但是这些成员的访问属性,在派生过程中是可以调整的。

4、C++的多态
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

5、java的三个特征,继承多态是什么意思
1、封装:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,并通过该类提供的方法来实现对隐藏信息的操作和访问。(简单的说就是隐藏对象的信息,留出访问的接口)。
2、继承:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
3、多态:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。

6、java的引用和C#有什么区别
1.JAVA都是采用值传递,所有引用传递不会改变对象,但可以改变对象的值。
2.C#的引用传递,即可以改变对象,也可以改变对象的值。

7、.net开发和和Java开发的区别
.NET是跨语言的一个平台。语言可以是C#,f#,j#,vb.net等等。
JAVA和.NET不同的一点是java是跨平台的,不跨语言的。.NET跨平台仅限于安卓系统和IOS苹果系统。

8、.net的继承和java的继承的区别
在java 的中 ,如果父类和子类中都含有相同的函数,相同的返回类型 、名字和参数,子类会覆盖父类的,.net则会去调用父类的

9、翻译程序、编译程序和解释程序的区别
翻译程序是指这样一种程序,它将一种语言编写的源程序翻译成另一种语言编写的目标程序;
编译程序是一种翻译程序,它将高级语言所编写的源程序翻译成机器语言或汇编语言编写的目标程序;
解释程序是指一种翻译语言,它是编译语言的区别在于,在翻译的过程中是边翻译边执行,中间不产生目标代码。

热点概念

1、云计算
云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池,这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。

2、大数据的特点?
1.Volume:数据量巨大
体量大是大数据区分于传统数据最显著的特征。一般关系型数据库处理的数据量在TB级,大数据所处理的数据量通常在PB级以上。
2.Variety:数据类型多
大数据所处理的计算机数据类型早已不是单一的文本形式或者结构化数据库中的表,它包括订单、日志、BLOG、微博、音频、视频等各种复杂结构的数据。
3.Velocity:数据流动快
速度是大数据区分于传统数据的重要特征。在海量数据面前,需要实时分析获取需要的信息,处理数据的效率就是组织的生命。
4.Value:数据潜在价值大
在研究和技术开发领域,上述三个特征已经足够表征大数据的特点。但在商业应用领域,第四个特征就显得非常关键!投入如此巨大的研究和技术开发的努力,就是因为大家都洞察到了大数据的潜在巨大价值。如何通过强大的机器学习和高级分析更迅速地完成数据的价值“提纯”,挖掘出大数据的潜在价值,这是目前大数据应用背景下苛待解决的难题。

3、大数据发展的瓶颈?
没有成熟的方法采集和处理大数据。
数据涉及到隐私,法律法规还没有完善。
大量不同类别的数据不知道怎么存储。
数据的独占性:有价值的数据别人不一定会分享。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐