数据结构
数据三要素----数据的:逻辑结构,存储结构,运算
时间复杂度–将算法中基本运算的执行次数的数量级作为时间复杂度。
顺序表有哪些缺点?(逻辑上相邻的元素,在物理位置上也相邻)
优点:顺序表支持随机存取,存储密度大
缺点:插入和删除元素需要移动大量的元素(近一半)
注意:动态分配内存并不是链式存储结构,依然属于顺序存储结构,支持随机存取方式,只是分配的空间大小在运行时动态决定。
链表有哪些缺点?(逻辑上相邻的元素,在物理位置上不一定相邻)
优点:便于插入删除等操作,只要改变指针就行。不用考虑溢出问题。
缺点:不支持随机存取,查找第i个元素只能从链表的第一个结点出发。
静态链表的数据结构?
答:静态链表是连续存储在一段主存空间上的,它的每个节点除了数据域外,还有一个指针域用来指向下个节点在这个数组的位置。
循环链表的特点
单循环链表:最后一个结点的next指针指向头结点;
双循环链表:最后一个结点的rear指针指向头结点,头结点的front指针指向最后一个结点。
如何逆置一个链表
答:定义一个只含有头结点的链表,依次取下要逆置的链表的各个元素,每次按照头插法插入刚定义的链表中,直到待逆置链表中所有关键字都***入。最后将待逆置链表的头指针指向新定义的链表的头结点,并将头指针的地址返回出去。
对链表设置头节点的好处是什么?
(1)无论链表是否为空,其头指针是指向头结点的非空指针,故空表与非空表的操作也就统一了。
(2)在链表第一个位置的插入与删除操作与其他位置的操作一致,无需特殊处理。
我们几个人围成一圈,从某个人开始数数,数到3的人OUT,说一下这个算法?
答:这个可以用循环链表实现。
两个有序的链表A,B。如何把B的节点插入A链表,使之仍是有序的表?
答:依次取B链表的节点,与A链表的节点的关键字比较,找到合适的位置插入即可。
你是说每次都从A链表第一个位置开始比较?
答:可以设置一个指针,指向A链表中刚插入元素的位置,以后直接从刚插入位置从前往后查找合适的位置插入即,直到B链所有元素插入到A链中。
两个有序数组拼接为有序数组最少和最多比较几次?
当某个数组的最大元素比另一个数组最小元素小(某个数组的最小元素比另一个数组的最大元素大)时只需要比较一次,即最少比较一次。最多比较两个数组长度中较小值次。min(len a,len b)。
什么是堆?什么是栈?什么是队列?有何区别?举一个队列的例子
队列:只允许在队头删除,在队尾插入的顺序表,队列先进先出eg:排队买饭
栈:只允许在栈顶插入和删除的顺序表,栈后进先出。
堆:堆分为小根堆和大根堆。(1)每个结点都小于它的左右孩子的值—小根堆;(2)每个结点都大于它的左右孩子的值—大根堆;堆又称为优先队列。
循环队列–可以解决假溢出
循环队列:牺牲一个存储单元来区分队空和队满,队空:front指针等于rear指针时;队满:(队尾指针+1)余队列长度等于队头指针;
双端队列–指两端都可以进行入队和出队操作的队列。
受限双端队列–输入受限的双端队列,输出受限的双端队列
输入受限的双端队列:允许在一段进行入队出队,另一端只允许出队操作。
数出受限的双端队列:允许在一段进行入队出队,另一端只允许入队操作。
栈的用法
答:栈的应用有:括号匹配、表达式求值、递归调用、数值转换
括号匹配:
(1)若为左括号则入栈,若为右括号则检查与栈顶元素是否匹配,匹配则将栈顶元素出栈,栈顶指针下移一位。
(2)按照这个规则,一直检查到字符串尾部。
(3)检查栈是否为空,栈空,则这个括号串匹配成功,否则匹配失败。
表达式求值:
(1)中缀—》后缀
(2)从左到右扫描表达式:遇到数字就进栈,遇到符号则将栈顶的两个元素出栈并运算,将结果压回栈中,直到最后得到表达式的结果。
递归函数? 递归调用:
(1)如果一个函数运行过程中又运用到自身,那么这个函数称为是递归定义的。—递归函数中有:递归式,递归边界。可以用栈来实现递归。
(2)递归思想就是把大问题分解成小问题,直到每个小问题都得到解决为止。(1)递归次数有限;(2)有结束条件终止递归;
(3)规模为n的问题可划分为若干结构相同,规模较小的子问题。
队列的应用–树的层次遍历,图的广度优先搜索,基数排序,OS里的缓冲区,就绪队列,阻塞队列等。
矩阵压缩:对多个相同的值,只分配一个存储空间;对零元素不分配空间。压缩存储可将二维矩阵存到一维数组中,对二维数组有行优先、列优先两种存储方式。对特殊矩阵只存储一部分元素。—对称矩阵,上下三角,对角矩阵。
稀疏矩阵?
答:如果在矩阵中,多数的元素为0,通常认为:非零元素 / 矩阵所有元素《=0.05,则称此矩阵为稀疏矩阵(sparse matrix)。
树的性质
(1)除根结点外,每个结点都有一条边指向,一条边对应一个度,故结点总数等于总度数加1。
(2)度为m的树中,第i层最多有m^(i-1)个结点。
特殊的二叉树—满二叉树,完全二叉树
满二叉树:即每一层的结点都达到最大值,高度为h的树,有2^h -1个结点。
完全二叉树:高度为h的完全二叉树中,每个结点都与高度为h的满二叉树的编号一一对应。
完全二叉树的性质:
(1)叶子结点只可能出现在层数最大的两层上;
(2)如果有度为1的结点,则该结点只有左孩子,而无右孩子;
(3)一旦出现某个结点为叶子结点,或只有左孩子,则编号大于该结点的均为叶子结点。
知道一棵树的先序和后序能不能确定它?要证明。
答:不能,必须知道中序。这是因为前序遍历和后序遍历序列,可能对应不同的二叉树。 可确定一棵树:(先中、中后、中层)
在后序遍历的线索二叉树中,如何找结点直接前驱?
先把二叉树遍历一遍:即设置两个标记Ltag,Rtag,如果左孩子指针为空,Ltag=1,如果右孩子指针为空,Rtag=1。
建一个队列,按照后序遍历方式将各个结点进行入队,如果Ltag=1(Rtag=1),此时把左(右)孩子指针指回队列里的前(后)一个元素,这个元素就是前驱(后继)节点,然后往队尾依次进行线索化。
在中序线索二叉树中,如何找节点的直接前驱?
建一个队列,按照中序遍历方式将各个结点进行入队,如果Ltag=1,此时把左孩子指针回指队列里的前一个元素,这个元素就是前驱节点,然后往队尾依次进行线索化。
如何在计算机上实现线索二叉树的遍历? 遍历的总体思路:
先找到最左边的节点,然后判断其右子树是否为线索,如果是线索,那么就遍历它,如果右子树是右孩子,那么就进入到右孩子最左边的节点,进行同样的判断,知道遍历完了整棵树为止。
线索二叉树
在二叉树中希望很快找到某一节点的前驱或后继,但不希望每次都要对二叉树遍历一遍,因此在创建二叉树的过程中,需要将每个结点的前驱和后继记录下来。
为了区分:左指针指向的是左孩子结点还是前驱结点,右指针指向的是右孩子结点还是后继结点,所以增加了两个线索标志位来区分这两种情况:
ltag = 0;指向结点的左孩子
ltag = 1;指向结点的前驱
Rtag = 0;指向结点的右孩子
Rtag = 1;指向结点的后继
结点中指向前驱和后继结点的指针称为线索,加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式使其变为线索二叉树的过程称为线索化。
树是否可以用顺序存储? 是否可以链式存储?
顺序存储:树的双亲表示法。采用一组连续空间来存储各个结点,同时在每个节点中增设一个指针域,用来指示其双亲结点在数组中的位置。
链式存储:
1.孩子表示法:即邻接表存储结构
2.孩子兄弟表示法:数据结构: (1)指向结点第一个孩子的指针 (2)结点值
(3)指向结点下一个兄弟结点的指针
树的遍历种类,确定一棵树的方法?
树的遍历种类:先序遍历和后序遍历
树的先序对应二叉树的先序,树的后序对应二叉树的中序。
确定一棵二叉树:(先中)、(中后)、(中层)
树转二叉树(孩子兄弟表示法):
每个结点的左指针指向它的第一个孩子,右指针指向它在树中的相邻兄弟结点。
二叉树转森林:依次断开二叉树的右孩树,直到产生一棵没有右子树的二叉树为止,就得到了原森林。
二叉排序树:
(1)若左子树非空,则左子树上所有结点的关键字值均小于根节点关键字值;
(2)若右子树非空,则右子树上所有结点的关键字值均大于根节点关键字值;
(3)左右子树本身也是一棵二叉排序树。
二叉排序树的查找—与折半查找类似----折半查找判定树为一棵二叉排序树
(1)从根节点出发,将给定值与根节点比较,若相等则查找成功。
(2)待查找的关键字大于根节点,在右子树查找;
(3)待查找的关键字小于根节点,在左子树查找;
平衡二叉树(左右子树高度差 ≤ 1,平衡因子的绝对值 ≤ 1)
插入结点失衡:LL(右单旋),RR(左单旋).LR(左右双旋),RL(右左双旋)
说一说哈夫曼树?
哈夫曼树是带权路径长度之和最小的树,权值较大的结点离根较近,权值越小的离根节点越远。
哈夫曼树的构造过程:将N个结点看成N棵仅含一个结点的树,构成森林F,构造一个新的结点,结点的左右子树为森林F中权值最小的两棵树,结点的权值为左右子树的权值之和。在森林F中将刚选出的两棵树删除,同时将新构造的树插入。依次进行这个步骤,直到最后只剩下一棵树为止。
哈夫曼树的特点?
(1)权值较大的结点离根较近,权值越小的离根节点越远。
(2)哈夫曼树的带权路径长度之和最小。
(3)哈夫曼树不存在度为1的结点。
(4)哈夫曼树形态不唯一,但带权路径长度唯一。
哈夫曼树的优表现在哪?
带权路径长度之和最小,权值越大的结点离根越近,权值越小的结点离根节点越远。哈夫曼编码是前缀编码,利用哈夫曼树可以设计出总长度最短的二进制前缀编码。
大概的编码过程?
编码是信息从一种形式转换为另一种形式的过程。用预先规定的方法将文字、数字或其它数据编成数码。解码,是编码的逆过程。将代码译为原数据形式。
例如哈夫曼编码的大概过程,首先是将要编码的信息调整为一棵哈夫曼树,在哈夫曼树左子树编码为0或1,右子树编码为1或0。某个元素的编码就是从根结点到自身所经过的路径上的01代码串。
m阶B树:
根节点至少有两颗子树(一个关键字)
除根结点外的非叶结点至少有m/2向上取整棵子树,最多有m棵子树
B树中n个结点有n+1个分支。叶结点在同一层且不带信息。
m阶B+树:
根节点至少有两棵子树,其他分支结点至少有m/2向上取整棵子树
每个分支结点最多有m棵子树
B+树中,n个结点有n个分支,每个非叶结点仅起到索引的作用,B+树的叶子结点包含全部关键字,B+树有一个指向最小关键字的指针。
有向图和无向图的联系,试各举一例说明?
无向图可以看作每条边都有两个方向的有向图,无向图的邻接矩阵一定是对称阵,而有向图的邻接矩阵不一定对称。(强连通图才对称:i到j有路径,j到i有路径)
实际应用的区别是有向图可以描述非对称的关系,但无向图不能。比如我认识奥巴马,但是他不认识我,用图来表示这个关系时就将我和奥巴马之间连一条线,并且弧头指向他。
无向图能解决的问题都能用有向图表示,但无向图在对称的问题上往往更容易,因为用有向图去表示无向图时需要用两倍的边数。
稀疏图:E《V logV时为稀疏图
连通、连通图、连通分量:----无向图
(1)从顶点i到j有路径存在,则称i和j是连通的。
(2)若图中任意两个顶点都是连通的,则称该图为连通图,否则为非连通图。(3)无向图的极大连通子图称为连通分量。
强连通、强连通图、强连通分量:—有向图
(1)有向图中,从顶点i到j,顶点j到i都有路径存在,则称i和j是强连通的。
(2)图中任意一对顶点都是强连通的,则称该图是强连通图。
(3)有向图的极大连通子图称为强连通分量。
完全图
无向完全图:任意两个顶点间都有边存在,n个顶点,有n(n-1)/2条边。
有向完全图:任意两个顶点间都有方向相反的两条弧存在,n个顶点,有n(n-1)条有向边
数据结构中图的存储, ---------邻接矩阵、邻接表
什么情况下用邻接表,什么情况下用邻接矩阵。为什么?
答:稠密图一般用邻接矩阵,因为图稠密的话,用邻接矩阵,编程简单还相对省空间。稀疏图一般用邻接表。
时间复杂度:邻接矩阵o(n^2),邻接表o(边+顶点)
邻接矩阵和邻接表的优缺点?
答:邻接矩阵优缺点:很容易确定图中任意两个顶点之间是否有边相连,但要确定图中有多少条边必须按行、按列对每个元素进行遍历,代价很大。
邻接表优缺点:很容易找到任一顶点的所有边,但要确定任意两个顶点i和j之间是否有边或弧,则需要遍历第i或第j个链表,代价很大。
有向图中邻接矩阵中入度和出度的定义
邻接矩阵中顶点i所在行(列)中1的个数为出度(入度)。
生成树
连通图的生成树是包含图中全部顶点的极小连通子图。若有n个顶点则有n-1条边。如果在生成树上减去一条边会变为非连通图,添加一条边,会形成一个环。
生成森林:
在非连通图中,各个连通分量的生成树,构成了非连通它的生成森林。
什么是最小连通图?-----生成树
答:首先,子图是连通的,用边把极小连通子图中所有结点连接起来,连接时要求不能出现环。若有n个结点,则有n-1条边。“极小”是指边尽量少的连通子图,去掉任何一个边都会使其变为不连通。
如何产生最小连通图?
可以通过广度优先搜索或深度优先搜索遍历图,调用BFS或DFS的次数就是连通分量数也即有几个连通图。在每个连通分量中依次将顶点加入,并以边连接,边的连接过程要求不能出现环。在每个连通分量中,若有m个顶点,则有m-1条边。当然,也可以考虑使用prim或克鲁斯卡尔算法。
什么是最大连通图? 极大连通子图:
设G(v,e)是连通图,G’(v’,e’)是连通图,如果对于v’等于v,e’包含于e,那么G’叫G的极大连通子图。
(1)连通图只有一个极大连通子图,就是它本身。
(2)非连通图有多个极大连通子图。每个连通分量都是一个连通图。
(3)极大是指,如果加入任何一个不在图的顶点都会导致它不再连通。
图的遍历: BFS,DFS
BFS:-(队列)–类似于二叉树的层次遍历+访问数组标记技术
(1)访问起始顶点V1,并标记数组;
(2)依次访问与V1相邻且未被访问的顶点w1,w2…wi,并标记数组;
(3)再从w1,w2…wi出发,选择与之相邻但未被访问的顶点,并被标记数组;直到所有与V1有路径相通的顶点都被访问到。
(4)选择另外一个未被访问过的顶点V2作为起始顶点,访问并标记,重复这个步骤,直到所有顶点都被访问。
DFS:-栈–类似于二叉树的先序+访问数组标记技术
(1)访问起始顶点V1,并标记数组;
(2)从V1出发,选择与V1相邻且未被访问过的任一顶点V2,并标记数组;
(3)再从V2出发,选择与V2相邻且未被访问过的顶点V3,并标记数组。重复这个步骤;
(4)当不能继续向下访问时,依次回退到最近访问的顶点,若它还有顶点未被访问,则访问该顶点,并标记。重复这个过程,直到图中所有顶点都被访问。
怎么能够判断判断一个图是连通还是非连通的? (可通过图的遍历)
答:采用图的深度遍历法,从其中一个结点v出发,直至所有与v有路径相通的结点都被访问到。若此时图中所有点都被访问过,则该图是连通图,反之,说明还有其他连通分量,该图不是一个连通图。
求最小生成树的算法
答:主要有两种:克鲁斯卡尔(Kruskal)算法和普里姆(Prim)算法。
普里姆
从任意一个顶点出发,选择与该顶点相连且代价最小的边加入边集,同时将该边对应的顶点加入顶点集,从顶点集出发,选择与该顶点集中的顶点相连,代价最小,并且加入该边后不构成回路的边—加入边集,同时将该边对应的顶点加入顶点集,重复这个过程,直到所有的顶点都被加入。就构成了一棵最小生成树。
克鲁斯卡尔
不断选取当前未被选取的权值最小的边,如果加入该边后不构成回路,则将该边加入,同时将该边对应的顶点加入生成树。重复这个过程,直到n个结点选出n-1条边。就构成了一棵最小生成树。
单源最短路径? //迪杰斯特拉算法
单源最短路径:从给定源点到其他各顶点的最短路径。
思想:加入顶点k之后,若有新的路径使得源点到顶点j的路径变短,就将源点到顶点j的路径长度修改为较小的那个值。
任意两个节点的最短路径?//弗洛伊德算法
答:对于任意两个顶点i和j,逐步尝试在原路径中加入顶点k作为中间节点,加入中间节点后,得到的路径长度变小了,则以此作为顶点i和j之间的新路径。
拓扑排序
从AOV中,选择一个入度为0的顶点输出,然后删去此顶点,并删除与此顶点相连的所有边,重复这个过程,直到找不到入度为0的顶点为止。
二叉树与离散数学中关系紧密,把偏序全序化,就是二叉树线索化,知道什么是偏序吗?
偏序:对于关系R只有部分元素成立
全序:对集合中任意两个元素都满足关系R。
例如:
集合的包含关系就是偏序,因为两个集合可以互不包含;
实数中的大小关系是全序,因为两个实数必有一个大于等于另一个。
偏序关系转化为全序关系的算法是什么 ----拓扑排序
AOV中怎么判断是否有回路
在AOV网中,可以通过拓扑排序的方法判断是否有回路。经拓扑排序,全部顶点被输出,则无回路。否则说明有回路。
有向无环图在实际生活中的应用例子?(AOV网)
完成一个工程时,各个活动完成的先后顺序。可以看成是有向无环图的一个例子。
AOE网的始点和终点是什么?正常的AOE网只有一个始点和终点吗?
分别是源点和汇点,正常的AOE网只能有一个始点和一个终点。在AOE网中有向带权图中若以边表示活动,顶点表示事件,边上的权值表示该活动的持续时间。
关键路径:在无环的AOE网中从源点到汇点,具有最大路径长度的路径称为关键路径。关键路径上的活动为关键活动。关键活动的最早发生时间和最晚发生时间是一样的。
关键路径为什么不能出现回路?
树和图之间的区别?
答:树是一对多关系,图是多对多的关系
树是图的子集
树有一个根节点,图没有
树可以递归遍历,图要看情况
树是一种“层次”关系,图是“网状”关系。
二分查找? 折半查找
设置一个low指针,和high指针,mid指向(low+high)/2,待查找元素大于mid所指的值,则在后半部分查找,即low=mid+1;
待查找元素小于mid所指的值,则在前半部分查找,即high=mid-1;
优点:是比较次数少,查找速度快,平均性能好;
缺点:是要求待查找表为有序表,且插入删除困难。
因此,折半查找适用于不经常变动而查找频繁的有序列表。
什么是哈希表?如何构建哈希表?在构建哈希表过程中,会遇到什么问题,如何解决?
(1)哈希表(散列表),是将关键字通过哈希函数映射到内存中的某个地址。这样得到的表称为哈希表。
(2)哈希表的构建,把关键字通过一个哈希函数转换成一个地址,并将关键字值存入数组的相应位置。(除留取余法,平法取中法,数字分析法,分段叠加法)。
(3)在构建哈希表的过程中可能遇到冲突,解决冲突的方法有—开放定址法,再散列法,链地址法(将同义词存储到同一个链表中)。
串:字符串简称串,在计算机上非数值对象的处理基本都当字符串数据。串是由零个或多个字符组成的有限序列。
串的模式匹配:
子串的定位就叫做串的模式匹配,它是求子串在主串中的位置。串的模式匹配的算法有KMP算法。
插入排序:每次将一个待排序的关键字,按其关键字的大小插入到已排好序的子序列中。
希尔排序:按照增量d,将待排序列分割成若干子表,分别对子表直接插入排序,且缩小增量d,直到整个表基本有序时,再对全体记录进行一次直接插入排序。
冒泡排序:从前往后(从后往前)两两比较相邻的元素,若为逆序则交换,直到序列比较完,称一趟冒泡排序。最多进行n-1趟冒泡排序即可完成排序。
----每次至少确定一个元素在最终位置;
快速排序:选取任意一个元素作为枢轴,一趟排序后,将表划分为比枢轴小的左子表和比枢轴大的右子表,之后按这个排序方法,分别递归调用左右子表。
----每次至少确定一个元素在最终位置;
简单选择排序:每趟排序,都选择关键字最小的元素,加入到已有序的序列中,直到完成排序为止。----每次确定一个元素在最终位置;
堆排序:建堆o(n),调堆o(logn),输出根节点,将最后一个关键字换到根节点位置,之后调堆,输出根节点,依次进行下去,直到排序完成。
----每次确定一个元素在最终位置;
归并排序:将待排序列,看成n个有序子表,然后两两归并,在两两归并,依次进行下去,直到完成排序。
基数排序(多关键字排序思想):基于关键字各数值位的大小进行排序–借助,分配与回收两种操作。
计数排序的基本思想
(1)对于数组中的任意元素x,只要知道在这个数组中比x小的元素的个数i,那么我们就可以直接把x放到(i+1)的位置上。这就是计数排序的基本思想。
(2)计数排序的一个重要性质就是稳定性。
桶排序的基本思想
桶排序将[0,1)区间划分为n个同样大小的子区间,这些子区间被称为桶。将n个输入元素分别放入各自的桶中。然后对各个桶中的数据进行排序,最后遍历每个桶,依次把各个桶中的元素输出即可。
堆排序的思想是什么?
答:在堆中根节点为最大或最小元素,每次将根结点输出后以最后一个结点来取代根节点位置,调堆。依次进行下去,直到输出所有元素。
小根堆:每个结点的值都小于它左右孩子的值;
大根堆:每个结点的值都大于它左右孩子的值。
调堆:从第一个可能需要调堆的非叶结点—N/2向下取整—的左右孩子开始检查,依次对非叶结点进行调堆。
堆排序、快速排序和归并排序,哪个辅助存储空间最少,哪个平均速度最快,哪个稳定?
答:稳定性:快些选堆美女聊聊—快排,希尔,选择,堆排序–不稳定
复杂度:快些以nlogn的速度归队–快排,希尔,归并,堆排序–nlogn
直接插得冒泡n^2 ----直接插入,冒泡----n^2
辅助空间:快速logn ,归并 n 堆 1
答:辅助空间最小的是堆排序,平均速度最快的是快速排序,快排和堆排序不稳定,归并排序稳定。
给你一个很长的数组,怎么找出最大最小,效率要高,还有比较次数,
(1)可以考虑使用堆排序,找最大则建立大根堆,找最小则建立小根堆。建堆的时间复杂度为o(n),调堆为o(logn),故找到最大最小的时间复杂度为o(nlogn),比较的次数为树的高度log(n+1)向上取整。
(2)也可以考虑使用快速排序,但由于数组的长度很长,虽然快排找最大最小的时间复杂度也为o(nlogn),但比较次数可能比堆排序的次数多。
分治法:
将一个规模为N得问题,分解为若干个子问题,这些子问题相对独立且与原问题的形式相同。递归的解决这些子问题,最后将各个子问题的解合并就得到原问题的解。
eg:数据结构(折半排序,归并排序,希尔排序)
二路归并的实质是什么?
答:分治法思想,将一个规模较大的问题,划分为若干个规模为2的子问题,将各个子问题排序后,完成一趟归并。再将子问题两两归并,依次进行下去。直到完成排序。
贪心算法? 背包问题
答:贪心算法,总是做出在当前看来是最好的选择。也就是说,不从整体最优上来考虑,他所做出的是局部最优解。即求解第i个元素时,只与第i-1个元素有关。
-贪心算法的列子:os(短进程优先、最短寻道时间优先)
数据结构(最短路径(djstl)、最小生成树(prim、kruskal)、哈夫曼编码)
动态规划算法,典型运用? 0 1背包问题
答:多阶马尔科夫模型:对于第i个元素,需要考虑从1到n-1个元素才能完成推理。
基本思想与分治法类似,也是将待求解的问题分解为若干个子问题,按顺序求解子问题,前一子问题的解,为后一子问题的求解提供依据。
求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解。依次解决各子问题,最后一个子问题就是初始问题的解。
分治法与动态规划的区别?
动态规划与分治法最大的差别是:动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上的)。
数组、广义表和线性表有什么联系和区别?
(1)数组是编译语言自带的一种复合数据类型。
(2)广义表和线性表都被定义为一个有限的序列(a1,a2,a3,…,an)。只不过线性表中ai被限定为单个元素,而广义表中ai可以是单个元素,也可以是一个子广义表。
(3)线性表可以用数组这种顺序存储结构来表示,也可以用链表来表示。而广义表一般只能用链表来表示。
广义表深度的计算:
(1)广义表长度:表中最上层元素的个数
(2)广义表深度:表中括号的最大层数。(需要展开子表)
怎样防止出现环?
答:RIP水平分割,OSPF算法可避免路由环路。
计算机组成原理
冯诺依曼计算机
(1)存储程序的思想,将编写好的程序存放到计算机主存中,按其在主存中的首地址执行程序的第一条指令,以后就顺序执行其他指令,直到程序执行结束。
(2)计算机分为:运算器,控制器,存储器,输入,输出设备五大部件。
(3)指令由操作码和地址码组成。
(4)冯诺依曼机器以运算器为中心。
计算机三个级别的语言
(1)机器语言:计算机唯一可以直接识别和执行的语言。
(2)汇编语言:助记符-用英文单词来代替二进制的指令代码。
(3)高级语言:需经过编译程序编译成汇编语言,然后经过汇编得到机器语言。
编译和解释? 编译器和解释器的区别?
(1)编译:把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;------eg:C语言代码被编译成二进制代码(exe程序),然后在windows上执行。
(2)解释:在执行程序时,解释一条代码为机器语言,随后执行一条解释好的机器语言,即解释一条,执行一条。所以运行速度是没有编译后的程序运行得快。
-------eg:PHP,JavaScript就是典型的解释性语言。
编译程序的结构?
编译程序也称为编译器,指把高级语言的源程序,翻译成等价的机器语言的格式。编译过程分为分析和综合两个部分,并进一步划分为—语法分析、语义分析、词法分析、代码优化、内存分配和代码生成等步骤。
(1)高级语言----(编译)—汇编语言—(汇编)—机器语言
(2)高级语言----(编译)—机器语言
海明码:
(1) 为了纠正一位错误,在n位有效信息中,要用k位校验位。应满足:2^k》=n+k+1;
(2) 为了校验两位错,就需要再增加一位校验位,即k+1位。
数据的存储方式------大端、小端
(1)大端方式:先存放高位字节,在存放低位字节。
(2)小端方式:先存放低位字节,在存放高位字节。
C语言中结构体存储的边界对齐方式应满足
(1)存储成员的起始地址%成员的长度=0;
(2)结构体的长度为最大成员长度的整数倍。
说说计算机编码那些
答:原码,补码,反码,移码
原码:将十进制数转为二进制数,最高位存放符号(0为正,1为负)。这就是机器数的原码。
反码:正数的反码与原码相同,负数的反码符号位不变,数值部分按位取反。
补码:正数的补码与原码相同,负数的补码符号位不变,数值位按位取反,末位加1。----计算机中的定点整数一般用补码表示。
移码:[X]移=X+偏置值
补码和反码什么区别,什么情况用。
区别:负数时,符号位不变,数值位按位取反,为反码,而补码要在末位加1。
反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则;
补码:解决负数加法运算正负零问题,弥补了反码的不足。
移码什么时候用的,有什么好处或作用。IEEE 754中阶码为移码,尾数为原码
移码常用于浮点数的运算中,在IEEE 754标准中,用移码表示一个浮点数的阶码。 真值=(-1)^s * 1.m * 2^E-127;
作用:(1)可较直观的判断两个二进制数的大小,(2)可用于简化浮点数的运算。(3)一般用做浮点数的阶码,能保证浮点数的机器码为全0。
加法器怎么实现减法和加法-------直接用补码就行了
补码减法的原理
原理:减法运算要化为加法来做。
[x-y]补=[x]补+[-y]补;
[-y]补:在y的原码基础上。连同符号位一起按位取反,末位加1。
原码转补码时要注意什么,如B和-B转补码时要注意什么。
答:要注意B有可能是负数-B就成正数了,由正数的补码与原码相同,那么-B的补码就和-B的原码一致。
计算机的乘法运算是怎么做的?除法运算呢?
答:通过加减法和移位来实现的;把除法转成乘法,乘法转成加法,减法也转成加法。在计算机中左移一位表示乘2,右移一位表除2。
除转乘:除2相对于乘二分之一。
计算机组成原理关于溢出?
单符号位法:参加运算的两个数的符号相同,结果又与原操作数的符号不同,则表示结果溢出。
双符号位法:运算结果的两个符号位相同则表示未溢出,两个符号位不同表示溢出。10表示下溢(当机器0),01表示上溢(中断);00,11未溢出。
符号位和进位法:符号位的进位与最高数位的进位相同,表示没有溢出。否则溢出。
机器数算术移位
正数:原码、反码、补码添0即可。
负数:原码添0,反码添1;补码,左移添0,右移添1。
逻辑移位:将操作数视为无符号数:不管左移、右移都添0.
浮点数的运算过程
(1)对阶:小阶向大阶看齐,–阶小的尾数右移一位,阶码加一,直到两个数阶码相等为止。
(2)尾数求和:将尾数相加减。
(3)规格化: 尾数大于0,需左规:尾数左移一位,阶码减一;
尾数小于0,需右规:尾数右移一位,阶码加一。—最多一次
(4)舍入: 0舍一入法:移去最高数值位为0,则舍弃,否则末位加一。
恒置1法:不论舍弃的最高数值位为0或1,尾数末位恒置为1。
(5)溢出判断。
存储器
(1)按存储器的使用类型可分为(ROM)和(RAM),它们都属于半导体存储器,都采用随机存取存储方式访问数据,ROM是只读类型的。RAM又分为SRAM(静态随机存取存储器)和DRAM(动态随机存取存储器)。
(2)ROM属于非易失性,RAM为易失性。
(3)SRAM:速度快,非破坏性读出,不需要刷新,常用作Cache;DRAM:速度较SRAM慢,破坏性读出,需要刷新,常作为主存。
什么是存储元,什么是存储单元,什么是存储单元地址区别和联系?
(1)存储元:是存储器的最小存储单元,用来存放一位二进制代码0或1。
(2)存储单元:由若干存储元组成,可存放一个独立的二进制代码。存储单元具有存储或读写数据的功能。
(3)储单元地址:计算机中的存储器往往有成千上万个存储单元,为了存取数据不发生混淆,必须给每个存储单元一个唯一的编号。这个编号就是存储单元地址。
MMU Memory Management Unit是什么及作用?
MMU(Memory Management Unit)内存管理单元,它是CPU中用来管理虚拟存储器、物理存储器的控制线路,同时也负责将虚地址映射为实地址。
机器字长、存储字长、指令字长?
(1)机器字长:处理器一次能处理的二进制代码位数—一般等于CPU寄存器的位数。
(2)存储字长:一个存储单元能存储二进制代码的位数,即MAR,MDR,PC的位数。
(3)指令字长:计算机机器指令所占的位数。
内存的扩展方式?
字扩展:增加存储字长。
位扩展:增加存储单元的数量。
字位扩展:既增加存储字长,又增加存储单元的数量。
低位交叉存储器:
(1)低位地址为体号,高位地址为体内地址;
(2)每个模块都有相同的容量和存取速度;
(3)程序被连续的存放在相邻的体中。
(4)采用低位交叉存储后,可以采用流水线技术,提高存储器的带宽。
说一说Cache, Cache的原理—局部性原理
(1)Cache是介于CPU和主存之间的高速缓冲存储器。CPU在访问数据时,首先判断所要访问的内容是否在Cache中。如果cache命中,此时CPU直接从Cache中调用该内容;否则,CPU从内存中调用所需的数据。
(2)CPU可以直接从Cache中读数据,也可以直接往Cache中写数据。CPU和Cache之间通常一次传送一个字块,字块的长度是一个主存周期能存取信息的长度。
(3)高速缓存的出现就是为了缓解CPU和主存之间的速度矛盾,提高CPU的利用率,进而使整个系统的性能得以提升。
内存和cache有什么区别? cache与主存的关系怎样?
(1)内存,是存储器,用于暂存CPU中的运算数据,及与硬盘等外部设备交换数据;Cache,是一种特殊的内存。内存主要由DRAM和只读存储器ROM组成,Cache主要由SRAM组成。
(2)CPU主频很高,运算速度很快;主存速度相较于CPU很慢,如果直接把主存与CPU连接,会造成CPU花很大一部分时间来等待主存存取数据,导致CPU的效率降低,所以需要高速的Cache来缓解CPU与主存的速度矛盾。
Cache和虚拟存储器结构的区别?
相同点:(1)基于局部性原理,把最近经常所有的部分常驻高速存储器中。
(2)都力图使存储系统的性能接近高速设备。
不同点:
(1)Cache是介于CPU和主存之间的高速缓冲存储器;虚拟存储器是介于主存和辅存之间的高速缓冲存储器。
(2)Cache用全硬件实现,虚拟存储器在主存和辅存之间用软件实现。
CPU和Cache之间通常一次传送一个字块,字块的长度是一个主存周期内能存取信息的长度。
(3)Cache是一种物理存储器,虚拟存储器是一种逻辑存储器
CPU —cache —主存 cpu-主存—辅存 的异同?
(1)cpu-cache-主存:利用cache缓和了CPU与主存储器的速度矛盾。cpu -cache-主存结构速度接近于cache,但容量接近于主存,价格接近于主存,解决了速度与成本的矛盾。
(2)cpu-主存-辅存:利用主存缓解了,高速CPU与慢速的辅存之间的速度矛盾。cpu-主存-辅存结构速度接近主存,容量接近辅存。解决了大容量低成本的矛盾。
组成原理的内存地址映射的问题
答:Cache与主存的映射方式有:直接映射,全相联映射,组相联映射。
(1)直接映射:主存中的块只能根据地址中的某些字段,映射到cache的某个特定的位置。
(2)全相联映射:只要cache有空位,就将主存中的某个块映射过去。(分组为1的组组相联映射)。
(3)组相联映射:主存中的块只能根据地址中的某些字段,映射到cache的某个特定的组中(cache的某几块中)。
Cache的写策略–全写法(写直通法),写回法
(1)全写法:CPU对Cache写命中时,必须同时将数据写回Cache和主存。
优:能随时保持主存中数据的正确性;缺:增加了访存次数。
(2)写回法:CPU对Cache写命中时,只修改Cache的内容,而不立即写回主存,只有当此块被换出时才写回主存。这种方法,减少了访存次数,但存在数据不一致的隐患。
指令格式:操作码,寻址特征,形式地址。
寻址方式有哪些?
寻址方式有直接寻址,一次间址,寄存器寻址,寄存器间接寻址,相对寻址,基址寻址,变址寻址等。
(1)直接寻址:指令中的形式地址为操作数的有效地址。
(2)一次间址:指令中的形式地址对应的内存中所存的内容为操作数的有效地址
(3)寄存器寻址:直接给出操作数所在寄存器的编号。速度快,不访存。
什么是寻址?相对寻址、基址寻址,变址寻址是什么,作用是什么?
寻址简单的说是磁头在盘片上定位数据的一个过程。
相对寻址:程序计数器PC的内容加上指令中形式地址形成操作数的有效地址,作用:相对寻址,用于转移指令。
基址寻址:把基址寄存器的内容,加上指令中的形式地址为操作数的有效地址。作用:基址寻址,便于多道程序设计。
变址寻址:把变址寄存器的内容,加上指令中的形式地址为操作数的有效地址。作用:变址寻址,便于数组和循环程序的处理。
CPU如何区分主存上的程序代码与数据的?
答:在指令的不同的周期区分。取指周期从内存中取出的是指令,而执行周期从内存取出或写入的是数据。
指令的执行周期
取指周期----取指令; 间指周期----有效地址
执行周期----操作数; 中断周期----保存程序断点
(1)指令周期:一条指令启动到下一条指令启动的时间间隔;
(2)总线周期:一次访存储器/IO端口所需的时间;
(3)时钟周期:一个节拍的时间间隔;
一条指令周期由若干总线周期组成,一个总线周期由若干时钟周期组成。
(4)机器周期:指令执行每一步操作所需的时间。
(5)微指令周期:读出一条微指令+执行该条微指令所需的时间。
指令集:指令集是存储在CPU内部,并对CPU运算进行指导和优化的程序。
机器指令和微指令?(谈谈指令和微指令)
(1)一条机器指令对应一个微程序,这个微程序是由若干条微指令构成的。因此,一条机器指令的功能是若干条微指令序列来实现的。
(2)一般每条微指令对应一个时钟周期。即一条机器指令的执行需要若干个时钟周期。
微指令的编码方式
(1)直接编码:选用或不用某个微指令,只需将该微指令对应位设置成1或0即可。这种方法比较直观,但使得指令字过长,n个微指令就需要,微指令的操作字段有n位。
(2)字段直接编码:将互斥性微命令放在同一段内,相容性微命令放在不同段。
什么是CISC和RISC ?简述它们的特点和区别?
CISC:“Complex Instruction Set Computer”,即“复杂指令系统计算机”,
RISC:“Reduced Instruction Set Computer”,即“精简指令集计算机”
CISC:(1)计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2)CISC绝大多数为微程序控制。
(3)指令长度不固定。
(4)CISC对可访存的指令不加限制。
RISC:(1)设计者把主要精力放在那些经常使用的指令上,对不常用的功能,常通过组合指令来完成。因此,实现特殊功能时,效率较低。但可以利用流水线技术加以改进。
(2)RISC绝大多数通过组合逻辑控制。
(3)RISC的指令长度固定,可以实现流水线技术。
(4)RISC中能访存的指令只有load和store。
CPU的功能?
答:CPU(Cntral Pocessing Uit),
cpu是计算机的核心,因为它负责处理、运算计算机内部的所有数据,而主板则控制着数据的交换。
CPU主要由运算器、控制器构成,运算器主要负责对二进制数据进行运算,控制器主要负责控制计算机各部件的指令执行,包括存取地址。
CPU的两种设计方式?
(1)硬布线(组合逻辑):速度快,但难以扩充和维护—通常用于risc结构的CPU。
(2)微程序:一条机器指令对应一个微程序,执行指令时只需要读出微程序即可。每条指令都需要从控存中读取,所以速度较慢,但容易进行扩充和修改。
—通常应用于cisc结构的CPU。
什么是寄存器?
答:寄存器是CPU内的重要组成部分。寄存器是高速存贮部件,可用来暂存指令、数据和地址。在CPU的控制部件中,包含指令寄存器(IR)、程序计数器(PC)、地址寄存器(MAR)、数据寄存器(MDR)等。在CPU的运算器部件中,包含暂存器(DR)、累加器(ACC)、程序状态字寄存器(PSWR)和通用寄存器等。
什么是程序计数器?
答:程序计数器PC是用于存放执行指令的地方。在程序开始执行前,必须将它的起始地址,即程序的第一条指令在内存的地址送入PC,因此程序计数器(PC)的内容是第一条指令的地址。
ALU的全称? 简单说一下ALU?
答:ALU:Arithmetic Logic Unit,算术逻辑单元。
由与门和或门组成,主要负责二进制数据的加、减法运算。
指令流水线阻塞的原因?
(1)数据相关:多条指令争用同一资源。–解决:前一条指令访存时,使后一条指令暂停一个时钟周期。
(2)结构相关:后一条指令要用的数据为前一条指令的结果。
类型:《1》写后读;《2》读后写;《3》写后写
解决:1.将相关指令暂停一个或几个时钟周期;2.数据旁路技术
(3)控制相关:流水线遇到转移指令时。
解决:1.尽早判别转移指令是否发生;2.提高转移方向的猜准率。
总线分类:
(1)片内总线:连接芯片内寄-寄,寄-alu
(2)系统总线:连接计算机各部件。—数据总线,地址总线,控制总线;
数据总线:双向,传送数据,数据可以是地址,操作数,状态信息;
地址线:单向,指出源或目的操作数所在的主存单元或I/O端口的地址。
控制总线:单向,传送控制命令。
(3)通信总线:计算机系统之间传送信息的总线。
地址线,数据线是干什么的?
(1)地址线是用来传输地址信息用的。指出源或目的操作数所在的主存单元或I/O端口的地址。
(2)数据线是用来传输数据的,数据是宏观来说的,数据可以是地址,操作数,状态信息。
2MByte大小的内存空间寻址需要多少跟地址线、不同单位之间换算的题
答:需要21根地址线。
总线定时:同步定时、异步定时、半同步定时、分离式定时。
总线的两种基本定时方式-----同步(定时)传输与异步(定时)传输
(1)同步传输:采用一个统一的时钟信号来协调发送方和接收方的传送定时关系。时钟信号通常由CPU控制总线发出,传输速度快,总线效率低。
(2)异步传输:允许各个模块速度不一致,不要求各部件严格统一时间,而是采用握手的方式。(全互锁,半互锁,不互锁)
总线仲裁:-------集中仲裁、分布仲裁
集中仲裁:(1)链式查询方式;(2)计数器查询;(3)独立请求方式
总线带宽:单位时间内总线上可以传输的数据的位数。
总线带宽=总线宽度*总线工作频率
突发传输?----一次传送一个地址和一批地址连续的数据。
串口?串行接口简称串口(常指COM接口),是采用串行通信方式的扩展接口。
USB?-----(Universal Serial Bus)
答:USB,(通用串行总线),属于设备总线,用于规范电脑与外部设备的连接和通讯。USB接口的优点:支持插即用、热插拔、传输速度快、扩展能力强。
显存容量:分辨率灰度级位数
显存带宽:分辨率灰度级位数*刷新频率
磁盘操作的时间?
(1)寻道时间:将磁头移动到指定磁道所需的时间;-------- ------调度算法决定
(2)延迟时间:将磁头定位到磁道的某个扇区所需的时间;------磁盘转速决定
(3)传输时间:从磁盘读出或写入数据所需的时间。---------------磁盘转速决定
I/O端口编址
(1)统一编址:把I/O端口当做存储器的单元,采用统一的访存指令访问I/O端口。优:不需要专门的I/O指令。缺:占有了存储器地址,使内存容量变小;且执行速度较慢。
(2)独立编址:CPU设置专门的I/O指令访问端口。
优:程序编址清晰。缺:I/O指令少,且增加了控制的复杂性。
计算机由什么组成?说一下计算机内部的结构
答:计算机由硬件系统和软件系统组成:硬件系统分主机和外设。主机由:中央处理器(CPU)、内存和主板。外设由:外部存储设备、输入设备、输出设备。软件系统分:基本输入输/输出系统(BIOS)、系统软件、应用软件。
内存有哪些引脚?
答:根据内存条金手指引脚定义有:(72、144、152、168、184、200、240线)
内存条的作用?
答:内存条用于暂存CPU中的运算数据,及与硬盘等外部存储器交换的数据。计算机运行时,CPU就会把需要运算的数据调到内存,当运算完成后再将结果传送出来。
比如在使用WPS处理文稿时,在键盘上敲入字符时,它就被存入内存中,点击保存时,内存中的数据才会被存入硬(磁)盘。
什么是虚拟机?有什么用处?
答:虚拟机(Virtual Machine)是指在一台计算机上分配出多个具有完整计算机特性的区域,每个区域可以互不影响的工作,可以独立安装运行软件,保存数据。但不会对真正的系统产生任何影响。
作用:虚拟机主要用来做实验和测试,比如测试一些病毒软件,可以在虚拟机里去运行测试,这样即使染毒也不会感染到真实计算机中。
多路接入通道与数组接入通道
(1)多路接入通道:连接多台中速和慢速的设备:以交叉方式为多个外设服务。
(2)数组接入通道:连接多台高速设备:在一段时间内只能执行一道通道程序。
操作系统
操作系统的特征
(1)并发;(2)共享;(3)虚拟;(4)异步。
OS的功能:
(1)处理机管理(2)存储器管理(3)文件管理
(3)设备管理(5)OS作为用户与计算机硬件之间的接口-联机/脱机命令接口。
什么是中断?
1.在程序运行过程中,系统出现了一个必须由CPU处理的情况,CPU暂停正在执行的程序,转而处理新的程序的过程,叫中断。
2.中断分为–内中断和外中断:内中断信号来自CPU内部,与当前执行的指令有关。外中断的信号来自CPU外部,与当前执行的指令无关,在每个指令周期末尾检查是否需要中断。
(1)外中断:外设请求;I/O操作完成。
(2)内中断:地址越界;整数除0;缺页;内存溢出;文件损坏
3.中断处理过程----(1)某设备或程序发出中断请求;(2)中断隐指令完成中断前状态的保存(关、保、服);(3)中断服务;(4)返回断点继续执行。
CPU对中断如何处理?
(1)发生中断,为了响应中断,CPU就会暂停正在执行的程序,转而去处理中断的事件。中断处理结束后,CPU返回中断前的工作,继续执行。
(2)如果CPU正在做更重要的事情,就会让这个程序先等待,有空在响应中断。
(3)如果同时有多个程序都要CPU来处理,CPU就按重要程度来逐个处理。
中断和陷入(陷阱)的主要区别----中断通常指外中断
(1)陷入通常由处理机正在执行的指令引起,中断由与现行指令无关的中断源引起的。
(2)CPU在执行完一条指令后,下一条指令开始前响应中断;而在一条指令执行中可以响应陷阱。
中断与信号的区别与联系
相同点:(1)都是异步通信方式;(2)有中断/信号请求时,都暂停正在执行的进程,转而执行相应请求;(3)执行完都返回原来的断点;(4)对中断/信号都可进行屏蔽。
不同点:(1)中断有优先级,而信号没有;(2)中断处理在核心态,信号处理在用户态;(3)中断的响应是及时的,信号的响应有较大延迟。
什么是管态?什么是目态? 它们与进程运行状态的关系是什么?
(1)管态又叫特权态,或核心态。CPU在管态下可以执行指令系统的全集。通常,操作系统在管态下运行。
(2)目态又叫用户态。处于目态时,只能执行非特权指令。用户程序只能在目态下运行。
简述系统调用过程—文件管理、设备管理、内存管理等都需要系统调用
(1)传递系统调用参数 (2)执行trap陷入指令
(2)执行系统调用服务 (4)返回用户态
注:系统调用请求发生在用户态,处理在核心态。
为什么引入多道程序技术?
引入多道程序技术后,可以进一步提高了CPU利用率,提高内存和I/O设备利用率,增加系统吞吐量。
什么是进程?-------(特征:动态性、并发性、独立性、异步性)
(1)进程由程序段,数据段,PCB组成;–PCB是进程存在的唯一标志。
(2)进程是程序在一个数据集合上的一次运行过程。进程是动态的,程序是静态的。
(3)在没有线程机制的计算机系统中,进程是资源分配和调度的基本单位。在引入线程机制的计算机中,进程依然是拥有资源的基本单位。
进程三个状态的转换
(1)就绪态,已获得除cpu以外的所有资源,只要再获得处理机便可运行这。
(2)执行状态,指进程已获得处理机及其他必须资源后,程序正在执行。
(3)阻塞状态,进程因等待某件事发生时,用block原语阻塞进程。
进程的并发、并行和互斥?
并发:两个或多个事件在同一时间间隔内发生;宏观上同时执行,微观上交替运行。
并行:两个或多个事件在同一时刻发生;宏观和微观上都同时执行;
互斥:若进程要使用某资源,该资源正在被另一进程所占有,且该资源不允许被两个进程同时使用,则该进程只好等待占有资源的进程,释放资源后,才能使用。
临界资源:一次只允许一个进程使用的资源。
进程的调度策略有? 先、短、高、优、时、多
调度的基本准则?
(1)CPU利用率(2)系统吞吐量(3)周转时间(4)等待时间(5)响应时间
在基于优先级调度中,当一个进程正在执行时,来了一个高优先级的进程,是否会立即终止现行的进程?为什么?
不一定,因为有可能为非抢占式系统,要等待当前进程执行完毕才可以抢占CPU;
父子进程是否可以并发运行?
可以。父进程创建子进程后,子进程也成了一个可以独立运行的单位,虽然子进程继承了父进程的全部资源,但只要两个进程的数据没有冲突,它们就可以并发运行。
进程/线程状态的控制-------原语-------创建与终止,阻塞与唤醒
1.进程/线程的创建与终止
创建:(1)申请空白PCB;(2)为进程/线程分配空间。
终止(撤销):(1)找到撤销进程的PCB;(2)若进程正在执行,则立刻停止,若该进程有子进程则将子进程撤销;(3)回收进程所占的资源。
引起进程撤销的原因有哪些?—进程正常结束 (2)进程异常 (3)外界干预
2.进程/线程的阻塞与唤醒
阻塞:需要等待某事件发生时,使用block原语将自己阻塞。–主动
唤醒:相关事件完成时,调用wakeup原语唤醒进程。------------被动
进程通信方式?(进程间信息交换)
低级通信:(PV操作)
高级通信:(以较高的效率传输大量的数据):共享存储、消息传递、管道通信、套接字。
(1)共享存储:在通信的进程之间,开辟一块可直接访问的共享空间。对共享空间的访问需要PV操作。
(2)消息传递:进程之间的数据交换,以格式化的消息为单位。进程通过发送消息和接收消息两个原语进行数据交换。
(3)管道通信:管道即连接读写进程之间的一个文件,也叫缓冲区。各进程只能互斥的访问管道。写满:写进程被阻塞,读空:读进程被阻塞。没写满,不允许读,没读空,不允许写。
(4)套接字可用于不同进程间的通信。
进程通信中管道是什么?为什么用管道技术?和其他技术相比有什么优缺点?
(1)管道即连接读写进程之间的一个文件,也叫缓冲区。各进程只能互斥的访问管道。
(2)优点:使用管道,进程之间能较高效的传输大量数据,实现进程通信。
(3)缺点:管道只能半双工通信,若要实现全双工通信需要设置两个管道。
线程
(1)线程分为用户级线程和内核级线程。用户级线程的管理由应用程序负责;内核级线程的管理由OS负责。
(2)线程是独立运行的基本单位,一个进程可以有若干线程。
(3)线程基本不拥有资源,但可访问所属进程的全部资源。
(4)线程的切换开销较小,故可更好的实现并发性。
进程与线程的关系?–任务、程序?
(1)在没有引入线程机制的计算机系统中,进程是独立运行和拥有资源的基本单位。引入线程后,线程是独立运行的基本单位,而进程依然是拥有资源的单位;线程基本不拥有资源,但可访问所属进程的全部资源。
(2)进程间的通信方式有:共享存储,消息传递,管道,套接字。而线程之间的通信要先检查是否属于同一个进程。属于同一个进程之间的各线程可直接读写进程数据段;而不同进程的线程之间的通信属于进程间通信。
(3)进程切换的开销较大。而线程切换时,只需要保存少量寄存器的内容,开销较小。
(4)进程之间的地址空间相互独立,而同一进程的各线程可共享进程的地址空间。
任务:一系列共同达到某一目的的操作。一个任务既可以是一个进程,也可以是一个线程。例如,读取数据并将数据放入内存。这个任务可以作为一个进程来实现,也可以作为一个线程来实现。
程序:一组指令的有序集合,它只是一个静态的实体。
谈一下多线程?
多线程(multithreading):是指从软件或者硬件上,实现多个线程并发执行的技术。具有多线程能力的计算机,能够在同一时间执行多个线程,进而使整个系统的性能得以提高。多线程能提高–资源利用率,程序响应快。
线程为什么能提高系统效率?
(1)线程并发执行的开销比进程小。(2)线程的切换开销比进程小。因此可以提高系统效率。
多线程,真的提高了效率吗?
不一定。多线程并不是为了提高效率,而是可以并行执行,只是它合理利用了时间,进行了多个操作。买票系统就是用了多线呈。如果一个用户,一个用户的等下去不是办法;所以可以用多线程,让多个用户同时买票,效率也就提高了。当然。效率不是指执行的效率,而是时间的利用率。
处理机调度—高级(作业)调度、中级调度、低级(进程)调度
(1)高级(作业)调度:在外存的作业后备队列中,选择一个作业调入内存。
高级调度,只进行一次;
(2)中级调度:将内存中某个不用的进程,挂起到外存的后备队列;或从外存的后备队列,选择一个进程激活并调入内存;—多次
(3)低级(进程)调度:从进程的就绪队列中,选择一个进程上处理机运行。–调度频率较高
在交互式系统中,非剥夺是不是一个好的策略? 为什么?
(1)非剥夺方式:一旦把处理机分配给某进程后,便让它一直运行下去,直到进程完成时,才把处理机分配给另一个进程。
(2)剥夺方式:当一个进程正在运行时,系统可以剥夺已分配给它的处理机(资源),分配给其它进程。剥夺原则:优先级原则、短进程、时间片原则。
在分时系统中不剥夺不是一个好的策略。因为,在分时系统中,除了交互性以外,及时性也是很重要的因素。当一个作业被阻塞后,CPU就空闲,其他用户的及时性就无法保证了。
实时系统的分类-----软实时、硬实时系统。
—计算机能及时响应事件的请求,并在规定的时间内完成对该事件的处理。
(1)软实时系统,要求事件在截止期限前得到处理,但违反截止期限,并不会带来致命的错误。–eg:实时多媒体系统
(2)硬实时系统,各任务不仅要执行无误,而且要准时,对操作系统的实时性要求比较严格。–eg:航天中的宇宙飞船的控制等
CPU不执行程序的时候干什么?
CPU不执行任何程序时,处理器被认为是空闲的。大多数的CPU当空闲时会进入省电模式。操作系统有一个空闲任务,当CPU无事可做的时,OS通过调度来载入它。这个空闲任务是由一个重复执行停机指令的循环组成的。
进程互斥应满足:
(1)空闲让进;(2)忙则等待;(3)有限等待;(4)让权等待
举例解释一下同步和互斥
(1)同步表现为直接制约,如管道通信,一个进程读,一个进程写,它们相互制约。(2)互斥表现为间接制约,比如多个进程同时请求打印机等。
生产者和消费者系统中,同步和互斥的含义?
同步:直接制约—有产品,才可以消费。
互斥:间接制约—多个生产者,只能互斥的使用缓冲区。
读者/写者问题在实际中有何应用----文件操作,过独木桥问题,汽车单行道问题
实现同步与互斥的机制?
同步:信号量–(整型/记录型);整型不满住让权等待;记录型满足让权等待,实质是pv操作。
互斥:软件–(单标志法,双标志先检查,双标志后检查,皮特森算法)
硬件–中断屏蔽法,硬件指令法(TextAndSet指令–原子操作)
谈谈PV操作。
号量的P,V操作的实质是‘加减操作’,p操作是对信号量进行减1操作,然后判断信号量是否小于0,是则阻塞等待,否则什么都不做;V操作是对信号量进行加1操作,然后判断信号量,是否小于等于0,是则唤醒进程,否则什么都不做。(S.Value值的绝对值表示等待该资源而阻塞的进程数。)
谈谈信号量
信号量分为整数型信号量和记录型信号量。整数型信号量,表示资源个数,不遵循让权等待。记录型信号量,遵循让权等待。记录型信号量的实质:(PV操作)
信号量是一个计数器,可以用来控制多个进程或线程对资源的访问。信号量不是用于交换数据,而是用于进程之间的同步。信号量用于通知接收进程某个事件已经发生。
同步异步
(1)同步,就是在发出一个同步调用后,在没有得到结果之前,就不能继续执行后续操作。
(2)异步,当一个异步调用发出后,在没有得到结果之前,就可以继续执行后续操作。
同步,就是实时处理(如打电话):通信双方不能断(我们是同时进行),你一句我一句,这样的好处是,对方想表达的信息能马上收到。
异步,就是分时处理(如收发短信):服务器接收到客户端请求后不是立即处理,而是等服务器比较空闲时加以处理,这样可以避免涌塞。
管程?
(1)管程是由一组数据及对这组数据的操作组成的一个软件模块,这组操作能初始化,并改变管程中的数据和同步进程。管程的出现是为了解决,信号量机制编程麻烦,且容易出错的问题。
(2)管程只能访问管程内的局部变量,任何时刻只能有一个进程进入管程执行;进程只能通过管程提供的入口进入管程。
n个任务一个cup,阻塞,运行,就绪的进程最多有多少个?
阻塞n个(死锁)----运行1个(只有一个CPU)----就绪n-1个(运行一个,剩下的就绪)
OS的死锁?
答:由于资源占用是互斥的,当某个进程提出资源申请后,使得有些进程在无外力协助下,永远分配不到必需的资源,而无法继续运行,这种现象就称为死锁。
死锁的原因主要是:
(1)系统资源不足。
(2)进程推进顺序的不合理性。
(3)资源分配不当等。
死锁的四个必要条件:
(1)互斥条件:一段时间内某种资源仅为一个进程所占有。
(2)不剥夺条件:进程已获得的资源,在没有使用完之前,不能被其他进程剥夺。
(3)请求与保持:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(4)循环等待条件:存在一种资源循环等待链,链中的每个进程已获得的资源同时被链中下一个进程所请求。
死锁的处理策略-----死锁预防、死锁避免、死锁的检测与解除。
预防死锁—破坏产生死锁的四个必要条件中的一个或几个
(1)互斥条件:不可实现
(2)不剥夺条件:释放已获得的资源,可能造成前一阶段的工作失效。
(3)请求与保持:静态预分配法。
(4)循环等待条件:顺序资源分配法。
死锁避免-----(银行家算法)
安全状态:系统按照某种进程推进序列,为每个进程分配,回收资源,可以使每个进程都可以顺利完成。只要系统处于安全状态,系统就能避免进入死锁。
不安全状态:系统无法找到一个安全序列,则称系统处于不安全状态。系统处于不安全状态,系统有可能进入死锁。
银行家算法的步骤
Available:可用资源数; Max:进程需要的最大资源数
Allocation:已分给进程的资源数 Need:进程还需要的资源数
(1)检查此次申请是否小于等于需求资源数,Request《=Need;
(2)检查此次申请是否小于等于可用资源, Request《=Available;
(3)试探着分配资源,并更新数据:
Available=Available-Request;
Allocation=Allocation+Request;
Need=Max-Allocation;
(4) 检查此次分配是否会使系统进入不安全状态,不会则分配资源,否则不分配。
死锁的检测与解除
----允许死锁的发生,OS只检测死锁的发生,然后采取措施解除死锁。
主要用到–资源分配图:有资源结点和进程结点,进程指向资源的边为请求边,资源指向进程的边为分配边。
依次消除与不阻塞进程相连的所有边,若进程能消除所有边,则称可完全简化。可完全简化,则可以解除死锁。
死锁解除-(1)资源剥夺法:挂起某些死锁,剥夺它的资源,分配给其他死锁。
(2)撤销进程法:强制撤销某些进程,并剥夺这些进程的资源。
(3)进程回退法:让某些进程回退到足以回避死锁的状态。
安全性算法与死锁检测算法区别
(1)安全性算法(银)–检测分配后,系统是否处于安全状态,即检查这样分配后,其余进程能否有充足的资源顺利执行下去。
(2)死锁检测算法–是检测已经分配资源的进程,是否可以用还剩下的资源顺利执行下去。
描述程序在计算机里面的运行过程
(1)程序的运行过程要经过:编译、链接和装入。
编译:将用户代码编译为若干模块;
链接:将编译后的目标模块和所需的库函数链接在一起,形成一个装入模块。
装入:将装入模块装入内存运行。
(2)计算机在运行时,先从内存中取出第一条指令,通过控制器译码,按指令的要求,从内存中取出数据,进行运算,然后再根据译码地址将结果写回内存。接下来,再取出第二条指令,在控制器的控制下完成规定操作。依次进行下去。直至遇到停止指令。
程序链接的三种方式?----静态链接、装入时动态链接、动态运行时装入。
覆盖与对换?
覆盖:将用户空间,划分为一个固定区和若干覆盖区;将常驻内存的段放在固定区,调入后就不在调出;将不经常使用的段放在覆盖区,需要时调入内存,不需要时调出内存。
交换:在磁盘开辟一个足够大的区域做为对换区,把内存中某些不常使用的进程换出到对换区,在需要时候又把它们换进内存。
当内存已全部被使用时,计算机采用什么技术?
答:对换技术。
在磁盘上开辟一个足够大的区域做为对换区。当某进程要调入内存运行,而当前的内存空间又不能满足该进程时,可把内存中某些不常使用的进程换出到对换区,在需要时候又把它们换进内存。
连续分配内存?
(1)单一连续分配:将内存划分为系统区(低地址)和用户区(高地址)。系统区提供给OS使用;用户区提供给用户使用。适用于单道程序系统,解决空间不足的方法是覆盖。内部碎片;
(2)固定分区分配:将内存划分为大小相等的分区,每个分区只能装入一道程序。适用于多道程序系统,解决空间不足的方法是覆盖/对换技术。内部碎片;
(3)动态分区分配:根据进程的大小动态的建立分区,并使分区的大小正好适应进程的大小。解决空间不足的方法是交换。外部碎片;
在可变分区管理中,需要哪些硬件机制?
可变分区分配管理方式,一般均采用动态重定位方式装入。地址变换主要靠两个寄存器:基址寄存器和限长寄存器。基址寄存器存放作业的起始地址,限长寄存器存放作业的长度。
动态分区分配算法
(1)首次适应:空闲分区的地址递增链接,从链首顺序查找第一个满足条件的分区。----速度快,平均性能最好。碎片多出现于低地址空间。
(2)循环首次适应:空闲分区的地址递增链接,从上次查找结束的位置开始查找第一个满足条件的分区。 碎片多出现于高地址空间。
(3)最佳适应:空闲分区按容量递增的次序链接,从链首开始顺序查找第一个满足条件的分区。 要对分区排序,开销大。
(4)最坏适应:空闲分区按容量递减的次序链接,从链首开始顺序查找第一个满足条件的分区。 要对分区排序,开销大。使系统缺少较大的分区,若此时有大进程到达,可能无法调入内存。
分页存储管理和分段存储管理?----非连续分配
页式管理:把主存空间划分为大小相等的块,每个进程也以块为单位划分。进程执行时,以块为单位逐个申请主存中的块空间。进程的块称为页,内存的块称为页框。系统为每个进程建立一张页表,记录了页面在内存中的物理块号。
分页存储管理方式需要硬件:页表寄存器(存放页表的始址、页表长度)
分页管理方式地址结构:页号、页内偏移;
作用:从计算机角度出发,提高内存的利用率,有内部碎片,地址是一维的。
段式管理:把一个程序分成若干个段进行存储,每个段都是一个逻辑实体。段式管理是通过段表进行的,包括段号、段长、段的起始地址等。
作用:面向用户,利于编程和信息共享,有外部碎片,地址是二维的。
段页式管理:程序被分为若干段,然后将每个段划分为大小相等的页。在一个进程中,段表只有一个,而页表可以有多个。
为了实现重定位需要哪些硬件?
最简单的方式是在系统中增设一个重定位寄存器,存放正在执行作业的内存地址。每次访问数据时,由硬件自动将相对地址与重定位寄存器中的地址相加,形成物理地址。当然在分页式与分段式系统中,具地址变换机构,以及快表等硬件。
局部性原理
答:局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于集中在一个较小的连续区域中。
局部性有两种不同的形式:时间局部性和空间局部性。
时间局部性:在具有较好的时间局部性的程序中,如果某个存储器被访问了,那么很可能在不久的将来被再次访问。
空间局部性:在具有较好的时间局部性的程序中,如果某个存储器被访问了,那么程序很可能在不久的将来,访问附近的一个存储器。
虚拟存储器的思想是什么? (用内外数据倒换的时间差换空间+局部性原理)
答:基于局部性原理,将程序的一部分装入内存,其余的留在外存。当所访问的信息不再内存时,由操作系统将所需的信息调入内存。操作系统将暂时不用的数据换出到外存上。系统好像为用户提供了一个比实际大得多的存储器。称为虚拟存储器。
三种实现方式:请求分页,请求分段,请求段页式。
特点:多次性(多次调入)、对换性(进程不需要常驻内存)、虚拟性(逻辑上扩充主存容量)
页表/段表机制:通过查表获得相关信息;
中断机制:要访问的页不在内存时产生缺页中断;
地址变换机制:把逻辑地址变为物理地址
虚拟内存容量由什么决定?----计算机的地址结构、可用磁盘容量。
页式虚拟存储和段式虚拟存储的特点和区别?
1、页式虚拟存储器
主存与虚存都被划分为同样大小的页,主存的页称为实页,虚存的页称为虚页。页式虚拟存储的地址格式为:虚页号,页内偏移;虚地址到实地址之间的变换由页表来实现;每个页表项记录了虚页号,实页号和装入位等信息。装入位为1表示该页面已经在主存中了,否则就通过缺页中断来调入页。
2、段式虚拟存储器
段式虚拟存储器是按程序的逻辑结构划分地址空间,段的长度是随意的。它的优点是易于实现存储保护,便于程序动态装配;缺点是调入操作复杂。
3、段页式虚拟存储器
在段页式中把程序按模块分段,每个段划分成与物理空间同样大小的页面。
计算机系统怎样实现存储保护?
(1)防止地址越界(检查进程的地址,发生越界时产生中断,由操作系统进行相应处理)
(2)防止操作越权(自己区域的信息–可读可写、对公共区域中允许共享的信息–可读而不可修改、对未授权使用的信息–不可读,不可写)
操作系统中,当一个页面存满了后,系统会用哪些算法处理?页面替换的算法
(1)最佳置换(OPT):淘汰以后不再使用的页或最长时间内不再使用的页。(无法实现,但可以用来评价其他算法)
(2)先进先出置换(FIFO):淘汰最早进入内存的页面(Belady异常)
(3)最近最久未使用(LRU);淘汰最近最长时间未被访问的页。
(4)时钟置换算法:淘汰使用位位0的页,(选择一个页最多两轮扫描)
(5)改进的时钟置换:淘汰使用位为0,修改位为0的页(最多4轮扫描)
当cache已全部被使用时,现需要调入一个页面,计算机会怎么处理?
答:使用页面置换算法,选择一个页调出cache,然后将需要的页面调入。
(先进先出、最近最久未使用、最不经常使用)
发生缺页中断时,是否一定会执行页面淘汰算法
–不一定。(1)若系统所分配的页面,还有页面未被使用,则直接调入,不用执行淘汰算法;(2)若缺页的页地址错误则结束进程,此时不再执行淘汰算法。
页面调度时,当发生缺页时是否立即调出一页,也同时调入一页?
不一定,(1)如果系统分配的页数使用完,此时需要调出一页,然后将需要的页调入。(2)但如果页数还有剩余的话,则只需调入页面,不涉及页面调出操作。
操作系统的页面分配策略
答:固定分配局部置换、可变分配局部置换、可变分配全局置换。
(1)固定分配:为每个进程分配一定数量的物理块,在整个运行期间保持不变。
(2)可变分配:为每个进程分配一定数量的物理块,OS会动态调整给每个进程分配的物理块数。
(3)全局置换:OS保持一个空闲物理块队列,当某进程发生缺页,OS从空闲物理块队列,取出物理块分配给该进程。
(4)局部置换:若发生缺页,则只能从该进程所占的页面中,选择一个页调出,然后再调入需要的页面。
抖动
页面置换过程中,页面频繁的调入调出,如果一个进程调页的时间,多于执行时间。就称这个进程为抖动或颠簸。
原因:(1)对换信息量过大,(2)内存容量不足,(3)置换算法选择不当。
解决方法:(1)增大内存容量,(2)减少进程数量。
文件控制块FCB?
用来存放控制文件所需的各种数据结构,以实现“按名存取”。FCB包含:
(1)基本信息:如文件名等;
(2)存取控制信息:如文件存取权限等;
(3)使用信息:如文件建立时间、修改时间等。
文件关闭的过程
(1)通过检索文件目录来找到指定文件;
(2)调用“close()”关闭文件,并把该文件从打开文件表中的表目项,删除。
文件的目录结构?—单级、两级、多级、无环图目录结构
(1)单级目录结构:整个文件系统只创建一张目录表,每个文件占一个目录项。
优:实现了按名存取; 缺:查找速度慢,文件不允许重名,不便于文件共享。
(2)两级目录结构:将文件目录,分为主文件目录、用户文件目录两级。
优:解决了不同用户的重名问题; 缺:目录结构缺乏灵活性
(3)多级(树形)目录结构
优:目录层次清晰; 缺:查找文件时需逐级查找,增加了访问磁盘次数。
绝对路径:从根目录出发到指定文件的路径;
相对路径:从当前目录出发到指定文件的路径。
(4)无环图目录结构:可以用不同的文件名指向同一文件,甚至指向同一目录。优:方便文件的共享; 缺:系统的管理更加复杂。
文件共享?硬链接、软链接
(1)硬链接:采用索引结点的方式,在索引结点中还增设了一个计数器count,表示链接到本文件上的用户数,当count》1时,文件拥有者不能将文件删除,否则会导致指针悬空。
优点:实现了异名共享;
缺点:文件拥有者不能删除与他人共享的文件。
(2)软链接:利用符号链实现文件共享。只有文件的拥有者,才拥有指向其索引结点的指针。
优点:文件拥有者可以删除被他人共享的文件;
缺点:读取共享文件时,需要按路径名逐级查找,访问开销大。
文件的实现/文件分配方式------连续、隐式链接、显示链接、索引分配
(1)连续分配:要求每个文件在磁盘上占一组连续的块,其中,文件的FCB包含第一块地址和连续的块数。—类似顺序表
优:支持顺序访问和随机访问,实现简单。
缺:文件不宜动态增加。
(2)隐式链接分配:每个文件对应一个磁盘块的链表,每个盘块都有指向下一个盘块的指针。文件的FCB包含第一块指针和最后一块的指针。—类似链表
优:文件增删改很方便,可动态分配盘块,提高了空间利用率;
缺:只能顺序访问,且一旦断链会导致文件数据丢失。
(3)显示链接分配:把用于链接文件各物理块的指针,都显式的存放在一张链表中。在整个磁盘仅设一张FAT,开机后将FAT读入内存,并常驻内存。
优:支持顺序或随机访问。
缺:文件分配表需要占一定的物理空间。
(4)索引分配:把每个文件的所有盘快号放在一起,构成索引表。–顺+链
优:索引支持随机访问,且没有外部碎片问题。
缺:增加了存储空间的开销。
文件连续分配和离散分配的优缺点?
(1)连续分配。
优:支持顺序访问、直接存取。缺:要求有连续的空间;且要事先知道文件长度。
(2)离散分配
优点:提高外存利用率,减少碎片产生;无须事先知道文件大小。
缺点:访问速度慢;索引分配可以直接存取,但是索引表占用额外空间;链接
分配只能顺序访问。
文件存储空间的管理–对空闲磁盘块的管理
(1)空闲表法:为所有空闲盘快,建立一张空闲盘块表;
(2)空闲链表法:将所有空闲盘快,组成一个空闲盘块链表;
(3)位示图法:用一位二进制数0或1,表示某个块空闲或不空闲。
混合索引分配方式?–直接地址、一次间接地址、二次间接地址…
磁盘调度算法? 先、最短寻道、SCAN,CSCAN
(1)先来先服务:根据访问磁盘的先后顺序,进行调度。
优:算法简单,且具有公平性。
(2)每次选择离当前最近的磁道调度。—可能导致离磁头远的进程饥饿。
(3)SCAN:在磁头移动方向,选择离当前最近的磁道,作为下一次服务对象。
缺:对最近扫描过的区域不公平。
(4)CSCAN:磁头单向移动来提供服务。返回时磁头直接移动到起始端,而不服务任何请求。
优:解决了SCAN算法趋向于处理最内或外道请求的缺点。
RAID磁盘阵列
(1)RAID0:条带化,类似于低位交叉存储器,作用是提高存取速度。
(2)RAID1:用两套磁盘,互为备份,来提高可靠性。
(3)RAID2:采用纠错的海明码的磁盘阵列。
(4)RAID3:位交叉奇偶校验的磁盘阵列。
(5)RAID4:块交叉奇偶校验的磁盘阵列。
(6)RAID5:无独立校验的奇偶校验磁盘阵列。
I/O控制有哪几种?—5章
I/O控制方式主要有----程序查询方式、中断方式、DMA方式和通道控制方式。
(1)程序查询方式(程序轮询方式):CPU必须循环检测I/O设备的状态,当设备准备好时,CPU就可以与I/O设备进行数据存取操作。每次只能存取一个字;CPU与I/O设备串行工作。
(2)中断方式:当某进程要启动某个设备时,CPU就向相应的设备控制器,发出设备启动指令,然后CPU又返回去做原来的工作,当I/O设备完成时,就会向CPU发出中断请求。一次存取一个字;CPU与I/O设备并行工作。
(3)DMA(直接内存存取):在外设和内存之间开辟一条直接的数据通路,数据传送时,DMA控制器从CPU完全接管对总线的控制,除了在数据传输开始和结束时,整个过程无须CPU的干预。降低了CPU在数据传送时的开销。一次存取一个数据块;CPU与I/O设备并行工作。
(4)通道:通道(Channel)是一个外围设备处理器。通道能执行与外部设备相关的指令。是一种实现主存与I/O设备,直接进行数据交换的控制方式。一次存取若干数据块;CPU与I/O设备并行工作。
说一说DMA原理?
在外设和内存之间开辟一条直接的数据通路,数据传送时DMA控制器从CPU完全接管对总线的控制,除了在数据传输开始和结束时,整个过程无须CPU的干预。降低了CPU在数据传送时的开销。
DMA与CPU使用主存的方式:(1)CPU停止访问主存 (2)CPU与DMA交替访问主存 (3)周期挪用。
DMA的优先级为什么比CPU高?–因为DMA请求得不到及时响应,I/O传输数据可能会丢失
I/O子系统的层次结构
(1)用户层I/O软件:实现与用户的交互,提供与I/O操作有关的库函数,
(2)设备独立性软件:将逻辑设备名映射为物理设备名,设备的分配与回收
(3)设备驱动程序:I/O进程与设备控制器之间的通信程序。
(4)中断处理程序:保护中断进程的CPU环境,转入相应的中断处理服务,恢复中断现场,返回中断继续执行。
(5)硬件设备
什么是设备独立性(无关性)?
即在应用程序中,使用逻辑设备名,来请求某类设备。系统实际运行时,将逻辑设备名映射成物理设备名使用。
设备驱动程序属于操作系统吗?它的任务是什么?
不属于操作系统,设备驱动程序,I/O进程与设备控制器之间的通信程序。
什么是缓冲区?–单缓冲,双缓冲,循环缓冲,缓冲池
缓冲区实际上就是一块内存,缓冲区的引入是为了缓和高速设备与低速设备的速度矛盾,提高设备与cpu的并行度,降低cpu的中断频率。缓冲区可以实现预读和滞后写。
为什么说缓冲是用“空间换时间?”举例说明Cachce的作用。
(1)缓冲要开辟一个缓冲区,用于连接高速设备与低速设备,用于缓解速度不匹配的矛盾。有了缓冲区,高速设备就不用停下来–等低速设备处理完成,而是通过缓冲区,把数据先放到缓冲区中让低速设备慢慢消化。这样就节约了时间。
(2)DISK Cachce可以减少磁盘读写次数,把频繁使用的数据放入其中。同时可以缓解磁盘与内存速度不匹配的矛盾。
谈一谈缓存的与外存的区别
答:缓存的存取速度快,但容量小,价格贵;
外存的存取速度慢,但容量大,价格便宜。
CPU—多级缓存
典型的CPU有三级缓存,离核心越近,速度越快,空间越小。L1一般32k,L2一般256k,L3一般12M。内存速度需要200个CPU周期,CPU缓存需要1个CPU周期。
本地缓存:在Java中使用本地缓存最简单的方式就是使HashMap或者ConcurrentHashMap,对于只读场景,两者都可以使用,对于缓存更新的场景,可以使用ConcurrentHashMap来保证数据的一致性。
什么是spooling技术? (独占设备–共享设备)—假脱机技术
Spooling技术是低速输入输出设备与主机交换信息的一种技术,使联机的方式得到脱机的效果。Spooling由输入/输出井(模拟联机I/O时的磁盘),输入/输出缓冲区,输入/输出进程组成。
spooling技术的特点是能提高I/O的速度,将独占设备变为共享设备。
eg:打印机是使用spooling技术的一个例子。当用户进程请求打印时,spooling系统同意为它打印的请求,但不是立刻把打印机分配给用户进程。而是
(1)先为该进程申请一个空闲磁盘块,将要打印的数据送入其中。
(2)为该进程申请一张请求打印表,将打印要求填入其中,再将该表挂到打印队列上。
什么是多核?
答:多核指在一枚处理器中集成多个完整的计算引擎(内核)。
linux和windows的区别?
答:(1)文件格式不同。windows操作系统内核是NT,而linux是shell;
(2)硬盘文件格式不同。windows硬盘文件格式是fat32,而linux硬盘文件格式是ext2或ext3,linux操作系统还多了一个SWAP格式的交换分区。
根据Flynn(弗林)分类法,可以将计算机系统分为哪几类?
答:四类。
单指令流单数据流机器(SISD)
单指令流多数据流机器(SIMD)
多指令流单数据流机器(MISD)
多指令流多数据流机器(MIMD)
计算机网络和分布式计算机系统的相同点与不同点?
(1)两者在计算机硬件连接、系统拓朴结构和通信控制等方面基本是一样的。
(1)分布式计算机系统:各互联的计算机可以互相协调工作,共同完成一项任务,在多台计算机上并行的运行。
(2)计算机网络系统中各计算机通常是各自独立进行工作的。
hadoop是什么?
(1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专门为大规模数据分析而设计的。(2)Hadoop就是一个分布式计算的解决方案。
(3)分布式计算的核心就是利用分布式算法,把运行在单台机器上的程序扩展到多台机器上并行运行,从而使数据处理能力成倍增加。Haddop就是为了解决这个问题诞生的。
请问对分布式的了解?
所谓分布式就是指数据和程序可以不放在同一个服务器上,而是分散到多个服务器。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统,会导致中心主机资源紧张的问题。
听说过比特币,区块链吗?------区块链的概念?
(1)比特币是“中本聪”提出的区块链技术的第一个应用。
(2)区块链是一种按照时间顺序,将数据块按顺序相连的方式组合成一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链技术的特点是,能保证链上的数据的可信性,即不可伪造性。
绿色计算(green computing)的重要性是什么?
绿色计算(green computing)是指本着对环境负责的原则使用计算机及相关资源。绿色计算包括:(1)采用高效节能的中央处理器(CPU)、服务器和外围设备、(2)妥善处理电子垃圾(e-waste)。
什么是前台作业,什么是后台作业?有什么区别?
在批处理兼分时的系统中,把分时系统控制的作业称“前台”作业,而批处理系统控制的作业称“后台”作业。前台作业优先权高,先处理前台作业。
计算机网络
如何构建计算机网络 ?–硬件、软件、协议
答:硬件:主机、通信处理机、通信线路、交换设备;
软件:各种能实现资源共享的软件,以及方便用户使用的工具软件;
协议:规定了网络传输数据时的规则。
怎样建立一个网站?(程序、域名、空间)
1.确定网站类型,开发网站程序,------程序
2.申请一个域名。-----域名
3.购买服务主机,用来放置网站程序。----空间
接入网络的两种类型?–宽带接入、拨号接入
计算机网络的分类?–局域网、广域网、个人区域网
网络按传输技术分类?–广播式网络、点对点式网络
(1)广播式网络:所有联网计算机都共享一个公共的通信信道。–eg:局域网
(2)点对点网络:每条物理线路连接一对计算机。--------------------eg:广域网
点对点和端到端工作在哪层?工作机制?
(1)点对点协议工作在链路层,用于两个直接相连结点的链路上。
(2)端到端协议工作在运输层,主要是用TCP传输协议。
网络按交换技术分类?–电路、报文、分组交换
(1)电路交换:发送数据前,在发送方与接收方之间建立一条专用的数据通路用于传输数据。
(2)报文交换:用户数据加上原地址、目的地址,校验码等信息后,封装成报文。将整个报文传送到相邻结点,全部缓存下来后,再转发给下一个结点。重复这个过程,直到数据传输到目的主机。
(3)分组交换:将数据分成较短且固定长度的数据块。在每个块中加上源地址、目的地址等信息后,以存储–转发的方式传输。
数据报是什么?
IP数据报(IP Datagram)。由首部和数据两部分组成。首部的前一部分是固定长度,共20字节。在固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。
存储转机制是什么?
答:存储转发(Store and Forward):以太网交换机的控制器先将输入端口到来的数据包缓存起来,先检查数据包的完整性和正确性。确定包正确后,取出目的地址,通过查找表找到输出端口地址,然后将数据包转发出去。
虚电路交换:
发送数据前,在发送方和接收方建立一条逻辑上相连的虚电路。与电路交换类似,整个通信过程分为。虚电路建立、数据传输、虚电路释放。
在虚电路网络中,每个结点都维持一张虚电路表。
带宽:网络通信线路所能传送数据的能力,是信道能达到的最高数据率。
计算机网络体系结构(分层)------计算机网络体系结构采用分层方式,
(优)各层之间相对独立,灵活性好,易于实现和维护。(ISO标准将网络分为7层),(TCP/IP标准将网络分为4层)。在分层体系中,第n层使用其下各层服务的总和,并向n+1层提供服务,最高层面向用户,最低层只提供服务。上层只能通过相邻层之间的接口使用下一层的服务。
协议的三个特征及含义?
(1)语法:规定数据传输格式、编码及信号电平;
(2)语义:规定了要完成的功能;
(3)同步:规定各种操作的时序关系。
网络有几层架构?
答:五层结构:物链网输用
七层结构:物链网输会示用
TCP/IP体系结构:接际输用( 网络接口层、网际层、运输层、应用层)
ISO和TCP/IP各层是什么?
答:ISO/OSI参考模型 TCP/IP协议模型 所对应PDU(协议数据单元)
应用层 ……………应用层 …………数据 用户与网络界面
表示层 ……………应用层 …………数据 数据压缩,加密,解密
会话层 ……………应用层 …………数据 建立管理会话
传输层 ……………传输层 …………段 … 传输管理,差错控制
网络层…………… 网际层 …… 包 差错控制,网际互联,流量控制
数据链路层 ………网络接口层 ……帧 成帧,差错控制,流量控制
物理层 ……………网络接口层 ……比特流 透明传输比特流
OSI和TCP/IP的相同点与不同点?
相同点:(1)都采取分层的体系结构
(2)都可以解决异构网络互联的问题
(3)都是下层为上层提供服务。
不同点:(1)OSI模型精确定义了服务,协议,接口这三个概念。TCP/IP则没有明确区分。
(2)OSI出现在协议发明之前,TCP/IP出现在协议之后。
(3)TCP/IP在设计之初就考虑到了异构网络互联的问题,并且将网际IP层作为一个单独重要的分层。
(4)OSI在网络层支持无连接和面向连接,传输层支持面向连接;
TCP/IP协议网络层支持无连接,传输层支持面向连接和无连接
目前用的最多的是7层和5层网络模型,说说他俩之间的区别?
答:五层网络模型:(物链网输用)
第五层 应用层 (Application Layer)
第四层 传输层 (Transport Layer)
第三层 网络层 (Internet Layer)
第二层 数据链路层
第一层 物理层 (Phsical Layer)
数据链路层协议分类
(1)面向字符的链路层协议:----PPP协议
(2)面向比特的链路层协议:—HDLC协议(High-level Data Link Control)
网络层有哪些协议?(设备:路由器) TCP/IP协议属于哪 层? 网络层
答:网络层有IP协议,地址解析协议ARP(IP-》MAC)、逆地址解析协议RARP、报文协议ICMP(差错报告报文、询问报文)、组管理协议IGMP
传输层各用了什么协议?,举个udp的列子
传输层有用户数据报协议UDP(User Datagram Protocol)和传输控制协议TCP(Tranmission Control Protocal)。
udp面向无连接不可靠传输,传输速率快,效率高,实时性好。tcp是面向连接的,能实现可靠传输。
举例:UDP由于实时性好,可用在直播转播。
应用层有哪些协议?
答:应用层有FTP(文件传送协议) DNS(域名解析协议)
SMTP(邮件传输协议)HTTP(超文本传输协议)
DHCP:基于UDP,给主机动态分配IP地址。
信号和码元?
信号:数据在传输过程中的表现形式;
码元:用一个固定时长的信号波形,表示一个k进制数据。而这个时长被称为码元长度。
信源、信道、信宿?
信源:产生和发送数据的源头;信道:传输数据的媒介;信宿:接受信号的终点。
什么是网络时延?
时延(delay)是指一个报文或分组从链路的一端传送到另一端所需的时间。
网络时延又分哪几部分组成?各产生于何处?
网络时延主要由传输时延和传播时延组成。
(1)传输时延:将数据包放到链路上所需要的时间;
(2)传播时延:数据包在链路上传输所需要的时间。
几种常见的编码?-非归零码、反向非归零码、曼彻斯特、差分曼彻斯特编码。
波特和比特的区别?
(1)波特是码元传输速率的单位,说明每秒传输多少个码元。
(2)比特是信息量的单位。
(3)但,信息的传输速率“比特/秒”与码元的传输速率“波特”在数量上却有一定的关系
奈奎斯特定理:在无噪声干扰的信道中,极限码元传输速率为2W波特。若用V表示离散电平数,则极限数据传输率=2WLogV比特每秒。
对于奈氏准则,结论:
(1)任何信道中,码元的传输速率是有上限的;
(2)信道频带越宽,码元的传输速率就会越高。
(3)奈氏准则只给出码元传输速率的限制,但没有对信息传输速率给出限制。
香农定理:
给出了在带宽受限,且有噪声干扰的信道,极限数据传输率=WLog(1+S/N)比特每秒。S/N为信噪比。
对于香农定理,结论:
(1)信道的带宽越大,或信噪比越大,则信息传输速率就越高。
(2)只要信息的传输速率,低于信道的极限数据传输率,就一定能找到某种方法,来实现无差错的传输。
数字数据调制为模拟信号?
(1)调频 (2)调幅 (3)调相 (4)调幅+调相
什么是模拟信号、数字信号?
答:数字信号指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示。
模拟信号是指在给定范围内表现为连续的信号。
模拟数据编码为数字信号?–采样、量化、编码
(1)采样:采样信号≥2*模拟信号最高频率时,所得的离散信号可无失真的代表被采样的模拟信号。
(2)量化:将采样得到的离散信号,按一定的分级标准,转化为离散的数字量。
(3)编码:将量化的数字量,转化为二进制编码。
双绞线的规格?
答:1、双绞线按其是否外加金属网屏蔽层分:屏蔽双绞线和非屏蔽双绞线。
2、按电气特性分为3类、4类、5类、超5类、6类、7类线。5类线的最大速度为100M,5类线上标有CAT5字样,而超5类线上标有5e字样。
同轴电缆的规格?-------内导体、绝缘层、网状编织屏蔽层、塑料外壳。
按特性阻抗值的不同分为50欧和75欧同轴电缆,50欧用于传输基带信号,75欧用于传输宽带信号。
光纤:损耗小,中继距离长------单模光纤、多模光纤
物理层接口的特性----机械特性,电气特性,功能特性,规程特性
数据链路层封装成帧的方法?
(1)字符计数法:帧头使用一个计数字段,来标明帧内字符数。
(2)字符填充法:使用一些特定字段来定界一个帧的开始(DLE STX)与结束(DLE ETX)。
(3)零比特填充法5110:发送方在遇到5个连续的1,则自动在其后插入一个0;接受方收到5个连续的1,则自动删除其后的0。
(4)违规编码法:借用一些违规编码序列,来定界帧的开始与结束。
数据链路层差错控制:奇偶校验码、循环冗余码–(这两检错)、海明码(能纠错)。
数据链路层流量控制与可靠传输?–停等,GBN,SR
(1)停止等待协议
答:发送方每发送一帧,都要等待接收方的应答信号,之后才允许发送下一帧。所以传输效率很低。
(2)后退N帧协议 GBN
答:发送方可连续发送帧,接收方只允许按顺序接收帧,当发送方发现某一帧在计时器超时后还未返回其确认信息,则该帧被判为出错或丢失。此时发送方就重传该帧及之后的所有帧。
后退N帧协议中,若采用n比特对帧编号:接受方窗口=1;1《=发送方窗口《=2^-1
(3)选择重传协议 SR
答:选择重传协议:只重传出现差错,或者是超时的数据帧。接收方要设置缓冲区,暂存那些未按序正确接收到的帧,等到收到所有缺序的数据帧后再一并交付给上一层。
选择重传协议的差错处理策略:一旦怀疑帧出错,就会发一个NAK否定帧,要求重传NAK中制定的帧。
网络中的复用技术?现在比较流行的网络介质控制方式有哪些?
使用什么技术实现多路信号同一信道进行传播?—复用技术
答:复用技术是指一种信道划分的技术。多路复用技术把多个信号组合在一条物理信道上进行传输,提高了信道利用率。
介质访问控制可分为:静态划分信道,动态划分信道;
静态划分信道:频分多路复用(FDM)、时分多路复用(TDM)
波分多路复用(WDM)、码分多路复用(CDM)
动态划分信道:轮询访问介质控制:令牌传递协议
随机访问介质控制(ALOHA,CSMA,CSMA/CD,CSMA/CA)
多路分解:将传输层报文段中的数据,交付到正确的套接字的过程称为多路分解。
以太网的监听算法(当网络发生冲突时,有几种监听算法)?-------CSMA
答:有3种。分别是1坚持,非坚持,p坚持
1坚持:发送数据前,先监听,空闲则立刻发送,忙则等待,同时继续监听,直到信道空闲为止,发生冲突,则随机等待一段时间后,再重新监听。
非坚持:发送数据前,先监听,空闲则立刻发送,忙则放弃监听,随机等待一段时间后,重复这个过程。
p坚持:发送数据前,先监听,空闲则以p的概率发送数据,以1-p的概率推辞到下一时隙发送。忙则等到下一时隙再监听。
CSMA/CD (carry sence multiple access collision)载波监听多路访问/碰撞检测
载波监听:信道空闲则立即发送数据并进行冲突检测,忙则继续监听,直到信道空闲。
碰撞检测:适配器边发送数据边检查信道上的电压变化情况,以判断是否还有其他站点在发送数据。如果检查到冲突,则停止发送帧。并用二进制指数规避算法来等待一段时间后重新监听。
CSMA/CA 载波监听多路访问/碰撞避免----局域网
碰撞避免,并不是指该协议可以完全避免碰撞,而是指尽量减少碰撞发生的概率。碰撞避免的机制包括;
(1)预约信道:发送方发送数据的同时通知其他站点自己传输数据所需的时间。
(2)ACK帧:只有发送方收到返回的ACK帧才确认数据已经正确到达接收端。
(3)RTS/CTS帧:主要解决无线网络中的“屏蔽站”问题。
在CSMA/CD(CSMA/CA)协议中,一旦检测到冲突,为降低再冲突的概率,需要等待一个随机时间,然后再使用CSMA方法试图传输,请问此时采用什么算法?
二进制指数规避算法。(解决CD或CA冲突的算法都是二进制指数规避算法)
简述二进制指数退避算法?
答:在遇到重复的冲突时。二进制指数退避算法提供了一个处理重负荷的方法。
(1)确定基本退避时间t(一般取争用期)
(2)定义参数k为重传次数和10之间取较小值;重传次数小于10次时,k的值为重传次数,重传次数大于10次,则k一直取10;
(3)从离散集合[0,1…,2^k -1]中随机取出一个数a,重传需要退避的时间为a倍t,即a倍的争用期;
(4)当重传次数达到16次还不能成功时,抛弃此帧并向上层报告出错。
局域网如何实现?
局域网是在一个局部的地理范围内(如一个学校内),将各种计算机,外部设备和数据库等互相联接起来组成的计算机通信网络。它可以与其他的局域网、数据库相连接,构成一个更大范围的信息处理系统。
(1)局域网:逻辑拓扑为总线型,物理拓扑为星型;
(2)传输介质:双绞线/光芯;
(3)介质访问控制:CSMA/CD,令牌传递协议;
**无线网络和协议?**IEEE802.11
无线网络:wifi、蓝牙、卫星通信
无线局域网协议:IEEE 802.11标准。其中IEEE 802.11协议、蓝牙标准等是无线局域网,所有标准中最主要的协议。
谈一谈Wlan—IEEE802.11
WLAN,(wireless local area network)无线局域网,指应用无线通信技术将计算机设备互联起来,构成可以互相通信和实现资源共享的网络体系。
局域网与广域网的区别?
答:局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个学校内),将各种计算机,数据库等互相联接起来组成的计算机通信网。局域网可以与其他的局域网、数据库相连接,构成一个较大范围的信息处理系统。
广域网(Wide Area Network,WAN),是一种跨度较大的计算机网络的集合。广域网包括大大小小不同的子网,广域网(WAN),就是所说的Internet,它是一个遍及全世界的网络。
局域网覆盖范围较小, 广域网覆盖范围较大
广播通信 点对点通信
OSI的物、链 OSI的物、链、网
资源共享 数据传输
广域网使用的链路层协议:PPP协议、HDLC协议(零比特填充法)
IEEE802.3LAN,传输距离上可以加中继器,是否能够无限延伸?
答:不能,因为数据包有关。802.3是以太网协议,以太网协议规定数据包的长度最小为64字节最大为1500字节(1518字节)。
VLAN是什么?
答:VLAN(Virtual Local Area Network)“虚拟局域网”。
在计算机网络中,一个二层的网络可以被划分为多个不同的广播域,一个广播域对应一个特定的分组,不同的广播域之间要想通信,需要通过一个或多个路由器,这样的广播域称为虚拟局域网。
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户不受物理位置的限制,可以根据特定的因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样。
VLAN的优点:网络设备的移动、添加和修改的管理开销小;可以控制广播风暴,提高网络的安全性。
VLAN传输数据包时什么时候加标签,什么时候去标签?
答:交换机端口收到计算机发的无标签数据报时,就打上本端口的虚拟局域网ID号;如果收到有标签的数据包,则直接丢弃。
PPP协议---------点对点通信协议
该协议应用在两个直接相连结点的链路上。通过拨号或专线方式建立点对点连接,发送数据。
PPP协议由链路控制协议、网络控制协议、和一个将数据包封装到串行链路的方法组成。
PPP协议(1)提供差错检测,但不提供纠错功能;(2)只提供全双工通信;
(3)PPP协议两端可以运行不同的网络层协议。
什么是PPOE?(point to point protocol over Ethernet)
基于以太网的点对点通讯协议,是将点对点协议封装在以太网框架中的一种网络隧道协议。
在这种网络模型中,所有用户的主机都需要能独立的初始化自己的PPP协议。为了能在广播式的网络上建立、维持各主机与访问集中器之间的点对点关系,就需要每个主机与访问集中器之间建立唯一的点到点的会话。
网络的拓扑结构?
网络拓扑结构是指用传输媒介互连各种设备的物理布局,即用什么方式把网络中的计算机等设备连接起来。网络的拓扑结构主要有:(1)星型结构、(2)环型结构、(3)总线结构、(4)网状结构、(5)树型结构等。
星型结构:以中央节点为中心,其他节点都与中央节点直接相连。
环型结构在LAN中使用较多。(lan–逻总、物星)
**什么是路由器?**什么是下一跳地址? 路由器里面下一跳地址怎么构成?
(1)路由器(Router)属于网络层设备,是连接各局域网、各广域网或连接局域网与广域网的设备,路由器会根据信道的情况自动选择路由,以最佳路径,转发数据。
(2)路由器有路由表,下一跳地址即链路上与之相连的下一个路由器的地址,或具有路由功能的设备的IP地址。即下一次要把数据包转发给哪个路由器。
(3)路由器由ROM、RAM、NVRAM、FLASH组成。
ROM:只读存储器。保存着最基本功能的代码,用于引导路由器。
RAM:随机访问存储器。
NVRAM:非易失性随机访问存储器。当切断电源时,NVRAM用一个电池来维护其中的数据。
FLASH:闪存。FLASH中容纳了IOS软件的镜像。
网关(Gateway):是一个网络连接到另一个网络的“关口”。实质上是一个网络通向其他网络的IP地址。默认网关,是默认值,如果主机找不到可用网关,就把数据包转发给默认网关,由这个网关来处理数据包。
网关系统的原理作用什么的?
答:网关也被称为IP路由器。要实现两个网络之间的通信,必须通过网关。
原理:如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给自己的网关,再由网关转发给网络B的网关,网络B的网关再把数据包转发给网络B中的目的主机。
网关的两种工作模式?
答:路由模式(直通模式):不转换数据包的源IP地址。
NAT模式:网络地址转换”,是一种把内部私有IP地址经NAT转换成合法的公有IP地址的技术。
在网络层中,路由器怎么工作的,有哪些算法和协议?
答:当源主机向目标主机发送数据报时,路由器先检查源主机与目标主机是否在同一个网络上,如果在同一个网络上,则直接交付而无需通过路由器,若不在同一个网络上,路由器则按照路由转发表将数据转发给下一个路由。
跨网络的通信必须经过路由器。例如连接不同的局域网,不同的虚拟局域网,不同的广域网,或是把局域网与广域网连接起来。都要经过路由器。
谈谈路由协议,路由器间有哪几种协议,具体是怎么个流程------下一问
1、 RIP协议-路由信息协议 (距离向量路由协议)
2、 OSPF协议-开放最短路径优先协议 (链路状态路由协议)
3、 BGP协议-边界网关协议----在自治系统之间使用BGP协议。对设备要求较高,占用资源较大。
RIP,OSPF协议的作用?、路由算法?
(1)路由信息协议rip。采用距离向量路由选择算法。它选择路由的度量标准(metric)是跳数。指从源端口到目的端口所经过的路由器个数。每经过一个路由器跳数加1。实质是迭代计算跳数最小的路由通路。最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
优点:对资源消耗较低,配置简单。缺点:链路收敛慢,只适用于小型网络。
(2)开放最短路径优先协议OSPF。采用链路状态路由选择算法。相当于一种导航软件,OSPF不但能知道走哪条路代价最小,还知道这条路径的拥塞情况,综合考虑两方面,决定数据包往哪些路由器转发。
优点:链路收敛快,不会出现像rip那样,坏消息传得慢的问题。
RIP与OSPF的区别
答:(1)OSPF使用洪泛法向本自治系统内的所有路由器发送信息,而RIP仅仅向与自己相邻的路由器发送信息。
(2)OSPF发送的信息是与本路由器相邻的所有链路状态的信息。
(3)OSPF当链路状态发生改变时,才用洪泛法向所有路由发送消息。不会出现RIP协议,坏消息传的慢的问题。
(4)OSPF是网络层协议,直接使用IP数据报传送。而RIP是应用层协议,在传输层使用UDP协议。
冲突域 广播域
网:路由器 √ √
链:桥、交 √ X
物:集、中 X X
集线器、交换机、路由器各工作在哪一层?有什么区别?
(1)集:物,用于信号的放大和连接多个终端设备。它没有智能处理能力,只负责透明的传输比特流。
(2)交:链,有多个冲突域和广播域,有多个端口用于连接各个主机。比集线器智能一些,它能分辨出帧中的源MAC地址和目的MAC地址,使用物理地址转发数据----转发速度较快。
(3)路:网,能隔离广播风暴,网络安全性好。比交换机更“聪明”一些,能理解数据包的IP地址,收到一个数据包,就检查其IP地址,如果目标地址是本地网络就不理会,如果是其他网络的,就通过路由转发表,将数据包转发出去。路由器,用IP地址转发数据----转发速度较慢。
中继器,集线器,网桥,交换机,网关(IP路由器),路由器功能,区别?
(1)中:物,通过对信号的重新发送或者转发,来扩大网络传输的距离。
(2)集:物,集线器在转发之前将弱信号重新生成。并且它把一个端口接收的信号,向所有端口分发出去。
(3)并且中与集的区别:集线器是多端口的中继器。
数据链路层设备?—网桥、交换机
网桥:能把多个以太网,通过网桥连接起来,变为一个网段。
(1)能过滤信号量;(2)扩大物理范围;(3)可互联不同类型的局域网。
交换机:以太网交换机是多端口的网桥;
交换机配置模式有哪几种,分别是什么?配置交换机时,他们的先后顺序?
答:用户、特权、特殊、全局、接口配置模式。
交换机的三层模型?分别是什么(物、链、网),分别的作用?
答:三层交换机是为了区别传统二层交换机的。传统交换机运行在数据链路层,所以叫二层交换机。三层交换机表示它拥有OSI第三层网络层的部分功能(路由功能),也就是把二层的交换和三层的路由整合到一台设备。
交换机的三层是指:物、链、网
(1)物理层:透明传输比特流;
(2)数据链路层:成帧、差错控制、流量控制
(3)网络层:将数据组装成包、差错控制、流量控制、路由与转发。
交换机的桥接(接入)模式和中继模式的区别?
桥接(Bridging),指依据OSI模型的链路层地址,对数据包进行转发的过程,工作在OSI模型的第二层。
中继(Relay)是两个交换之间的一条传输通路。可扩展无线网的覆盖范围,消除所有盲点。
交换机存储转发,直接转发,无碎片转发,三者之间的区别------几种交换模式
(1)直接转发:指交换机在获得目的地址后立刻转发数据包。这种方法的优点是转发速度快,但不判断转发包的完整性,会导致一些包碎片在网络上传输;
(2)存储转发:指交换机先把数据包缓存下来,判断数据包的完整性和正确性后。查找数据包的转发地址,然后将数据包转发出去。优点是能够确定数据包的完整性和正确性。但由于数据包是先接收后发送的,交换速度相对较慢;
(3)无片段直接转发:指交换机在获取数据包后转发数据包的前64个字节。小于64字节的数据包被视为片段,不被转发。这样既避免了存储转发时速度慢的问题,又避免了直接转发时的碎片问题。
交换机和交换机怎么连接?
平行线序,从上一台交换机的一个网口接出来,接到下一台交换机UPLINK口。
总线布局的以太网和利用交换机的以太网工作原理有什么不同?
(1)总线拓扑结构是将网络中的各个节点用一根总线挂接起来,实现计算机网络的功能。任何连接在总线上的计算机都能在总线上发信号,并且所有计算机都能接收信号。
(2)以太网交换机的结构是每个端口都直接与主机相连,并且一般都是全双工通信方式。交换机能同时连通许多对端口,使每一对相互通信的主机都能像独占通信那样,进行无冲突地传输数据。
广播风暴是什么 什么情况下发生。
答:由于网络故障或其他原因,导致广播数据帧在网段中被大量复制并传播,这就是广播风暴
原因(1)网卡损坏:损坏的网卡,不停向交换机发送大量无用的数据包,产生了广播风暴。
(2)网络环路:由于一条物理线路的两端,同时接在一台网络设备中。
(3)网络病毒:有一些病毒,一旦有机器中毒后,会立即通过网络进行传播。网络病毒的传播,就会损耗大量的网络带宽,引起网络堵塞,造成广播风暴。
IPV4与IPV6的区别?
(1)IPv4占32位,IPv6占128位;
(2)IPv4的首部为4B的整数倍,IPv6的首部为8B的整数倍;
(3)IPv6简化了分组首部,删除了校验和字段;
(4)IPv6有更好的支持选项;
(5)IPv6只有在包的源结点才能分片,IPv4可在路由器/主机处分片;
IPV6转IPV4的方法?
(1)双协议栈技术
(2)隧道技术
IPv6的路由技术。IPv6路由查找与IPv4的原理一样,也是最长匹配原则,选择最优路由时,允许地址过滤,聚合,注射操作。
数据的分片与重组发生什么时候—大于其要转发网络,MTU的数据报时–分片
IP地址的分类?每类的主机数是多少?
答:IP地址分5类,常见的地址是A、B、C类
A类(网络号8位) 最大主机数2^24 -2个
1.0.0.1到127.255.255.254
B类(网络号16位) 最大主机数2^16 -2个
128.0.0.1到191.255.255.254
C(网络号24位) 最大主机数2^8 -2个
192.0.0.1到223.255.255.254
D类:224.0.0.0到239.255.255.255用于多播地址
E类:240.0.0.0到255.255.255.254保留以后所以
给出子网掩码,计算每个子网的主机数
子网掩码中网络号全为1,主机号全为0,根据0的位数n,就可求出每个子网的最大主机数2^n-2;
255.255.255.0表示什么? —表示C类的子网掩码
知道子网掩码如何确定网络号?
子网掩码和IP地址逐位与运算就能得到网络号。
解释Mac地址,ip地址,端口?
(1)MAC(Media Access Control)媒体访问控制,或物理地址:物理地址用来标识网络中唯一的一块网卡。在OSI模型中,第二层–数据链路层负责MAC地址,每一个主机都有一个MAC地址。
(2)IP地址:(Internet Protocol Address)互联网协议地址。IP地址是IP协议提供的一种统一的地址格式,IP协议为互联网上的每一个网络和每一台主机分配一个逻辑地址。在OSI模型中,第三层–网络层负责IP地址。每个网络位置都有唯一的IP地址。
(3)“端口”(port):设备与外界通讯的出口。网络端口(集线器、交换机、路由器—连接网络的接口),计算机中唯一标识一个进程的也叫端口。
什么是ARP?
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址(MAC)的一个TCP/IP协议。
在ARP协议中请求分组是广播,响应分组是单播。
DHCP动态主机配置协议?
主机可从服务器动态获取IP地址,DHCP是应用层协议,基于UDP。DHCP服务器给主机动态分配IP地址的过程为:
(1)客户机广播,DHCP发现消息;
(2)DHCP服务器收到消息后,向网络中广播DHCP提供信息。
(3)客户机收到消息后,广播DHCP请求消息;
(4)DHCP服务器收到消息后,广播DHCP确认消息,并将IP地址分配给客户机。
ICMP协议的种类有:差错报告报文、询问报文。
(1)差错报告报文类型有:终点不可达,源点抑制,时间超过,路由重定向。
(2)询问报文类型:PING,时间戳,路由询问报文。
PING用的是什么协议? ICMP-----(Internet Control Message Protocol)
PING使用的是ICMP报文协议中的询问报文,是TCP/IP协议的一个子协议,用于在IP主机、路由器之间传递控制消息。
Tracert原理?
Tracert的原理是利用ICMP报文和IP首部的TTL字段。TTL字段是防止数据报在网络中不停的流动。
NAT是什么?
(1)网络地址转换(Network Address Translation)属于接入广域网(WAN)技术,是一种将私有地址转化为公有地址的转换技术。
(2)因为,在因特网的所有路由器,对目的地址为私有地址的数据一律不进行转发,所以要采用NAT技术将私有地址转化为公有地址。
(2)转换过程需要NAT转换表实现(本地IP地址:端口)到(全球IP地址:端口)的映射。这种映射方式,就可让多个私有IP地址映射到同一个全球IP地址。
NAT作用?--------减缓IP地址耗尽的速度。
NAT的几种模式?分别是什么?
(1)静态NAT(1–》1):服务器地址必须采用静态转换,以便外部用户可以方便使用这些服务。
(2)动态NAT(1–》n):可以让多个本地地址,共用一个全球地址。
(3)重载NAT(1–》n):通过端口来识别不同的内部私有地址,可以使多个私有地址,同时使用一个公有地址。
TCP和UDP的区别?什么是面向连接,面向无连接。
(1)TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。
(2)UDP(User Data Protocol,用户数据报协议)。是面向无连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
区别:
(1)TCP:面向连接、能保证可靠传输、用于传输大量数据。但建立连接需要较多时间和系统资源开销。TCP用于可靠性要求较高的场合如:SMTP,FTP,HTTP。
UDP:面向无连接、不可靠传输。用于传输少量数据、传输速度快,效率高。实时性。UDP用于实时性较强的场合如:视频聊天,语音电话等。
(2)UDP分组首部开销小,UDP仅有8B的分组首部;而TCP有20B的分组首部。
面向连接:是指通信双方在通信时,要事先建立一条通信线路。连接建立的三个过程:建立连接、使用连接和释放连接。
面向无连接,是指通信双方在通信时,不需要先建立好一个连接。资源在数据传输时动态地进行分配。优点是灵活性好、实时性好。但无连接服务是一种不可靠的服务。即“尽量大努力支付”。
TCP可靠传输机制?
(1)校验:与UDP一样,增加伪首部;
(2)序号:为数据中的每一个字节都编上一个序号,序号的值是本报文段所发送数据的第一个字节的序号。
(3)确认:确认号是指对已收到数据,最后一个字节的序号+1,TCP采用累积确认,确认号表示该序号之前的所有数据都已正常接收。
(4)重传:超时或冗余ACK帧。
超时:若超时就重传这个数据段;
冗余ACK:当连续收到三个冗余ACK时,就重传该报文。
TCP连接的三次握手协议
所谓的“三次握手”是对每次发送的数据量进行跟踪和协商,使数据段的发送和接收同步。
第一次握手:客户端发送数据段x到服务器,此时同步位SYN=1。(请求)
第二次握手:服务器确认数据段x+1(希望下次收到数据段x+1),并向客户端发送数据段y。此时同步位SYN=1,确认位ACK=1;(确认,请求)
第三次握手:客户端确认数据段y+1,并向服务器发送数据段x+1,此时确认位ACK=1。(确认)
TCP释放的四次握手协议
第一次握手:客户端发送数据段u到服务器,此时结束位为FIN=1;(结束)
第二次握手:服务器端确认数据段u+1,并向客服端发送数据段v,此时的确认位ACK=1;(确认)
第三次握手:服务器端确认数据段u+1,并向客服端发送数据段v+i,此时的确认位ACK=1,结束位FIN=1。 (确认结束)
第四次握手:客户端确认数据段v+i+1,并向服务器发送数据段u+1,此时的确认位ACK=1;
TCP怎么控制拥塞?(慢开始与拥塞避免、快重传和快恢复算法)
(1)慢开始与拥塞避免算法
开始时,拥塞窗口置为1,并设置门限值,每经过一个RTT,拥塞窗口值加倍。当拥塞窗口增长到门限值时,改用拥塞避免算法,每经过一个RTT,拥塞窗口加1。当网络发生拥塞,就将新门限值更新为发生拥塞时的一半,拥塞窗口重置为1,并重新执行慢开始算法。
(2)快重传和快恢复算法
快重传和快恢复算法在发生拥塞前和慢开始拥塞避免算法一样,只是当发生拥塞时,拥塞窗口不是立即重置为1,而是把拥塞窗口变为发生拥塞时窗口值的一半,之后按拥塞避免算法加法增大。
TCP拥塞控制与流量控制的区别?
(1)拥:指防止过多的数据注入到网络中,这样可以避免网络中的路由器或链路过载。
(2)流量控制:通过动态控制发送端发送窗口的大小,实现端到端的流量控制
计算机怎样访问网址?(DNS域名解析)域名—》IP
答:先查询到域名的IP地址,计算机根据IP地址去访问网址。
域名解析---------递归查询、递归和迭代查询相结合
(1)递归查询:先查询本地域名服务器,若查询失败,本地域名服务器将递归的查询根域名服务器,若查询失败,根域名服务器递归的查询顶级域名服务器,若查询失败,顶级域名服务器递归查询权限域名服务器。查询成功则依次返回去。
(2)递归和迭代查询相结合:主机先查询本地域名服务器,若失败,本地域名服务器查询根域名服务器,若失败,本地域名服务器查询顶级域名服务器,若失败,本地域名服务器查询权限域名服务器。查询成功则将IP地址返回给本地域名服务器,本地域名服务器再将IP返回给主机。
DNS递归和迭代区别是什么? eg(老师问问题)
递归:各域名服务器之间单线信息交互;1-》2-》3-4
迭代:本地域名服务器和相关服务器都有信息交互;1-》2,1-》3,1-》4
B/S和C/S的区别?
(1)C/S:又称Client/Server或客户/服务器模式。它把客户端与服务器区分开来。在C/S结构中客户端需要安装专门的软件。每一个客户端软件的实例都可以向服务器发出请求。C/S结构能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。优点是客户端响应速度快。
(2)B/S:是Brower/Server的缩写,客户机上只需安装一个浏览器,例如IE浏览器,服务器安装SQL Server等数据库。浏览器通过网络服务与数据库进行交互。B/S结构的优点是可以在不同设备进行操作,而不用在客户机上安装任何专门的软件。
客户服务器模式的例子?(C/S)
eg:(C/S)模式最常见就是目前在因特网上使用的网页。例如,在维基百科阅读文章时,你的电脑和浏览器就被当做一个客户端,组成维基百科的电脑、数据库和应用程序就被当做服务器。当浏览器向维基百科请求一个指定的文章时,维基百科服务器从维基百科的数据库中找出该文章的信息,再发送回本地浏览器。
文件传输协议FTP?
(1)FTP采用C/S工作方式,使用TCP连接。
(2)控制连接:传送请求,采用服务器端口号21,整个会话期间一直保持打开状态。
(3)数据连接:传送数据,采用服务器端口号20,每次数据传输完毕后就关闭。
邮件传输协议?
(1)SMTP(simple mail transfer protocol):采用C/S工作方式,建立在TCP连接上。发送方用用户代理,使用SMTP协议把邮件发送到邮件服务器。
(1)POP3(post office protocol-version 3):采用C/S工作方式,建立在TCP连接上。接收方用户代理,使用pop3协议把邮件从邮件服务器上取下来。
HTML 超文本标记语言—Hypertext Markup Language
HTTP协议?–Hypertext Transfer Protocol
(1)HTTP协议是无状态的;
(2)HTTP协议是无连接的,双方在交换HTTP报文之前不需要先建立HTTP连接。
(3)HTTP既可以使用持久连接,也可使用非持久连接。
持久连接:发送响应后仍保持这条连接
非持久连接:每个对象的发送都需要单独建立一个TCP连接。
ATM网络
ATM是异步传输模式的缩写,ATM采用面向连接(TCP)的传输方式,将数据分割成若干固定长度的信元,通过虚电路方式进行传输。ATM集交换、复用、传输为一体,复用采用的是异步时分复用方式。
P2P网络
(1)P2P(对等网络,是一种有别于传统C/S客户/服务器式的分布式网络)直接将人们联系起来,让人们通过互联网直接交互。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P使网络上的沟通变得容易。
(2)P2P应用程序包括:发现,连接和通信三个阶段。发现阶段:负责动态定位对等节点的网络位置;连接阶段:负责在对等节点之间建立网络连接;而通信阶段:负责在对等节点之间传输数据。
简述C/S与P2P混合结构的特点----网络上每台主机既是服务器又是客户端。
远程桌面怎样登录是什么原理?
答:1.和对方机器建立一个Socket链接(协议估计是tcp/ip这种有状态协议)
2.在本地虚拟一个对方的系统
3.对方系统会在这个socket链接上实时发送系统状态数据
4.收到对方的数据后,本地虚拟的系统通过这个数据还原对方系统操作。
5.在本地操作这个虚拟的操作系统,并发送数据命令到对方机器,
6.对方机器接收指令,通过Hook(底层钩子),等操作系统。
其中应用的技术:
1.SOCKET、2.Hook钩子3.虚拟技术4.传输
oto,btb,btc的各自含义
OtO:(Online To Offline)指将线下的商务与互联网结合,让互联网成为线下交易的平台。
BtB(Business-to-Business)是指企业与企业之间通过专用网络,进行数据的交换,开展交易的商业模式。
BtC(Business-to-Customer)“商对客”就是常说的直接面向消费者销售产品和服务的模式。
用白军和蓝军解释一下没有100%可靠的通信
两军作战,白军在山谷下,蓝军分成两队占领山头。蓝军要发动进攻,一队向二队发送信息准备进攻,二队为了验证信息真伪,发送确认信息要求一队确认,一队再发送确认信息。结果永远不能确认。
说说搜索引擎的原理?
搜索引擎:指的是收集因特网上大量网页,并对网页中关键词进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词时,所有包含该关键词的网页都被搜索出来。然后,按照搜索结果与搜索关键词的匹配程度,进行排列。
游戏引擎中有哪些算法:
在游戏中路径的规划通常属于图论内容,可以采用Dijkstra算法计算最短路径。
TCP/IP网络协议的核心是什么,如何引出“over everything”和“everything over?”
(1)TCP/IP(传输控制协议/网间协议)是一种网络通信协议。它规范了网络上的所有通信设备,尤其是各个主机之间的数据交换格式及传送方式。
(2)everything over IP:即IP为王,网上信息业务宜一律使用IP。
请问WEB 2.0的特点?—Web 2.0强调网络的外部延展性,形成去中心化的型态。
什么是语义网?
简单地说,语义网是一种能理解人类语言的智能网络,它不但能够理解人类的语言,而且还可以使人与电脑之间的交流变得像人与人之间交流一样轻松。
物联网与互联网的概念
物联网(Internet of Things,IOT):从大范围来说,没有互联网就没有物联网。
物联网是指:物与物之间通过互联网通信技术,实现物物通信、协调、控制。
C、C++、Java
C与C++的区别
C是结构化、层次化的语言,c++是在c的语言的基础增加了面向对象,类。
即C语言面向过程,C++面向对象。
C++、Java的优缺点------C和C++的区别-----C面向过程、C++面向对象
C优点:
(1)C是结构式语言
(2)C程序生成代码质量高,程序执行效率高
(3)C适合于多种操作系统,如DOS、UNIX
C缺点:
(1)可重用性差
(2)数据安全性差
(3)难以开发大型软件和图形界面的应用软件
(4)把数据和函数分离为相互独立的实体
C++优点:
(1)可扩展性强
(2)数据安全性好
(3)面向对象的特性
(4)通过继承与多态性,可提高程序的可重用性,使软件开发和维护都更方便。
C++缺点:
(1)库涵盖范围不足
(2)非并行
(3)封装度不够
Java优点:
(1)面向对象性(面向对象的程度可以达到 95%)
(2)跨平台性
(3)支持多线程
Java缺点:
(1)效率低
(2)跨平台是它最大的优点也是最大的缺点
什么是面向对象?-----OO
答:面向对象是一种对现实世界理解和抽象的方法,可以将现实世界中的物质抽象为对象,并将具有某些相同特性的对象抽象为一个类。面向对象是相对于面向过程来说的,面向对象,把相关的数据和方法组织为一个整体来看待,更贴近事物的模式。
什么是封装性?
封装就是把普通的对象进行封装,把对象的访问限定设为私有,对外提供get和set方法,其他类只能通过get和set方法对象属性值进行操作。即只留必要的方法和接口,让用户使用。
封装的优缺点?
优点:(1)数据安全性好
(2)不必关心具体的实现;
(3)面向对象三大特征之一;
缺点:如果封装太多,虚类太多,效率也会低
封装的缺点可以使用什么改善?-----(友元函数)
友元函数 关键字:friend 将一个函数声明为一个类的朋友
用friend关键字对函数进行声明,友元可以访问与其具有好友关系的类中的私有数据成员。
友元类
将一个类声明为另一个类的友元,形式为:friend class 类名;例如,将B类声明为A类的友元,此时B类就是A类的朋友,B类中的所有函数都是A类的友元函数,可以访问A类中的所有成员。
(1)友元的关系是单向的,如,B类是A类的友元,不等于A类也是B类的友元。
(2)友元的关系不能传递。如B类是A类的友元,C类是B类的友元,不等于C类是A类的友元。
面向对象程序设计语言(java、c++)的3个特点?
(1)继承,方便对已有函数的功能进行直接调用和扩展,目的是——代码重用。
(2)封装,可以隐藏具体实现细节,使得代码模块化。方便调用类库里面已经写好的函数。
(3)多态:指不同的子类对象可以根据同一消息,做出不同的行为。多态可以实现对派生类对象的统一调度,目的——接口重用
C++语言,什么是继承性? 在现实生活中举例?
答:继承性是对已有函数的功能进行直接调用和扩展,例如:子类共享父类数据结构及方法的机制。
例子:编写一个有关日期(年、月、日)和时间(时、分、秒)的程序。该程序建立三个类,一个是日期类Date,一个是时间类Time,另一个是日期和时间类DateTime,它是Date类和Time类为基类的派生类。也就是DateTime继承自Date类和Time类。
单继承和多继承是什么-----c++支持多重继承,Java不支持多重继承
(1)单继承就是一个子类只有一个父类
构造函数(包括析构函数)是不被继承的,所以一个派生类只能调用他直接基类的构造函数。当定义派生类的一个对象时,首先调用基类的构造函数,对基类成员进行初始化,然后执行派生类的构造函数。
(2)多继承就是一个子类可以有多个父类
在Java中,使用extends只能继承一个类。而使用implements关键字可以使java具有多继承的特性,implements是接口的实现(没有什么构造函数),只是接口可以被其他类继承而已。
继承
(1)公有继承:基类的公有成员和保护成员保持原来的访问属性,私有成员仍为私有属性。
(2)私有继承:基类的公有成员和保护成员变为私有成员,私有成员仍未私有属性。
(3)保护继承:基类的公有成员和保护成员变为保护成员,私有成员仍未私有属性。
虚基类:继承间共用基类时,只保留一份成员。虚基类可以避免产生二义性。
Class A {…};
Class B:virtual A {…};
虚函数
虚函数就是在基类声明为虚拟的(virtual),之后在派生类中才正式定义此函数。虚函数允许在派生类中重新定义与基类同名的函数,并可通过基类指针或引用来访问基类和派生类中的同名函数。
纯虚函数
纯虚函数是在声明虚函数时被初始化为0的函数。=0并不代表函数返回值为0,只是形式上的作用,告诉编译系统,该函数为纯虚函数。
纯虚函数不能被调用,在派生类中重定义后,才能被调用。作用是在基类中为其派生类保留一个函数的名字。以便派生类根据需要对其进行定义。
抽象类:不用来定义对象而只作为一种基本类型用来被继承的类,称为抽象类,由于它常作为基类,所以通常称为抽象基类。
c++实现多态的方法-----多态—静态多态(静态联编)、动态多态(动态联编)
静态多态通过重载来实现,如函数重载和运算符重载。
动态多态通过虚函数来实现。
关联(联编)–确定调用的具体对象的过程称为关联------静态关联、动态关联
(1)在编译时即可确定其调用的函数属于哪一个类,这种过程称为静态关联,例如:函数重载
(2)在运行阶段,基类指针先指向某个派生类的对象,然后通过指针调用该对象所在类中的函数。即在运行时把函数与类对象绑定在一起,称为动态关联。
举个多态的例子?
(1)定义抽象图形基类,在基类在定义求面积的虚函数area();
(2)定义派生类-正方形类,在正方形类中对求面积函数area()进行重定义;
(3)在主调函数中实例化派生类对象,定义基类指针p,并用基类指针指向派生类对象,通过指针p访问求面积的函数area()。就实现了对求面积函数的多态。
java为什么具有很好的跨平台性?
答:因为java有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的。java是先把java文件编译成二进制的class文件,虚拟机就解释执行class文件,所以它的代码就能不经修改,就在不同平台上运行。
Java它的发展前景?
(1)桌面级应用:尤其是需要跨平台的桌面级应用程序。
(2)企业级应用:一般使用人数较多,数据量较大,对系统的稳定性、安全性、有比较高要求的应用。
(3)嵌入式设备及电子产品:包括无线手持设备、通信终端、信息家电、Java游戏等。
闭包和多态性?
答:闭包是指有权访问另一个函数作用域中变量的函数,即在函数内创建另一个函数。
多态性指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而做出不同的行为。
C语言的问题——怎样在各函数之间传递数据
答:用指针的方法和用全局变量的方法
程序的健壮性?
答:对于规范要求以外的输入,程序能够判断出这个输入不符合规范要求,并提供合理的处理方式。
C语言的指针是怎么定义的,指针跟什么的实质是一样的?
答:指针的定义首先要定义数据类型类型,在数据类型后面加上*号,跟上指针名,指针的初值一般设置为NULL。
实质:指针跟数组名本质一样,都被编译器编译成一个地址。
数组与指针区别?
(1)数组要么在静态存储区被创建,如全局数组;要么在栈上被创建。数组名对应着一块内存,其地址与容量在生命周期内保持不变,但数组的内容可以改变。
(2)指针可以随时指向任意的内存块。所以常用指针来操作动态内存,指针比数组灵活,但也更危险。
C语言结构体和JAVA(C++)的类的异同
(1)类可以看做是一种特殊的结构体,不仅能存储不同的数据类型,还有方法。
(2)C语言的结构体对内部成员变量的访问限定符默认为public,而类中允许public,protected,private三种访问限定符,且默认为private。
代码如何检查错误,有哪些方法?
答:编译一下就可以检查出是否有语法错误,至于程序的控制错误可以用SIM来进行分析和判断。
Ncsim:检查主要是一些编译检查,保证代码能够正确编译。
还有局部变量和全局变量的底层理解
1.作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等。
2.存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区。
3.生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁。局部变量在函数的退出后就不存在了。
4.使用方式不同:全局变量在声明后程序的各个部分都可以用,局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量。
动态分配内存 要用new关键字:
用new开辟的内存,要用delete释放;new和delete必须成对出现。且用new在堆中定义对象时,会调用构造函数;用delete释放对象时,会调用析构函数。
(1)为一个对象分配内存:指针名= new类名;
(2)为一个对象数组分配内存:指针名= new 类名[长度];
引用 即给对象起别名 ----- 数据类型 &别名=变量名
将b声明为a的引用后,a,b的作用相同,都代表同一个变量。
(1)声明一个引用时,必须同时使之初始化,即声明它代表哪个变量。
(2)在声明为一个变量的引用后,不能再作为另一个变量的引用。如b为a的引用,在b的定义域内,b不能再作为c的引用了。
用指针指向结构体变量就构成了链表
枚举(enumerate)类型 关键字:enum
枚举是指变量的值可以一一列举出来,变量的值只在列举出来的范围之内。例如变量星期,只有星期1到7这几种可能,可设为枚举类型。
Typedef声明一个新的类型名来替代已有的类型。例如typedef int x;表示用x来代表int类型。
方法:对数据的操作-------------------消息:对数据操作的命令;
string对象
(1)包含于#include头文件包中
(2)计算字符串长度方法是:字符串.size()
(3)返回字符串子串的函数:substr(起始位置,结束位置)
函数的参数及其传递方式
(1)对象作为函数参数:这种传递是单向的,不会改变实参的值。
(2)对象指针作(地址)为函数参数:这种传递会改变实参的值。
(3)引用作为函数参数:实参和形参代表同一个对象,所以改变形参就是改变实参对象。
函数的重载
函数重载指函数名相同,但函数的参数类型,参数个数或参数顺序不同。
只有函数名和参数个数、类型和顺序都相同,的情况下才会发生同名覆盖;函数名相同而参数个数、类型或顺序不同时,不会发生覆盖,而属于重载。
运算符重载 关键字:operate
定义一个重载运算符的函数,使重载的运算符不仅能实现原有的功能,而且能实现函数中指定的新功能。使用被重载的运算符时,系统就自动调用运算符重载函数,以实现相应的功能。
C++中不能重载的运算符有:(。成员访问运算符),(::作用域运算符),(*指针运算符),(sizeof长度运算符),(?:条件运算符)
运算符重载不能改变运算符的优先级;运算符重载不能改变运算符的结合性;
函数模板 template
(1)建立一个通用函数,函数类型和形参类型不具体指出,而用一个虚拟的类型来代表,这种通用函数就称为函数模板。
(2)函数模板只适用于函数体相同,参数个数相同而类型不同的情况。
类模板 template《class 类型参数名》
(1)将一些数据类型从类中分离出来形成的一个通用的数据类型T,并为这个数据类型T设计一个操作集,在调用时与特定的类关联起来,称之为类模板。
(2)类模板也可以继承,继承的方法与普通的类一样。
内联函数 “inline”
内联函数的声明只要在函数前加上关键字“inline”即可。内联即将所调用函数的代码直接嵌入到主调函数中的一种方法。但内联函数不能包括一些复杂的控制语句,例如循环语句、switch语句等。只有那些规模较小而且又被频繁调用的简单函数,才适合声明为inline函数。
内部函数与外部函数
(1)如果一个函数只能被本文件中的其他函数所调用,就称为内部函数。定义内部函数时要用static关键字修饰。
(2)如果用extern关键字修饰,则表示该函数为外部函数。可被其他文件的函数调用。
类外定义成员函数:
要用作用域运算符“::”,意思是说明其后的成员函数属于这个类。
构造函数
(1)构造函数与类同名,不具有任何类型,不返回任何值。
(2)默认构造函数是系统自动产生的,一个类只能有一个默认构造函数。当用户定义了自己的构造函数系统就不在提供默认构造函数。
(3)一个类可有多个构造函数,程序自动调用构造函数来初始化对象。
构造函数重载:函数名字相同,参数个数或类型不同。
(4)当使用new在堆中定义一个对象时,首先给对象分配足够的内存,然后自动构造函数来初始化这块内存。
(5)拷贝构造函数:用对象来实例化一个新对象,时会调用拷贝构造函数。
类名(const 类名 &a)
析构函数
(1)在构造函数前加取反运算符~就变为析构函数。析构函数与类同名,不具有任何类型,不返回任何值,且不能被重载。
(2)一个类只能有一个析构函数。析构函数在销毁对象时被主动调用。
(3)当使用delete销毁一个堆中的对象时,首先为这个对象调用析构函数,然后再释放这个对象所占的内存。
对象的初始化与析构:先构造的后析构,后构造的先析构。
数据成员的赋值:不能在定义数据成员的同时进行赋值,这种做法是错误的。
通过实例化对象或是调用set()函数对数据成员赋值。
对象数组:数组中的每个元素都是同类的对象。
This指针-----指向本类对象的指针
This指针的值是当前被调用的成员函数所在对象的起始地址。This指针可以隐式调用也可以显示调用。
Const:定义的变量相对于常数,初始化后就不能修改
Const对象 //常对象成员
常对象:在对象名前使用const来声明常对象,但是声明时必须同时进行初始化,而且不能更改。
常对象,只能调用它的常成员函数,不能调用非const类型函数。
常成员函数:可以声明一个成员函数为const类型的函数。
常成员函数,只能引用本类的数据成员,且不能修改他们。
静态数据成员
(1)如果希望各对象数据成员的值是一样的,就可以把它们定义为静态数据成员,这样它就被各对象所共有,所有对象都可以引用它。
(2)一个类中可以有多个静态成员,所有对象都共享这些数据成员。
(3)静态数据成员在内存中只占一份空间。
(4)不能用参数初始化列表对静态数据成员进行初始化。静态数据成员可以初始化,但只能在类外进行初始化。
静态成员函数
(1)静态成员函数是类的一部分,但不是对象的一部分。如果要在类外调用公有的静态成员函数,要用类名和作用域限定符::。 eg:A::area();
(2)因为静态成员函数没有this指针,所以静态成员函数只能通过对象名(或指向对象的指针)访问该对象的非静态成员。
C++的异常处理机制:检查(try)、捕捉(catch)、抛出(throw)
把需要检查的语句放在try块中,catch用来捕获异常信息,出现异常时用throw抛出异常信息。
数据库
数据库设计的六个阶段
(1)需求分析、(2)概念结构设计、(3)逻辑结构设计、(4)物理结构设计、(5)数据库实施、(6)数据库运行和维护。
1.需求分析:—数据字典:描述数据项、数据流、数据结构、数据存储、处理过程的集合。
2.概念结构设计:
对用户需求进行归纳与抽象,形成一个独立于具体DBMS的概念模型。–E-R图;
3.逻辑结构设计-----将概念结构转化为某个DBMS所支持的数据模型。
DBMS支持哪几种数据模型?–层次模型、网状模型、关系模型、面向对象模型。
(1)层次模型:用树形结构表示实体及其之间的联系,树中每一个节点代表一个记录类型。
(2)网状模型:用有向图结构表示。网状模型的特征有:
《1》允许一个以上的节点无双亲。
《2》一个节点可以有多于一个的双亲。
4.物理设计:描述数据在系统内部(磁盘)的表示方式和存取方法。
5.实施阶段----建立数据库,编制与调试程序,组织数据入库,并进行试运行。
6.运行和维护阶段:经过试运行后即可投入正式运行。
什么是数据独立性?
数据独立性包括物理独立性、逻辑独立性。
物理独立性:用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。
逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的。即数据的逻辑结构改变时,用户程序可以不变。
SQL的四个组成部分?
数据定义子语言(Data Definition Language)
数据操纵子语言(Query Language)
数据控制子语言(Data Manipulation Language)
数据存储过程。(Data Control Language)
数据库操纵语言举例—也就是增删查改
如SELECT的作用是查询表的内容,UPDATE的作用是修改数据等。
什么是数据库控制语言,试举例说明—DCL用来设置或更改数据库用户角色权限
GRANT(授权)、DENY(拒绝)、REVOKE(删除)三类。
DBMS的控制操作有哪些
①数据的安全性保护;②数据的完整性检查;③并发控制;④数据库恢复。
数据库中的自主存取控制方法和强制存取控制方法?
(1)自,(DAC Discretionary access control):定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限,防止不合法用户对数据库的存取。
(2)强,(MAC Mandatory Access Control):每个数据对象被标为一定的密级,每个用户也被授予某一个级别的许可证。只有,某一许可证级别的用户,才能存取某一个密级的数据对象。
为什么强制存取控制提供了更高级别的数据库安全性?
强制存取控制(MAC)是对数据进行密级标记,无论数据如何复制,标记与数据是一个不可分割的整体。只有符合密级标记的用户才可以操纵数据,从而提高了数据的安全性。
介绍下有哪些应用数据库?
SQL数据库,DB2数据库,access数据库,Oracle数据库等。
数据库中数据模式是什么? 数据库的三级模式-------外模式、模式和内模式。
(1)外模式:又称用户模式,它是数据库用户能够看见和使用的。一个数据库可有多个外模式。
(2)模式是对数据库中全体数据的逻辑结构和特征的描述。
(3)内模式:又称为存储模式,是描述数据在数据库内部的表示方式。一个数据库只有一个内模式。
数据模式是对数据进行的“类型”的方面的刻画,而相应的“实例”则是对数据“值”的方面的描述。先有数据模型,才能据其讨论相应数据模式,有了数据模式,就能依据该模式得到相应的实例。
数据库的二级映像及作用:外模式/模式映像、模式/内模式映像。
保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
数据库规范化是为了解决关系数据库中什么问题而引入的?
答:数据库规范化是为了解决数据冗余、插入异常和删除异常等问题引入的。
数据库关系模式中,为何要满足不同的模式,这样做可以解决什么问题?
有利于:数据结构化,数据共享性高,冗余少于且易扩充,数据独立性高,有统一的数据控制功能。
**什么是函数依赖?**举一个例子
答:某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。
如果一个表中某一个字段Y的值是由另外一字段X的值来确定的,就称为Y函数依赖于X。
平凡函数依赖
当关系中属性集合Y是属性集合X的子集时,存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
非平凡函数依赖
当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
关系模式中,满足什么条件才能符合第二范式?,谈谈范式?
(1)所谓范式就是符合某一种级别的关系模式的集合。
(2)通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合,称为规范化。
1、第一范式(1NF):一个关系模式R的所有属性都是不可分割的基本数据项。
2、第二范式(2NF):关系模式R满足第一范式,且每个非主属性都完全函数依赖于主键。
3、第三范式(3NF):关系模式R属于第二范式,且除主键外的其他属性不能有传递依赖关系。
4、第四范式(4NF):要求把同一表内的多对多关系删除
5、第五范式(5NF):从最终结构重新建立原始结构。
6、BC范式(BCNF):关系模式R属于第三范式,且主属性不依赖于主属性。
1NF 有哪些缺点?
(1)数据冗余太大(每一个系的系主任名字重复出现)
(2)插入异常、(3)删除异常、(4)更新异常
超键、候选键、主键、外键分别是什么?
(1) (Super Key):在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可为作为一个超键,多个属性组合在一起也可作为一个超键。超键包含候选键和主键。
(2) (Candidate Key):是最小超键,即没有冗余元素的超键。
(3) (Primary Key):能唯一标识一条记录的某一个属性组,该属性组就可以做为一个主键。一个数据列只能有一个主键,且主键的取不能为空(Null)。
(4) (Foreign Key):在一个表中存在,且为另一个表的主键,则称为该表的外键。
primary key约束和unique约束有什么区别?
(1)一个表可以有多个唯一约束,但只能定义一个主键约束;
(2)空值的列上可以定义唯一约束,不能定义主键约束。
数据库中怎么去除去重--------使用distinct关键字
项目数据库中大对象,如何存储文本?-------将文本当做字符串处理。
视图是什么? 视图的作用是什么?
视图:是从一个或几个基本表(或视图)导出的虚表;视图是编译好的sql语句。
作用:1、视图能够简化用户的操作
2、对数据提供安全保护
3、适当的利用视图可更清晰的表达查询
4、视图能将多表的数据关联起来,实现多表数据输出。
视图的使用场景:
(1)多次用到相同条件的查询结果时,可将该查询结果作为视图,供后续使用。
(2)开放权限给其他部门的人,但又不想暴露本部门的机密信息时,可以建立视图开放视图权限。
数据库中数据要存储在视图中吗?
答:数据库中的数据要存储在表中。视图是虚表,即视图所对应的数据不进行实际存储。
视图和基本表的区别与概念?
(1)表是内容,视图是窗口,(2)视图没有实际的物理记录,而表有。
(3)视图是编译好的sql语句,而表不是。
(4)表是全局模式的实表;视图是局部模式的表,即虚表。
(5)表占用物理空间,而视图不占用物理空间,视图只能通过创建sql语句来修改。
哪些视图是可以更新、哪些是不可以更新的,请举例说明、
(1)行列子集视图可以更新;组合视图;静态视图
(2) ① 由两个以上基本表导出的视图,不可以更新;
④ 定义中含有 Group By 字句的视图,不可以更新;
⑤ 定义中含有 DISTINCT 字句的视图,不可以更新;
⑦ 不允许更新的视图上,定义的视图也不允许更新。
数据库中锁?
如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。上锁发生在一个事务获得对某一资源的权限时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。
数据库中死锁是如何产生的?如何解除死锁,思想是什么?
当多个事务同时访问数据库时,每个事务所拥有的锁都是其他事务所需要的,由此造成每个事务都无法继续运行下去。例如,事务A等待事务B释放他的锁,事务B又等待事务A释放他的锁,这样互相等待就形成死锁。
解除死锁:
选择一个处理死锁代价最小的事务,将其撤消,释放该事务持有的所有锁,使其它事务得以继续进行下去。
死锁的预防:一次封锁法,顺序封锁法;
死锁的诊断:超时法,等待图法。
封锁:—共享锁-S、排它锁-X
数据库的三级封锁协议?
(1)一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,一级封锁可防止丢失修改。
(2)二级封锁协议:满足一级封锁协议,且事务T在读数据R前必须先对其加S锁,读完后即可释放S锁。二级封锁协议能解决:防止丢失修改、防止读“脏”数据。
(3)三级封锁协议:满足一级封锁协议,且事务T在读取数据R前必须先对其加S锁,直到事务结束才释放。三级封锁协议能解决:防止丢失修改、防止读“脏”数据、防止不可重复读。
两段锁协议------指所有事务必须分两个阶段对数据项加锁和解锁:
(1)第一阶段是获得封锁。在这阶段,事务可以申请任何数据项上的任何类型的锁,但是不能释放任何锁。
(2)第二阶段是释放封锁。在这阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。
E-R图全称(什么是E-R图?),图内分别由什么构成,思想是什么等?
答:E-R图也称实体-联系图,提供了实体类型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系。
(1)实体型:在E-R图中用矩形表示,矩形框内写明实体名
(2)属性:实体具有的某一特性,一个实体可由若干个属性。在E-R图中用椭圆形表示,并在椭圆内标明属性名。
(3)联系:反映实体之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边将有关实体连接起来,同时在无向边上联系的类型(1:1,1:n或m:n)。
e-r图,且e-r图是属于什么模型的?联系有没有属性?
答:e-r图概念模型。联系没有属性
怎么把E-R图转换为关系模型表?—完整性约束
如果有多个人同时在设计一个数据库的E-R图,应该注意什么问题?
答:应提前统一实体的名字,属性等。以免造成数据的不一致性。
数据库的三要素----------数据结构、数据操作、完整性约束条件。
数据完整性约束:指数据库中的数据应该满足的语义约束条件。可以分为六类:静态列级约束、静态元组约束、静态关系约束;动态列级约束、动态元组约束、动态关系约束。
数据库都有哪些完整性约束?-----数据库需要注意哪些方面?-----完整性约束
(1)实体完整性:规定表的每一行在表中是唯一的实体。
(2)域完整性:指表中的列必须满足某种特定的数据类型约束。
(3)参照完整性:指两个表的主键和外键的数据应一致,保证了表之间的数据的一致性。
(4)用户定义的完整性:针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。
完整性控制机制应具有哪些功能?
(l)定义功能–提供定义完整性约束条件的机制;
(2)检查功能–检查用户发出的操作请求是否违背了完整性约束条件;
(3)违约反应–如果发现用户的操作请求,违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
数据库的五大约束? 主外唯检默
(1)主键约束–唯一性,非空性
(2)外键约束–外键约束用于两张表之间,用来保证关联数据的完整性
(3)唯一约束–唯一性,可以空,但只能有一个
(4)检查约束–对该列数据的类型、范围进行限制,如非空约束
(5)默认约束–数据的默认值
多对多的实体,他们之间至少需要几个表?
3个。在关系数据库中,有一对一,一对多,多对多三种联系
前两个关系都只需要两个表就能表达清楚他们之间的关系,而多对多关系则需要第三张中间表,来表达清楚两张表之间的关系。
一般情况下是由三个字段组成:
1、两张表各自的主键。
2、中间表本身的自增主键。
数据库的安全性?
答:数据库的安全性:是保护数据库防止恶意的破坏和非法的存取。
常用技术:
(1)用户标识和鉴别:每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
(2)存取控制:只有合法权限的用户才能访问数据库,所有未被授权的人员无法存取数据。
(3)视图机制:把要保密的数据对无权存取的用户隐藏起来。
(4)审计:建立审计日志,把用户对数据库的所有操作记录到审计日志中。
(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
说一说数据库的安全机制?
数据库安全机制是用于实现数据库的安全策略的集合。
(1)用户标识和鉴别 (2)存取控制 (3)视图机制 (4)审计 (5)数据加密
数据库的完整性和安全性有什么区别?
数据库的完整性:是指为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,所造成的无效操作和错误结果。
数据库的安全性:是保护数据库防止恶意的破坏和非法的存取。
数据库保护(访问)的内容有哪些?
① 利用权限机制和完整性约束防止非法数据进入数据库;
② 提供故障恢复能力;
③ 提供并发访问控制
数据库的索引? RDBMS中索引一般采用B+树或HASH来实现。
(1)索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
(2)索引可以分为唯一索引、非唯一索引和聚簇索引三种类型。
索引的作用?
数据库使用索引来找到特定值,然后根据指针找到包含该值的行。这样可以使相应的语句执行得更快,可快速访问数据库表中的特定信息。
索引的优缺点?
优:(1)能提高数据的检索速度。
(2)能够加快表与表之间的连接速度。
(3)通过建立索引能有效的减少检索过程中所需的分组及排序时间,提高检索效率。
缺:(1)在数据库建立过程中,需花费较多的时间去建立并维护索引。
(2)索引需要占用一定的物理存储空间,如果建立聚簇索引,所占用的空间还将进一步的增加
(3)对其进行增、删或改操作时,索引还需要进行动态的维护,给数据库的维护带来了一定的麻烦。
使用索引一定能提高查询性能吗?
一般情况下,通过索引查询数据要更快,但也不是绝对的。因为索引需要额外的处理以及物理存储空间,那些不必要的索引反而会使查询反应时间变慢。
数据库加快查询速度要用什么? 索引
需要创建索引的情况:
(1)经常查询的列上。(2)作为主键的列上。(3)经常需要排序的列上。
(6)经常使用在where子句的列上。
不需要创建索引的情况:
(1)查询中很少使用的列。(2)修改性能远大于检索性能时。
数据字典是什么
答:数据字典指对数据的数据项、数据流、数据结构、数据存储、处理过程等进行定义和描述。即描述数据的信息集合。
关系表根据什么来简化------根据复杂程度来划到最小颗粒
数据库怎么加入新的数据?-----insert into
数据库的基本操作有哪些?----增、删、查、改(insert、delete、select、update)
关系数据库的操作特点:集合操作方式,即操作的对象和结果都是集合。
用什么技术提高对符号表的管理效率?
答:符号表一般以表格形式存储于系统中。如常数表、变量名表、数组名表等。对符号表管理方法的好坏,会直接影响编译系统的运行效率。
(1)把所有符号都组织在一张表中;(2)根据符号属性的相似程度分类组织成若干张表;(3)由视图可以将不同表的数据关联起来,实现对多表数据的管理。故可在这些子表上创建视图来管理。
数据库里面的查询语句有哪些? 关键字:select
查询语句:选择、投影、连接、并、交、差、除。
(1)数值型数据,(2)字符串型数据,(3)日期型数据(4)非空数据
(5)对数据进行升,降序查询(6)对数据进行多条件查询
数据库的关系操作有哪些?
选择、投影、连接、并、交、差、增、删、改。这些关系操作可以用代数运算的方式表示。
数据库的内连 INNER JOIN
只有在两个表中匹配的行才能在结果集中出现
数据库的左(外)连 LEFT JOIN
先返回左表的所有行,再加上符合连接条件的匹配行。
数据库的右(外)连 RIGHT JOIN
先返回右表的所有行,再加上符合连接条件的匹配行。
注:当在内连接查询中,查询条件无论是加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。
数据库中的事务是什么?
数据库事务(transaction):是可访问并操作数据库中,各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
事务的性质
(1)原子性(Atomicity):事务中的操作在数据库中是不可分割的
(2)一致性(Consistency):几个并行执行事务的执行结果,必须与按串行顺序执行的结果相一致。
(3)持久性(Durability):对于已提交事务,数据库系统必须保证事务对数据库的修改不被丢失。
(4)隔离性(Isolation):事务的执行不受其他事务的干扰。
DBMS采用(1)日志来保证事务的原子性、一致性和持久性。日志记录了事务对数据库的操作,如果某个事务在执行过程中发生错误,就可以根据日志撤销事务对数据库所做的更新,使数据库回滚到执行事务前的正常状态。
(2)DBMS是采用锁机制来实现隔离性。当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,直到前一个事务释放了锁,其他事务才有机会更新该数据。
事务的作用----------日志,锁机制
(1)为数据库操作序列,提供了一个从失败恢复到正常状态的方法。
(2)当多个应用程序在并发访问数据库时,可以在这些应用程序之间,提供一个隔离方法,以防止彼此的操作互相干扰。
事务的类别?
(1)扁平事务(2)链事务(3)嵌套事务(4)分布式事务。
事务的并发问题----并发事务时,可能会产生以下问题
(1)脏读:A事务读取B事务尚未提交的更改数据,并在这个数据的基础上进行操作。
(2)不可重复读:A事务多次读取同一数据,B事务在A事务读取的过程中,对数据作了更新,导致A事务多次读取同一数据时,结果不一致。
(3)幻读:A事务读取B事务提交的新增数据。
并发控制里面的乐观锁和悲观锁是什么?
(1)乐观锁即乐观并发控制,假设不会发生冲突,在提交更新的时候检查数据是否被正确更新,是的话正常提交更新,否则返回错误警告,由用户决定继续提交更新还是放弃提交更新。
(2)悲观锁即悲观并发控制,假设会发生冲突,在数据修改之前锁定数据,直到提交更新后解锁。
采用什么机制来保证数据库并发操作的正确性?
-------采用并发控制:封锁、时间戳、乐观控制法
不可重复读与幻读的区别:
(1)不可重复读指读到已提交事务的更改数据;而幻读指读到了其他已经提交事务的新增数据。
(2)解决不可重复读可通过行锁,解决幻读可通过表锁。
事务隔离级别
事务隔离级别 读脏 不可重复读 幻读
(1)读未提交(read-uncommitted) 是 是 是
(2)不可重复读(read-committed) 否 是 是
(3)可重复读(repeatable-read) 否 否 是
(4)串行化(serializable) 否 否 否
事务隔离级别越高,越能保证数据的完整性和一致性;但对并发性的影响也越大。
数据库恢复策略有哪几种----------1.数据转储(数据冗余)2.登记日志文件
数据库有哪几种备份策略,大概的操作
完全备份、差异备份、事务日志备份、文件备份
用windows做排课系统,系统有那些表?
答:(1)课程表、(2)教师表、(3)日期表:星期几、(4)班级表:教哪班
什么是存储过程?
存储过程:是一组为了完成特定功能的sql语句。存储在数据库中,经过一次编译后无需再次编译,用户通过指定存储过程的名字和参数来执行它。
存储过程的优缺点?
优:(1)存储过程是编译过的,执行效率高。
(2)存储过程直接存放于数据库中,可通过指定存储过程名字和参数直接调用,从而减少通信量。
(3)可保证数据的完整性和安全性。
缺:移植性差
什么是触发器?
触发器(trigger):是sql提供给程序员用来保证数据完整性的一种方法,是特殊的存储过程,它的执行由事件触发。
什么是游标?
(1)游标是一种能从多条数据记录的结果集中,每次提取一条记录的机制。
(2)游标是由结果集和结果集中,指向特定记录的游标位置组成。
drop、delete、truncate的区别是什么?
Drop删除表的结构和数据;delete和truncate只能删除数据。
DBA的职责是什么?
DBA一个(组)人员,负责全面管理和控制数据库系统。
(1)决定数据库中要存放哪些信息。
(2)决定数据库的存储和存取策略。
(3)限定数据的安全性要求和完整性约束条件。
(4)监控数据库的使用和运行-----转储数据、维护日志文件、故障恢复。
(5)数据库的改进和重构:对运行情况进行记录、统计分析,来不断改进数据库计。
和文件系统相比,数据库文件有什么优点?
(1)提高了数据的共享性,可使多个用户能够同时访问数据库中的数据。
(2)提高了数据的一致性和完整性。
(3)提供数据与应用程序的独立性。
软件工程
软件具有:复杂性,一致性,可变性,不可见性等内在特性。
计算机软件包括:程序、数据及文档的集合。
软件按功能分为:应用软件、系统软件、工具软件。
按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件。
软件危机:在计算机软件的开发和维护过程中所遇到的一系列问题。
(1)软件开发成本和进度无法控制(2)质量难以保证(3)软件维护程度低。
原因:软件的不可见性,系统规模庞大,及对维护不够重视。
软件工程3个要素:方法、过程、工具。
方法是完成软件工程项目的技术手段;
过程支持软件开发的各个环节的控制和管理。
工具支持软件的开发、管理、文档生成;
软件工程过程4种基本活动:
(1)P(Plan) ——软件规格说明; (功能及其运行时的限制)
(2)D(Do) ——软件开发; (产生满足规格说明的软件)
(3)C(Check) ——软件确认; (确认软件能够满足客户提出的要求)
(4)A(Action) ——软件演进。
软件工程的目标与原则,方法和过程:
(1)目标:在给定成本、进度的前提下,开发出具有有效性、可靠性且满足用户需求的产品。
(2)原则:信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
(3)工程方法:结构化方法、JSD方法、面向对象方法。
(4)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、软件验证、软件维护。
软件设计的基本原理:
(1)抽象 (2)模块化 (3)信息屏蔽(4)模块独立性
软件设计包括:软件结构设计、数据设计、接口设计、过程设计。
结构设计: 定义软件系统各部件之间的关系。
数据设计: 将分析时创建的模型转化为数据结构的定义。
接口设计: 描述软件内部、软件和系统以及软件与人之间如何通信。
过程设计: 把系统结构部件转换成软件的过程描述。
衡量模块独立的两个标准:耦合性和内聚性。
耦合性:软件系统中各模块间相互联系和紧密程度的一种度量。
内聚性:一个模块内各元素,相互联系和紧密程度的一种度量。
模块独立原则(模块设计原则):高内聚、低耦合。
软件开发方法:软件开发过程所遵循的方法和步骤,包括分析方法、设计方法和程序设计方法。
数据流程图有两个特征:抽象性和概括性。
抽象性:数据流程图把具体的组织去掉,只剩下信息和数据存储。
概括性:数据流图把系统对各种业务的处理过程联系起来,形成一个总体。
UML是面向对象的方法;静态结构图:类图和对象图
什么是阶段性开发?分为哪两个方面?
研究阶段与开发阶段。
(1)研究阶段:为获取新的技术知识而进行的调查。
(2)开发阶段:将研究成果应用于某项设计,以生产出具有实质性改进的产品。
设计过程的两个阶段:
(1)系统设计阶段:确定系统的具体实现方案;
(2)结构设计阶段:确定软件结构。
软件结构设计—主要设计内容有:确定模块元素、定义模块功能、定义模块接口、确定模块调用、进行结构优化。
什么是软件工程
软件工程是一门用工程化方法构建和维护实用且高质量软件的学科。涉及程序设计语言、数据库、软件开发工具等方面。
软件工程是一门生产无故障的,及时交付的,在预算之内和满足用户需求的软件的学科。
软件工程方法?-------软件工程的面向对象和面向过程的各自含义
(1)面向过程:由结构化分析、结构化设计和结构化程序设计组成。以算法为基本单元,把一个复杂问题的求解过程分阶段进行,这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。面向过程将功能和数据进行分离。
(2)面向对象:把面向对象的思想应用于软件开发过程中。以类为基本单位,对象是类的实例化,对象之间以消息传递为基本手段。目的是使问题空间与求解空间在结构上尽可能一致。
(3)面向构件:寻求比类的粒度更大且易于复用的构件。
(4)面向服务:应用业务过程由服务组成,而服务由构件组装而成。
面向对象的软件开发有?
(1)面向对象分析;object oriented analysis OOA
(2)面向对象设计;OOD
(3)面向对象编程;OOP (programming)
(4)面向对象测试;OOT
(5)面向对象维护;OOSM
软件工程中面向对象的模型有哪些?
(1)描述系统数据结构的对象模型
(1)描述系统控制结构的动态模型
(2)描述系统功能的功能模型
这三种模型都涉及到数据、控制和操作等共同概念。
软件周期----软件工程的基本周期?
产品从提出、实现、使用、维护到停止使用的过程。
软件生命周期的三个阶段----软件定义、软件开发、运行维护
软件开发的流程?-----哪一步最重要?----软件生命周期可细分为那几个阶段?
(1)可行性分析、(2)需求分析阶段、(3)软件设计阶段、(4)编码阶段、(5)软件测试阶段、(6)安装与交付阶段、(7)软件维护。
---------需求分析是从软件定义到软件开发的最关键步骤
可行性分析法包括:(1)经济 (2)技术 (3)运行 (4)法律
需求分析方法有 (1)结构化需求分析方法;(2)面向对象的分析的方法。
结构化分析方法:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程。
需求分析原则:按自顶向下,逐层分解。
软件开发期
1.软件概要设计
2.软件详细设计-------确定软件结构中每个模块的内部细节。
3.编码和单元测试
4.集成测试
5.系统确认验证
软件维护分为以下4类:预防性维护;适应性维护;改正性维护;完善性维护;
影响软件维护的因素:系统大小、程序设计语言、系统文档等。
什么是软件测试?
软件测试:利用测试工具按照测试方案和流程对产品进行测试,并对测试方案中出现的问题进行分析和评估。软件测试是为了发现程序中的错误而执行的过程。
软件测试目标(目的):尽力发现软件中的错误。
软件测试的功能是什么?----确保开发完成软件的正确度、完全度和质量。
软件测试有哪几类?如何区分?
区分:从是否需要执行被测软件的角度,分为静态测试和动态测试。
按照功能划分可以分为白盒测试和黑盒测试。
(3)静态测试:指软件代码的静态分析测验,这个过程中应用数据较少,主要通过人工推断。优点:耗时较短、仅需较少资源就能完成对软件的测试。
(2)动态测试:相较于静态测试而言的,动态测试方式主要依赖程序的运用。主要检测软件中功能是否缺失、软件运行效果是否良好。
(3)黑盒测试:(功能测试)将测试对象看做一个不可见的黑盒子,通过输入数据观察输出数据是否与预期结果一致,以此来判断软件内部功能是否正常。
(4)白盒测试:(结构测试)将测试对象看做一个透明的白盒子。根据软件内部应用、源代码等对产品内部工作过程进行测试。
优点:能够有效解决软件内部应用程序出现的问题。
软件测试过程一般按4个步骤进行:
单元测试、集成测试、验收测试、和系统测试。
谈一下软件测试步骤
(1)制定测试计划;根据测试计划,设计测试用例、实施测试、管理测试时发现的错误、测试完并且错误修正完后要做测试报告。
(2)单元测试;
(3)集成测试:
(4)系统测试:主要是测试系统的运行环境,包括:计算机硬件、外设、软件、网络等。
关于软件测试,你知道有那些软件测试的方法?
答:黑盒、白盒、静态、动态、单元测试(模块测试);集成测试;系统测试;确认测试等。
模块测试与集成测试?
(1)单元(模块)测试:(unit testing):对软件中最小可测试单元进行检查和验证。单元测试的对象是模块,即对设计中的一个个模块来进行测试,重点是测模块与模块之间的关系;测试一个模块时需要为该模块编写一个驱动模块和若干桩模块。顶层测试无需驱动模块,底层测试无需桩模块。
(2)集成测试(组装测试、联合测试):在单元测试的基础上,将所有模块按设计要求组装成子系统或系统,进行测试。
确认测试
确认测试又称有效性测试,其任务是验证软件的功能、性能及其他特性是否与用户的要求一致。在进行确认测试时,可以采用Alpha测试或Beta测试。Alpha是在开发环境下的测试;而Beta是用户在实际使用环境下进行测试。
面向对象的测试方法------自顶向下、自下向上
面向对象测试--------对于测试而言,基本还是黑盒、白盒、灰盒这三种
(1)面向对象单元测试-----把操作作为类的一部分来测试。
(2)面向对象集成测试
(3)面向对象确认测试
程序测试与调试的区别:
测试是尽可能多地发现软件中的错误,软件测试贯穿整个软件生命期。
调试是诊断程序中的错误,主要在开发阶段进行。
主要调试方法有:
(1)强行排错法;(2)回溯法;(3)原因排除法;(4)归纳法;(5)演绎法。
谈谈自动测试?
自动测试,比较常用的是通过编写脚本程序,之后脚本可以自动产生测试用例,输入到程序中进行检测。
自动测试工具:测试数据生成、动态分析、静态分析、模块测试程序。
软件工程过程模型
1.在一个实际的工程中,必须设计出一个开发策略,确定所涉及的过程、方法、工具。这种策略常被称为“软件过程模型”。
2.软件工程的过程模型:(1)敏捷软件开发scrum(敏捷开发以用户的需求为核心,采用迭代、循序的方法进行软件开发)、(2)迭代模型、(3)增量模型等。
举例说出软件模型
答:1.瀑布模型:自上而下,逐级下落,体现不可逆转性。
2.喷泉模型
3.增量模型
4.螺旋模型:可以在项目的各个阶段进行变更。
5.原型模型:容易适应需求的变化。
6.组件复用模型
瀑布模型--------自顶向下、逐层细化。
(1)特点:线性化的模型。
(2)作用:为软件项目按规程管理提供了便利。
(3)局限性:主要适用于需求明确的软件开发,但不适用于需求模糊的项目。
喷泉模型------喷泉模型是专门针对面向对象软件开发而提出的。
增量模型
在整体上按照瀑布模型的流程开发,以便对项目的管理。但在软件的实际创建中,则将软件系统按功能分解为许多增量构件来逐个创建与交付,直到全部构件创建完毕,且都被集成到系统之中使用。
螺旋模型
螺旋模型是一种引入了风险分析与规避机制的模型,是瀑布模型、快速原型方法和风险分析方法的结合。
其基本方法是,在各个阶段创建原型进行项目试验,以降低各个阶段可能遇到的风险。
原型模型
(1)快速原型模型:用来试探某种设计是否能够获得预期结果。
(2)原型进化模型:对有待开发的软件系统,先开发一个原型给用户使用,然后根据用户的使用意见,对原型不断修改,使它逐步接近开发目标。
原型模型是什么,说说原型法?
原型法与开发过程对系统进行分析、设计、编程和运行的内容相类似,不同点就是不需要对系统进行非常细致的分析、设计。只需对它的主要功能进行初步分析、初步设计和编程后就马上运行,以后在与用户进行交互中再进一步改进。
组件复用模型
在组件复用的软件开发中,软件由组件装配而成。就像用标准零件装配汽车一样。因此,组件复用模型能够有效地提高软件生产率。
集中式结构:集中式系统由一台主机和多个终端设备组成。
程序算法设计工具
(1)N-S图
(2)PAD图
Jackson程序设计方法
将软件系统中的数据分为顺序、选择和重复三种结构。Jackson程序结构也是顺序、选择和重复这三种结构。
图形用户界面(GUI)所具有的特点
(1)比较容易学习和使用。
(2)用户可利用窗口与系统进行交互,并可通过任务窗方便的从一个任务转换到另一个任务。
界面设计中需要考虑的因素
(1)用户工作环境与工作习惯。
(2)界面信息反馈。
(3)界面个性化。
(4)容错性。
界面类型
(1)单窗体界面(SDI)。特点是一次只能打开一个独立窗体。
(2)多窗体界面(MDI)。由一个MDI主窗体和多个MDI子窗体组成。
(3)辅助窗体。也叫对话框。辅助窗体的种类:登录窗、消息窗、设置窗等。
(4)Web页面。
“关于12306订票系统,你认为在测试中是哪个环节没有做好从而导致瘫痪?”
答:需求分析。
离散数学
主析取范式:极小项(m)之和;
主合取范式:极大项(M)之积;
求极大极小项时,每个变元或变元的否定只能出现一次
求极小项时变元不够合取真,求极大项时变元不够析取假;
笛卡尔积?
两个集合X和Y的笛卡儿积(Cartesian product),表示为X×Y。指第一个对象是X的成员,而第二个对象是Y的一个成员-的所有可能的有序对。
序偶<a,b>
笛卡儿积是两个集合中所有元素两两相乘,不满足交换律、结合律、满足分配律。
谓词逻辑
一元谓词:谓词只有一个个体,一元谓词描述命题的性质;
多元谓词:谓词有n个个体,多元谓词描述个体之间的关系;
命题逻辑和一阶逻辑的关系
(1)封闭的谓词公式在任何解释下都变成命题常项。
(2)非封闭的谓词公式在某些解释下可以变成命题常项。
前束范式:一个公式,如果量词均在全式的开头,它们的作用域延伸到整个公式的末尾,则称为是前束范式。任何一个谓词公式都有一个前束范式等价。
容斥原理:n个集合并集的元素的个数=每个集合元素的个数和-两两集合交+三三集合交+(-1)^(n+1)*n个集合交。
egn=2来说,|A+B|=|A|+|B|-|A∩B|
集合的分划与覆盖的比较:
分划:每个元素均出现,且仅在子集中出现一次;
覆盖:只要求每个元素都出现,没有要求只出现一次。
等价关系:二元关系R满足自反性,对称性和传递性,则R称为等价关系。
集合恒等式:交换律、结合律、分配律、德摩根率、吸收率、同一律。
单射:对任意x1 ,x2,且x1≠x2,若f(x1)≠f(x2);则称单射。
满射:对值域中任意一个元素y,在前域中都有一个或多个元素对应;则称满射。
双射:若f既是单射又是满射,则f称为双射。
等势:设A,B为两个集合,若存在从A到B的双射函数,则称A与B是等势的。
关系的概念
A,B是任意两个集合,两个笛卡儿积的任意子集R称为A到B的二元关系(注意是任一子集。个数也同子集总数相同)
关系的性质-----自反性、对称性、反对称性、传递性。
关系的闭包:包含所有给定的对象,并且具有制定性质的最小集合-----自反闭包、对称闭包、传递闭包。
广群的性质:封闭性;
半群的性质:封闭性,结合律;
含幺半群:封闭性,结合律,有幺元;
群的性质:封闭性,结合律,有幺元,有逆元;
阿贝尔群(交换群):封闭性,结合律,有幺元,有逆元–》(群) +交换律;
-----任何一个循环群必定是阿贝尔群
欧拉路:经过图中每条边一次且仅经过一次的通路;
欧拉回路:经过图中每条边一次且仅经过一次的回路;
欧拉图:具有欧拉回路的图;
哈密顿路:经过图中每个顶点一次且仅经过一次的通路;
哈密顿回路:经过图中每个顶点一次且仅经过一次的回路;
哈密顿图:具有哈密顿回路的图;
哈密顿图的应用------安排圆桌会议;
方法:将每一个人看成一个顶点,把每个人与和他能交流的人连接。找到一条经过每个顶点一次且仅经过一次的回路(哈密顿图)即可。
欧拉定理:假设一个连通平面图有v个节点,e条边,r个面,则v-e+r=2;
离散数学的研究内容?—数理逻辑,代数结构,集合论,图论
大学为什么既要学离散数学又要学高数?
答:学习离散数学要用到高数中的知识,比如图论中就需要用到矩阵运算,集合论中的关系也要用矩阵运算。
离散数学在计算机中的应用?
答:(1)集合论:数据库中被广泛的应用。使数据库从层次型变为关系型,使数据库中的数据更容易表示和处理。
(2)图论中的树,可以用来表示计算机中文件的组织结构。在计算机网络中,有些路由选择算法是离散数学里图论的应用。
离散数学和高等数学的区别?
高等数学:处理的是跟连续相关的问题。
离散数学:研究内容主要是离散的,比如代数结构等
离散数学的图论相关知识,用图论证明最短路径
答:最短路径:单源最短路径,地杰斯特拉算法--------贪心算法
任意两点的最短路径:弗洛伊德--------动态规划
人工智能
谈谈你对人工智能(AI)的了解?
我觉得人工智能最出名的一个程序就是(AlphaGo)。其主要工作原理是“深度学习”。“深度学习”是指多层的人工神经网络和训练它的方法。AlphaGo用到了很多新技术,如神经网络、深度学习等。我相信未来人工智能应用能给我们带来更多便利。
谷歌阿尔法go机器人有什么新技术----自主学习(涉及到了计算机+自动化)
了解人工智能的开发平台么?
我不是很了解人工智能的开发平台。不过我稍微了解过AlphaGo中使用的技术。
了解哪些机器学习的算法?
在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。大体上有三类:监督式、非监督式、半监督式。
(1)监督式学习:逻辑回归和反向传递神经网络;
(2)非监督式算法:例如k-Means算法;
(3)半监督式:图论推理算法等。)
神经网络是什么?
神经网络:神经网络理论与控制理论相结合的产物。它汇集了包括数学、生物学、人工智能、计算机科学、控制等学科的理论。
虚拟现实
谈谈你对虚拟现实的了解?
Virtual Reality(虚拟现实,简称VR):是在计算机上生成一个三维空间,通过这个空间提供给使用者关于视觉、听觉等感官的虚拟,让使用者仿佛身临其境一般。3个特点,沉浸性immersion、交互性interactive、构想性imaginative。
有哪些主流的VR设备?-------谷歌Cardboard、索尼PS VR等。
VR(虚拟现实)与AR(增强现实)的区别?
Augmented Reality(增强现实,简称AR):VR是虚拟现实,偏向于以虚拟方式给人带来真实感受,AR是增强现实,偏向于在现实里加入虚拟要素。
云计算与大数据
什么是大数据?
大数据(big data):指无法在可承受的时间范围内,用常规软件进行处理的数据集合。大数据的4个特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。
大数据与云计算的关系?
在大数据和云计算都注重对资源的调度。大数据处理可以基于云计算平台。大数据处理也可作为一种云计算的服务。如阿里云的ODPS(Open Data Processing Service)。
计算机视觉
什么是计算机视觉?
计算机视觉是一门研究–如何使机器“看”的学科。简单来说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等;并进一步做图像处理,用电脑处理成–更适合人眼观察的图像。
计算机视觉,计算机图形学和数字图像处理,三者之间的联系和区别是什么?
区别:
(1)Computer Graphics(图形学),简称CG。输入的是对虚拟场景的描述。通常为多边形数组,每个多边形由三个顶点组成,每个顶点又包括三维坐标、贴图坐标、颜色等。输出的是图像,即二维像素数组。
(2)Computer Vision(计算机视觉),简称CV。输入的是图像或图像序列,通常来自摄像头或视频文件。输出的是图像序列,对真实世界的刻画。比如检测人脸、识别车牌。
(3)Digital Image Processing(数字图像处理),简称DIP。输入的是图像,输出的也是图像。Photoshop中对图像应用滤镜就是典型的一种图像处理。常见操作有模糊、灰度化、增强对比度等。
联系:
(1)图形学中会用到数字图像处理,现今的三维游戏为了增加表现力都会叠加后期特效,原理就是数字图像处理,只是将计算量放在了显卡端。
(2)计算机视觉更是大量依赖数字图像处理,比如对需要识别的照片进行预处理等。
图形图像处理
位图和矢量图有什么区别?
答:计算机能以矢量图(vector)或位图(bitmap)格式显示图像。
位图和矢量图的区别是:失量图可以无限放大,且不会失真,而位图而不能。
计算机图形学:直线在计算机怎么形成?颜色怎么显示?
从P0到P1的直线,实质上是找一个最佳逼近直线的像素序列并填入颜色数据的过程。
(1)基本增量算法(DDA):利用微分思想,即每一个点坐标都可以由前一个点的坐标变化一个增量得到。(2)中点算法
图形与图像的区别?
图形是由计算机绘制的直线、圆、矩形、曲线、图表等;而图像是设备捕捉实际的画面产生的数字图像。图形在进行缩放时不会失真;图像在放大时会失真–可以看到图像是由很多像素组合而成的。
了解人脸识别的相关算法么?
(1)基于几何特征的方法、(2)基于模板的方法、(3)基于模型的方法。
图像处理应用范围?----在我们身边像车牌识别、人脸识别都是图像处理的应用。
图形图像方面的算法:—主要分为两部分:1、图像增强 2、图像模糊处理
图像处理的实例-----数字图像处理应用可分为两大类:
(1)基础处理:通过算法来加强图片视觉效果。比如-对比度,降噪等。典型的应用比如Photoshop,以及美颜相机等。
(2)内容处理:对图像内容的分析。常见的包括脸部检测与识别、视频搜索等。
网络安全
网络安全问题-------(1)计算机病毒 (2)黑客 (3)网络陷阱
防火墙有哪几种?都属于哪一层的?包过滤,状态。包过滤网络层,状态应用层。
举个应用层防火墙的例子?----------web防火墙,防sql注入。
网络间密钥的概念
即网络中使用的秘钥,互联网是一个开放式的系统,所以保护个人隐私是互联网的头等大事,而使用加密秘钥是最简单,且有效的方法。
简述对称加密和非对称加密的区别? 对称加密和非对称加密?
(1)对称加密:加密和解密的秘钥是同一个。
优点:加密效率高、速度快。 缺点:密码数量多,难以管理。
常见的对称加密算法:DES、Blowfish、AES等。
DES采用56位秘钥,Blowfish采用1到448位变长秘钥,AES采用128,192和256位长度的秘钥。
(2)非对称加密:需要两个秘钥–公开秘钥(public key)、私有秘钥(private key)
优点:安全性好 缺点:加密速度慢
常见的非对称加密算法:RSA、DSA
和RSA不同的是DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但性能要比RSA快。
什么是信息安全?-信息安全可通过加密实现(可以准备点加密算法讲给老师听)
信息安全主要包括保证信息的–机密性、完整性、可用性、可鉴别性、不可抵赖性。
1.机密性:保证信息不泄露给未经授权的进程或实体。
2.完整性:信息只能被得到允许的人修改,并能够被判断信息是否已被修改过。
3.可用性:只有授权者才可以在需要时访问该数据。
4.可鉴别性:网络应对用户、进程、系统等进行身份鉴别。
5.不可抵赖性:数据的发送方与接收方都无法对数据传输的事实进行抵赖。
你感觉得现在中国的网络安全吗?为什么?
不安全。因为有很多安全问题的事件依然在发生。例如:全国个人信息泄露的事情屡见不鲜。
网络安全到底是什么东西,有什么攻击手段和防御手段
网络安全–保护网络系统的硬件、软件及数据,不受恶意破坏、更改、泄露。
常见的攻击手段有:SQL注入、XSS攻击、DDOS、勒索软件等
常见的防御手段有:安装杀毒软件、设置复杂密码、经常打补丁等。
数学&闲聊
大学学过什么课程?
C语言、C++、数据结构、线性代数、数学分析、概率论等
数学分析的核心是什么-------核心是无穷小分析,也就是极限
说说极限的定义
存在常数A,任意 ,存在 ,当 时,有 则X趋于x0时函数 的极限是A。
极限是什么?求不出导数时,应该怎么求导?
答:设函数y=f(x)在点x0左右邻域都有定义,当x无限趋近x0时,函数值无限接近一个确定的常数A,则称A为当x无限趋近x0时函数f(x)的极限。
求不出导数时(例如导数不好求或导数不存在时(尖点):可以用导师的定义求,导数的定义是:x趋向于x0时,f(x)-f(x0)除以x-x0的极限值。也即x趋向于x0时, 除 的极限值。
一个矩阵可逆的充要条件是什么
(1)矩阵可逆的充分必要条件是行列式值不等于0;
(2)r(A)=n。
(3)矩阵的所有特征值中不含0。
(4)矩阵可以分解为若干初等矩阵的乘积。
线性方程组什么时候有解?解的情况
(1)齐次方程组:
1.方程组的秩等于未知数的个数,方程有唯一解(唯一0解)。
2.方程组的秩小于未知数的个数,方程有无穷多解。
(2)非齐次方程组:
1.系数矩阵与增广举证的秩相等且等于未知数个数,方程有唯一解;
2.系数矩阵与增广举证的秩相等且小于未知数个数,方程有无穷多解;
3.系数矩阵与增广举证的秩不相等,方程无解;
概率论中的均匀分布的概念?
在相同长度间隔内的分布概率是等可能的,在a与b之间,均匀分布的概率密度函数为
数学与计算机的关系
现实问题——数学模型——计算机算法——编程——上机运行——结果
高数在计算机的运用
现实问题——数学模型——计算机算法
极限的思想在计算机中是怎么体现的?-------逐步逼近
例如在MATLAB上作图时,某个函数的图像会无限趋于一个值但又不等于这个值,这个时候图像其实是在无限靠近渐近线的。计算机首先通过极限的求解方法计算出函数的渐近线,并无限靠近它。这就是一个极限思想在计算机中的体现。
多项式非确定性问题? Non-deterministic Polynomial Complete----NP问题
指一个复杂问题不能确定是否能在多项式时间内找到答案,但可以在多项式时间内验证答案是否正确。如完全子图问题、图着色问题等。
什么是数理逻辑?和其他的逻辑有什么不同?
答:数理逻辑又称符号逻辑、理论逻辑。是用数学方法研究逻辑的学科。形成符号化、数学化的逻辑。其研究对象是对证明和计算这两个概念进行符号化后进行研究。
QQ用到了哪些技术和有哪些功能?
答:是腾讯公司开发的一款基于Internet的通信软件。QQ能支持在线聊天、视频通话、共享文件、QQ邮箱等多种功能。
擅长什么编程语言?--------C++,
积分的概念?
答:积分分为定积分和不定积分两种。定积分结果是一个具体数值,不定积分结果是一个表达式。
定积分:二元函数的积分表示在平面坐标上围成的图像的面积。三元函数的积分表示曲顶柱体的体积值。
特征值有什么意义?怎么在计算机中求特征值?
答:特征值的定义是 。将两个矩阵乘积转化为一个矩阵的数乘。
计算机求:普通算法:计算特征多项式,进行因式分解,得到特征值。
对于一些大型矩阵,求特征值的算法,逐渐逼近。
随机变量中相关系数的含义是什么?
答:相关系数又叫线性相关系数。它是用来度量变量间的线性相关程度。相关系数=两个变量的协方差/ 两个变量标准差的乘积;相关分为正相关与负相关。
高数
敛散判别方法-------比较判别法、根值判别法。
傅里叶级数
非周期的傅里叶–通过奇/偶延拓,通过奇延拓变为正弦级数,通过偶延拓变为余项级数。
线性代数
概率论
几种常见的分布:
(1)0-1分布:ex=p ; dx=p(1-p) (2)二项分布:ex=np ; dx=np(1-p)
连续: 离散:
大数定理:n个变量的均值,依概率收敛到期望的均值。
中心极限定理:n个变量的和近似服从正态分布。
(1)列维-林德伯格中心极限定理
(2)棣莫弗-拉普拉斯中心极限定理。
数据结构
数据三要素----数据的:逻辑结构,存储结构,运算
时间复杂度–将算法中基本运算的执行次数的数量级作为时间复杂度。
顺序表有哪些缺点?(逻辑上相邻的元素,在物理位置上也相邻)
优点:顺序表支持随机存取,存储密度大
缺点:插入和删除元素需要移动大量的元素(近一半)
注意:动态分配内存并不是链式存储结构,依然属于顺序存储结构,支持随机存取方式,只是分配的空间大小在运行时动态决定。
链表有哪些缺点?(逻辑上相邻的元素,在物理位置上不一定相邻)
优点:便于插入删除等操作,只要改变指针就行。不用考虑溢出问题。
缺点:不支持随机存取,查找第i个元素只能从链表的第一个结点出发。
静态链表的数据结构?
答:静态链表是连续存储在一段主存空间上的,它的每个节点除了数据域外,还有一个指针域用来指向下个节点在这个数组的位置。
循环链表的特点
单循环链表:最后一个结点的next指针指向头结点;
双循环链表:最后一个结点的rear指针指向头结点,头结点的front指针指向最后一个结点。
如何逆置一个链表
答:定义一个只含有头结点的链表,依次取下要逆置的链表的各个元素,每次按照头插法插入刚定义的链表中,直到待逆置链表中所有关键字都***入。最后将待逆置链表的头指针指向新定义的链表的头结点,并将头指针的地址返回出去。
对链表设置头节点的好处是什么?
(1)无论链表是否为空,其头指针是指向头结点的非空指针,故空表与非空表的操作也就统一了。
(2)在链表第一个位置的插入与删除操作与其他位置的操作一致,无需特殊处理。
我们几个人围成一圈,从某个人开始数数,数到3的人OUT,说一下这个算法?
答:这个可以用循环链表实现。
两个有序的链表A,B。如何把B的节点插入A链表,使之仍是有序的表?
答:依次取B链表的节点,与A链表的节点的关键字比较,找到合适的位置插入即可。
你是说每次都从A链表第一个位置开始比较?
答:可以设置一个指针,指向A链表中刚插入元素的位置,以后直接从刚插入位置从前往后查找合适的位置插入即,直到B链所有元素插入到A链中。
两个有序数组拼接为有序数组最少和最多比较几次?
当某个数组的最大元素比另一个数组最小元素小(某个数组的最小元素比另一个数组的最大元素大)时只需要比较一次,即最少比较一次。最多比较两个数组长度中较小值次。min(len a,len b)。
什么是堆?什么是栈?什么是队列?有何区别?举一个队列的例子
队列:只允许在队头删除,在队尾插入的顺序表,队列先进先出eg:排队买饭
栈:只允许在栈顶插入和删除的顺序表,栈后进先出。
堆:堆分为小根堆和大根堆。(1)每个结点都小于它的左右孩子的值—小根堆;(2)每个结点都大于它的左右孩子的值—大根堆;堆又称为优先队列。
循环队列–可以解决假溢出
循环队列:牺牲一个存储单元来区分队空和队满,队空:front指针等于rear指针时;队满:(队尾指针+1)余队列长度等于队头指针;
双端队列–指两端都可以进行入队和出队操作的队列。
受限双端队列–输入受限的双端队列,输出受限的双端队列
输入受限的双端队列:允许在一段进行入队出队,另一端只允许出队操作。
数出受限的双端队列:允许在一段进行入队出队,另一端只允许入队操作。
栈的用法
答:栈的应用有:括号匹配、表达式求值、递归调用、数值转换
括号匹配:
(1)若为左括号则入栈,若为右括号则检查与栈顶元素是否匹配,匹配则将栈顶元素出栈,栈顶指针下移一位。
(2)按照这个规则,一直检查到字符串尾部。
(3)检查栈是否为空,栈空,则这个括号串匹配成功,否则匹配失败。
表达式求值:
(1)中缀—》后缀
(2)从左到右扫描表达式:遇到数字就进栈,遇到符号则将栈顶的两个元素出栈并运算,将结果压回栈中,直到最后得到表达式的结果。
递归函数? 递归调用:
(1)如果一个函数运行过程中又运用到自身,那么这个函数称为是递归定义的。—递归函数中有:递归式,递归边界。可以用栈来实现递归。
(2)递归思想就是把大问题分解成小问题,直到每个小问题都得到解决为止。(1)递归次数有限;(2)有结束条件终止递归;
(3)规模为n的问题可划分为若干结构相同,规模较小的子问题。
队列的应用–树的层次遍历,图的广度优先搜索,基数排序,OS里的缓冲区,就绪队列,阻塞队列等。
矩阵压缩:对多个相同的值,只分配一个存储空间;对零元素不分配空间。压缩存储可将二维矩阵存到一维数组中,对二维数组有行优先、列优先两种存储方式。对特殊矩阵只存储一部分元素。—对称矩阵,上下三角,对角矩阵。
稀疏矩阵?
答:如果在矩阵中,多数的元素为0,通常认为:非零元素 / 矩阵所有元素《=0.05,则称此矩阵为稀疏矩阵(sparse matrix)。
树的性质
(1)除根结点外,每个结点都有一条边指向,一条边对应一个度,故结点总数等于总度数加1。
(2)度为m的树中,第i层最多有m^(i-1)个结点。
特殊的二叉树—满二叉树,完全二叉树
满二叉树:即每一层的结点都达到最大值,高度为h的树,有2^h -1个结点。
完全二叉树:高度为h的完全二叉树中,每个结点都与高度为h的满二叉树的编号一一对应。
完全二叉树的性质:
(1)叶子结点只可能出现在层数最大的两层上;
(2)如果有度为1的结点,则该结点只有左孩子,而无右孩子;
(3)一旦出现某个结点为叶子结点,或只有左孩子,则编号大于该结点的均为叶子结点。
知道一棵树的先序和后序能不能确定它?要证明。
答:不能,必须知道中序。这是因为前序遍历和后序遍历序列,可能对应不同的二叉树。 可确定一棵树:(先中、中后、中层)
在后序遍历的线索二叉树中,如何找结点直接前驱?
先把二叉树遍历一遍:即设置两个标记Ltag,Rtag,如果左孩子指针为空,Ltag=1,如果右孩子指针为空,Rtag=1。
建一个队列,按照后序遍历方式将各个结点进行入队,如果Ltag=1(Rtag=1),此时把左(右)孩子指针指回队列里的前(后)一个元素,这个元素就是前驱(后继)节点,然后往队尾依次进行线索化。
在中序线索二叉树中,如何找节点的直接前驱?
建一个队列,按照中序遍历方式将各个结点进行入队,如果Ltag=1,此时把左孩子指针回指队列里的前一个元素,这个元素就是前驱节点,然后往队尾依次进行线索化。
如何在计算机上实现线索二叉树的遍历? 遍历的总体思路:
先找到最左边的节点,然后判断其右子树是否为线索,如果是线索,那么就遍历它,如果右子树是右孩子,那么就进入到右孩子最左边的节点,进行同样的判断,知道遍历完了整棵树为止。
线索二叉树
在二叉树中希望很快找到某一节点的前驱或后继,但不希望每次都要对二叉树遍历一遍,因此在创建二叉树的过程中,需要将每个结点的前驱和后继记录下来。
为了区分:左指针指向的是左孩子结点还是前驱结点,右指针指向的是右孩子结点还是后继结点,所以增加了两个线索标志位来区分这两种情况:
ltag = 0;指向结点的左孩子
ltag = 1;指向结点的前驱
Rtag = 0;指向结点的右孩子
Rtag = 1;指向结点的后继
结点中指向前驱和后继结点的指针称为线索,加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式使其变为线索二叉树的过程称为线索化。
树是否可以用顺序存储? 是否可以链式存储?
顺序存储:树的双亲表示法。采用一组连续空间来存储各个结点,同时在每个节点中增设一个指针域,用来指示其双亲结点在数组中的位置。
链式存储:
1.孩子表示法:即邻接表存储结构
2.孩子兄弟表示法:数据结构: (1)指向结点第一个孩子的指针 (2)结点值
(3)指向结点下一个兄弟结点的指针
树的遍历种类,确定一棵树的方法?
树的遍历种类:先序遍历和后序遍历
树的先序对应二叉树的先序,树的后序对应二叉树的中序。
确定一棵二叉树:(先中)、(中后)、(中层)
树转二叉树(孩子兄弟表示法):
每个结点的左指针指向它的第一个孩子,右指针指向它在树中的相邻兄弟结点。
二叉树转森林:依次断开二叉树的右孩树,直到产生一棵没有右子树的二叉树为止,就得到了原森林。
二叉排序树:
(1)若左子树非空,则左子树上所有结点的关键字值均小于根节点关键字值;
(2)若右子树非空,则右子树上所有结点的关键字值均大于根节点关键字值;
(3)左右子树本身也是一棵二叉排序树。
二叉排序树的查找—与折半查找类似----折半查找判定树为一棵二叉排序树
(1)从根节点出发,将给定值与根节点比较,若相等则查找成功。
(2)待查找的关键字大于根节点,在右子树查找;
(3)待查找的关键字小于根节点,在左子树查找;
平衡二叉树(左右子树高度差 ≤ 1,平衡因子的绝对值 ≤ 1)
插入结点失衡:LL(右单旋),RR(左单旋).LR(左右双旋),RL(右左双旋)
说一说哈夫曼树?
哈夫曼树是带权路径长度之和最小的树,权值较大的结点离根较近,权值越小的离根节点越远。
哈夫曼树的构造过程:将N个结点看成N棵仅含一个结点的树,构成森林F,构造一个新的结点,结点的左右子树为森林F中权值最小的两棵树,结点的权值为左右子树的权值之和。在森林F中将刚选出的两棵树删除,同时将新构造的树插入。依次进行这个步骤,直到最后只剩下一棵树为止。
哈夫曼树的特点?
(1)权值较大的结点离根较近,权值越小的离根节点越远。
(2)哈夫曼树的带权路径长度之和最小。
(3)哈夫曼树不存在度为1的结点。
(4)哈夫曼树形态不唯一,但带权路径长度唯一。
哈夫曼树的优表现在哪?
带权路径长度之和最小,权值越大的结点离根越近,权值越小的结点离根节点越远。哈夫曼编码是前缀编码,利用哈夫曼树可以设计出总长度最短的二进制前缀编码。
大概的编码过程?
编码是信息从一种形式转换为另一种形式的过程。用预先规定的方法将文字、数字或其它数据编成数码。解码,是编码的逆过程。将代码译为原数据形式。
例如哈夫曼编码的大概过程,首先是将要编码的信息调整为一棵哈夫曼树,在哈夫曼树左子树编码为0或1,右子树编码为1或0。某个元素的编码就是从根结点到自身所经过的路径上的01代码串。
m阶B树:
根节点至少有两颗子树(一个关键字)
除根结点外的非叶结点至少有m/2向上取整棵子树,最多有m棵子树
B树中n个结点有n+1个分支。叶结点在同一层且不带信息。
m阶B+树:
根节点至少有两棵子树,其他分支结点至少有m/2向上取整棵子树
每个分支结点最多有m棵子树
B+树中,n个结点有n个分支,每个非叶结点仅起到索引的作用,B+树的叶子结点包含全部关键字,B+树有一个指向最小关键字的指针。
有向图和无向图的联系,试各举一例说明?
无向图可以看作每条边都有两个方向的有向图,无向图的邻接矩阵一定是对称阵,而有向图的邻接矩阵不一定对称。(强连通图才对称:i到j有路径,j到i有路径)
实际应用的区别是有向图可以描述非对称的关系,但无向图不能。比如我认识奥巴马,但是他不认识我,用图来表示这个关系时就将我和奥巴马之间连一条线,并且弧头指向他。
无向图能解决的问题都能用有向图表示,但无向图在对称的问题上往往更容易,因为用有向图去表示无向图时需要用两倍的边数。
稀疏图:E《V logV时为稀疏图
连通、连通图、连通分量:----无向图
(1)从顶点i到j有路径存在,则称i和j是连通的。
(2)若图中任意两个顶点都是连通的,则称该图为连通图,否则为非连通图。(3)无向图的极大连通子图称为连通分量。
强连通、强连通图、强连通分量:—有向图
(1)有向图中,从顶点i到j,顶点j到i都有路径存在,则称i和j是强连通的。
(2)图中任意一对顶点都是强连通的,则称该图是强连通图。
(3)有向图的极大连通子图称为强连通分量。
完全图
无向完全图:任意两个顶点间都有边存在,n个顶点,有n(n-1)/2条边。
有向完全图:任意两个顶点间都有方向相反的两条弧存在,n个顶点,有n(n-1)条有向边
数据结构中图的存储, ---------邻接矩阵、邻接表
什么情况下用邻接表,什么情况下用邻接矩阵。为什么?
答:稠密图一般用邻接矩阵,因为图稠密的话,用邻接矩阵,编程简单还相对省空间。稀疏图一般用邻接表。
时间复杂度:邻接矩阵o(n^2),邻接表o(边+顶点)
邻接矩阵和邻接表的优缺点?
答:邻接矩阵优缺点:很容易确定图中任意两个顶点之间是否有边相连,但要确定图中有多少条边必须按行、按列对每个元素进行遍历,代价很大。
邻接表优缺点:很容易找到任一顶点的所有边,但要确定任意两个顶点i和j之间是否有边或弧,则需要遍历第i或第j个链表,代价很大。
有向图中邻接矩阵中入度和出度的定义
邻接矩阵中顶点i所在行(列)中1的个数为出度(入度)。
生成树
连通图的生成树是包含图中全部顶点的极小连通子图。若有n个顶点则有n-1条边。如果在生成树上减去一条边会变为非连通图,添加一条边,会形成一个环。
生成森林:
在非连通图中,各个连通分量的生成树,构成了非连通它的生成森林。
什么是最小连通图?-----生成树
答:首先,子图是连通的,用边把极小连通子图中所有结点连接起来,连接时要求不能出现环。若有n个结点,则有n-1条边。“极小”是指边尽量少的连通子图,去掉任何一个边都会使其变为不连通。
如何产生最小连通图?
可以通过广度优先搜索或深度优先搜索遍历图,调用BFS或DFS的次数就是连通分量数也即有几个连通图。在每个连通分量中依次将顶点加入,并以边连接,边的连接过程要求不能出现环。在每个连通分量中,若有m个顶点,则有m-1条边。当然,也可以考虑使用prim或克鲁斯卡尔算法。
什么是最大连通图? 极大连通子图:
设G(v,e)是连通图,G’(v’,e’)是连通图,如果对于v’等于v,e’包含于e,那么G’叫G的极大连通子图。
(1)连通图只有一个极大连通子图,就是它本身。
(2)非连通图有多个极大连通子图。每个连通分量都是一个连通图。
(3)极大是指,如果加入任何一个不在图的顶点都会导致它不再连通。
图的遍历: BFS,DFS
BFS:-(队列)–类似于二叉树的层次遍历+访问数组标记技术
(1)访问起始顶点V1,并标记数组;
(2)依次访问与V1相邻且未被访问的顶点w1,w2…wi,并标记数组;
(3)再从w1,w2…wi出发,选择与之相邻但未被访问的顶点,并被标记数组;直到所有与V1有路径相通的顶点都被访问到。
(4)选择另外一个未被访问过的顶点V2作为起始顶点,访问并标记,重复这个步骤,直到所有顶点都被访问。
DFS:-栈–类似于二叉树的先序+访问数组标记技术
(1)访问起始顶点V1,并标记数组;
(2)从V1出发,选择与V1相邻且未被访问过的任一顶点V2,并标记数组;
(3)再从V2出发,选择与V2相邻且未被访问过的顶点V3,并标记数组。重复这个步骤;
(4)当不能继续向下访问时,依次回退到最近访问的顶点,若它还有顶点未被访问,则访问该顶点,并标记。重复这个过程,直到图中所有顶点都被访问。
怎么能够判断判断一个图是连通还是非连通的? (可通过图的遍历)
答:采用图的深度遍历法,从其中一个结点v出发,直至所有与v有路径相通的结点都被访问到。若此时图中所有点都被访问过,则该图是连通图,反之,说明还有其他连通分量,该图不是一个连通图。
求最小生成树的算法
答:主要有两种:克鲁斯卡尔(Kruskal)算法和普里姆(Prim)算法。
普里姆
从任意一个顶点出发,选择与该顶点相连且代价最小的边加入边集,同时将该边对应的顶点加入顶点集,从顶点集出发,选择与该顶点集中的顶点相连,代价最小,并且加入该边后不构成回路的边—加入边集,同时将该边对应的顶点加入顶点集,重复这个过程,直到所有的顶点都被加入。就构成了一棵最小生成树。
克鲁斯卡尔
不断选取当前未被选取的权值最小的边,如果加入该边后不构成回路,则将该边加入,同时将该边对应的顶点加入生成树。重复这个过程,直到n个结点选出n-1条边。就构成了一棵最小生成树。
单源最短路径? //迪杰斯特拉算法
单源最短路径:从给定源点到其他各顶点的最短路径。
思想:加入顶点k之后,若有新的路径使得源点到顶点j的路径变短,就将源点到顶点j的路径长度修改为较小的那个值。
任意两个节点的最短路径?//弗洛伊德算法
答:对于任意两个顶点i和j,逐步尝试在原路径中加入顶点k作为中间节点,加入中间节点后,得到的路径长度变小了,则以此作为顶点i和j之间的新路径。
拓扑排序
从AOV中,选择一个入度为0的顶点输出,然后删去此顶点,并删除与此顶点相连的所有边,重复这个过程,直到找不到入度为0的顶点为止。
二叉树与离散数学中关系紧密,把偏序全序化,就是二叉树线索化,知道什么是偏序吗?
偏序:对于关系R只有部分元素成立
全序:对集合中任意两个元素都满足关系R。
例如:
集合的包含关系就是偏序,因为两个集合可以互不包含;
实数中的大小关系是全序,因为两个实数必有一个大于等于另一个。
偏序关系转化为全序关系的算法是什么 ----拓扑排序
AOV中怎么判断是否有回路
在AOV网中,可以通过拓扑排序的方法判断是否有回路。经拓扑排序,全部顶点被输出,则无回路。否则说明有回路。
有向无环图在实际生活中的应用例子?(AOV网)
完成一个工程时,各个活动完成的先后顺序。可以看成是有向无环图的一个例子。
AOE网的始点和终点是什么?正常的AOE网只有一个始点和终点吗?
分别是源点和汇点,正常的AOE网只能有一个始点和一个终点。在AOE网中有向带权图中若以边表示活动,顶点表示事件,边上的权值表示该活动的持续时间。
关键路径:在无环的AOE网中从源点到汇点,具有最大路径长度的路径称为关键路径。关键路径上的活动为关键活动。关键活动的最早发生时间和最晚发生时间是一样的。
关键路径为什么不能出现回路?
树和图之间的区别?
答:树是一对多关系,图是多对多的关系
树是图的子集
树有一个根节点,图没有
树可以递归遍历,图要看情况
树是一种“层次”关系,图是“网状”关系。
二分查找? 折半查找
设置一个low指针,和high指针,mid指向(low+high)/2,待查找元素大于mid所指的值,则在后半部分查找,即low=mid+1;
待查找元素小于mid所指的值,则在前半部分查找,即high=mid-1;
优点:是比较次数少,查找速度快,平均性能好;
缺点:是要求待查找表为有序表,且插入删除困难。
因此,折半查找适用于不经常变动而查找频繁的有序列表。
什么是哈希表?如何构建哈希表?在构建哈希表过程中,会遇到什么问题,如何解决?
(1)哈希表(散列表),是将关键字通过哈希函数映射到内存中的某个地址。这样得到的表称为哈希表。
(2)哈希表的构建,把关键字通过一个哈希函数转换成一个地址,并将关键字值存入数组的相应位置。(除留取余法,平法取中法,数字分析法,分段叠加法)。
(3)在构建哈希表的过程中可能遇到冲突,解决冲突的方法有—开放定址法,再散列法,链地址法(将同义词存储到同一个链表中)。
串:字符串简称串,在计算机上非数值对象的处理基本都当字符串数据。串是由零个或多个字符组成的有限序列。
串的模式匹配:
子串的定位就叫做串的模式匹配,它是求子串在主串中的位置。串的模式匹配的算法有KMP算法。
插入排序:每次将一个待排序的关键字,按其关键字的大小插入到已排好序的子序列中。
希尔排序:按照增量d,将待排序列分割成若干子表,分别对子表直接插入排序,且缩小增量d,直到整个表基本有序时,再对全体记录进行一次直接插入排序。
冒泡排序:从前往后(从后往前)两两比较相邻的元素,若为逆序则交换,直到序列比较完,称一趟冒泡排序。最多进行n-1趟冒泡排序即可完成排序。
----每次至少确定一个元素在最终位置;
快速排序:选取任意一个元素作为枢轴,一趟排序后,将表划分为比枢轴小的左子表和比枢轴大的右子表,之后按这个排序方法,分别递归调用左右子表。
----每次至少确定一个元素在最终位置;
简单选择排序:每趟排序,都选择关键字最小的元素,加入到已有序的序列中,直到完成排序为止。----每次确定一个元素在最终位置;
堆排序:建堆o(n),调堆o(logn),输出根节点,将最后一个关键字换到根节点位置,之后调堆,输出根节点,依次进行下去,直到排序完成。
----每次确定一个元素在最终位置;
归并排序:将待排序列,看成n个有序子表,然后两两归并,在两两归并,依次进行下去,直到完成排序。
基数排序(多关键字排序思想):基于关键字各数值位的大小进行排序–借助,分配与回收两种操作。
计数排序的基本思想
(1)对于数组中的任意元素x,只要知道在这个数组中比x小的元素的个数i,那么我们就可以直接把x放到(i+1)的位置上。这就是计数排序的基本思想。
(2)计数排序的一个重要性质就是稳定性。
桶排序的基本思想
桶排序将[0,1)区间划分为n个同样大小的子区间,这些子区间被称为桶。将n个输入元素分别放入各自的桶中。然后对各个桶中的数据进行排序,最后遍历每个桶,依次把各个桶中的元素输出即可。
堆排序的思想是什么?
答:在堆中根节点为最大或最小元素,每次将根结点输出后以最后一个结点来取代根节点位置,调堆。依次进行下去,直到输出所有元素。
小根堆:每个结点的值都小于它左右孩子的值;
大根堆:每个结点的值都大于它左右孩子的值。
调堆:从第一个可能需要调堆的非叶结点—N/2向下取整—的左右孩子开始检查,依次对非叶结点进行调堆。
堆排序、快速排序和归并排序,哪个辅助存储空间最少,哪个平均速度最快,哪个稳定?
答:稳定性:快些选堆美女聊聊—快排,希尔,选择,堆排序–不稳定
复杂度:快些以nlogn的速度归队–快排,希尔,归并,堆排序–nlogn
直接插得冒泡n^2 ----直接插入,冒泡----n^2
辅助空间:快速logn ,归并 n 堆 1
答:辅助空间最小的是堆排序,平均速度最快的是快速排序,快排和堆排序不稳定,归并排序稳定。
给你一个很长的数组,怎么找出最大最小,效率要高,还有比较次数,
(1)可以考虑使用堆排序,找最大则建立大根堆,找最小则建立小根堆。建堆的时间复杂度为o(n),调堆为o(logn),故找到最大最小的时间复杂度为o(nlogn),比较的次数为树的高度log(n+1)向上取整。
(2)也可以考虑使用快速排序,但由于数组的长度很长,虽然快排找最大最小的时间复杂度也为o(nlogn),但比较次数可能比堆排序的次数多。
分治法:
将一个规模为N得问题,分解为若干个子问题,这些子问题相对独立且与原问题的形式相同。递归的解决这些子问题,最后将各个子问题的解合并就得到原问题的解。
eg:数据结构(折半排序,归并排序,希尔排序)
二路归并的实质是什么?
答:分治法思想,将一个规模较大的问题,划分为若干个规模为2的子问题,将各个子问题排序后,完成一趟归并。再将子问题两两归并,依次进行下去。直到完成排序。
贪心算法? 背包问题
答:贪心算法,总是做出在当前看来是最好的选择。也就是说,不从整体最优上来考虑,他所做出的是局部最优解。即求解第i个元素时,只与第i-1个元素有关。
-贪心算法的列子:os(短进程优先、最短寻道时间优先)
数据结构(最短路径(djstl)、最小生成树(prim、kruskal)、哈夫曼编码)
动态规划算法,典型运用? 0 1背包问题
答:多阶马尔科夫模型:对于第i个元素,需要考虑从1到n-1个元素才能完成推理。
基本思想与分治法类似,也是将待求解的问题分解为若干个子问题,按顺序求解子问题,前一子问题的解,为后一子问题的求解提供依据。
求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解。依次解决各子问题,最后一个子问题就是初始问题的解。
分治法与动态规划的区别?
动态规划与分治法最大的差别是:动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上的)。
数组、广义表和线性表有什么联系和区别?
(1)数组是编译语言自带的一种复合数据类型。
(2)广义表和线性表都被定义为一个有限的序列(a1,a2,a3,…,an)。只不过线性表中ai被限定为单个元素,而广义表中ai可以是单个元素,也可以是一个子广义表。
(3)线性表可以用数组这种顺序存储结构来表示,也可以用链表来表示。而广义表一般只能用链表来表示。
广义表深度的计算:
(1)广义表长度:表中最上层元素的个数
(2)广义表深度:表中括号的最大层数。(需要展开子表)
怎样防止出现环?
答:RIP水平分割,OSPF算法可避免路由环路。
计算机组成原理
冯诺依曼计算机
(1)存储程序的思想,将编写好的程序存放到计算机主存中,按其在主存中的首地址执行程序的第一条指令,以后就顺序执行其他指令,直到程序执行结束。
(2)计算机分为:运算器,控制器,存储器,输入,输出设备五大部件。
(3)指令由操作码和地址码组成。
(4)冯诺依曼机器以运算器为中心。
计算机三个级别的语言
(1)机器语言:计算机唯一可以直接识别和执行的语言。
(2)汇编语言:助记符-用英文单词来代替二进制的指令代码。
(3)高级语言:需经过编译程序编译成汇编语言,然后经过汇编得到机器语言。
编译和解释? 编译器和解释器的区别?
(1)编译:把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;------eg:C语言代码被编译成二进制代码(exe程序),然后在windows上执行。
(2)解释:在执行程序时,解释一条代码为机器语言,随后执行一条解释好的机器语言,即解释一条,执行一条。所以运行速度是没有编译后的程序运行得快。
-------eg:PHP,JavaScript就是典型的解释性语言。
编译程序的结构?
编译程序也称为编译器,指把高级语言的源程序,翻译成等价的机器语言的格式。编译过程分为分析和综合两个部分,并进一步划分为—语法分析、语义分析、词法分析、代码优化、内存分配和代码生成等步骤。
(1)高级语言----(编译)—汇编语言—(汇编)—机器语言
(2)高级语言----(编译)—机器语言
海明码:
(1) 为了纠正一位错误,在n位有效信息中,要用k位校验位。应满足:2^k》=n+k+1;
(2) 为了校验两位错,就需要再增加一位校验位,即k+1位。
数据的存储方式------大端、小端
(1)大端方式:先存放高位字节,在存放低位字节。
(2)小端方式:先存放低位字节,在存放高位字节。
C语言中结构体存储的边界对齐方式应满足
(1)存储成员的起始地址%成员的长度=0;
(2)结构体的长度为最大成员长度的整数倍。
说说计算机编码那些
答:原码,补码,反码,移码
原码:将十进制数转为二进制数,最高位存放符号(0为正,1为负)。这就是机器数的原码。
反码:正数的反码与原码相同,负数的反码符号位不变,数值部分按位取反。
补码:正数的补码与原码相同,负数的补码符号位不变,数值位按位取反,末位加1。----计算机中的定点整数一般用补码表示。
移码:[X]移=X+偏置值
补码和反码什么区别,什么情况用。
区别:负数时,符号位不变,数值位按位取反,为反码,而补码要在末位加1。
反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则;
补码:解决负数加法运算正负零问题,弥补了反码的不足。
移码什么时候用的,有什么好处或作用。IEEE 754中阶码为移码,尾数为原码
移码常用于浮点数的运算中,在IEEE 754标准中,用移码表示一个浮点数的阶码。 真值=(-1)^s * 1.m * 2^E-127;
作用:(1)可较直观的判断两个二进制数的大小,(2)可用于简化浮点数的运算。(3)一般用做浮点数的阶码,能保证浮点数的机器码为全0。
加法器怎么实现减法和加法-------直接用补码就行了
补码减法的原理
原理:减法运算要化为加法来做。
[x-y]补=[x]补+[-y]补;
[-y]补:在y的原码基础上。连同符号位一起按位取反,末位加1。
原码转补码时要注意什么,如B和-B转补码时要注意什么。
答:要注意B有可能是负数-B就成正数了,由正数的补码与原码相同,那么-B的补码就和-B的原码一致。
计算机的乘法运算是怎么做的?除法运算呢?
答:通过加减法和移位来实现的;把除法转成乘法,乘法转成加法,减法也转成加法。在计算机中左移一位表示乘2,右移一位表除2。
除转乘:除2相对于乘二分之一。
计算机组成原理关于溢出?
单符号位法:参加运算的两个数的符号相同,结果又与原操作数的符号不同,则表示结果溢出。
双符号位法:运算结果的两个符号位相同则表示未溢出,两个符号位不同表示溢出。10表示下溢(当机器0),01表示上溢(中断);00,11未溢出。
符号位和进位法:符号位的进位与最高数位的进位相同,表示没有溢出。否则溢出。
机器数算术移位
正数:原码、反码、补码添0即可。
负数:原码添0,反码添1;补码,左移添0,右移添1。
逻辑移位:将操作数视为无符号数:不管左移、右移都添0.
浮点数的运算过程
(1)对阶:小阶向大阶看齐,–阶小的尾数右移一位,阶码加一,直到两个数阶码相等为止。
(2)尾数求和:将尾数相加减。
(3)规格化: 尾数大于0,需左规:尾数左移一位,阶码减一;
尾数小于0,需右规:尾数右移一位,阶码加一。—最多一次
(4)舍入: 0舍一入法:移去最高数值位为0,则舍弃,否则末位加一。
恒置1法:不论舍弃的最高数值位为0或1,尾数末位恒置为1。
(5)溢出判断。
存储器
(1)按存储器的使用类型可分为(ROM)和(RAM),它们都属于半导体存储器,都采用随机存取存储方式访问数据,ROM是只读类型的。RAM又分为SRAM(静态随机存取存储器)和DRAM(动态随机存取存储器)。
(2)ROM属于非易失性,RAM为易失性。
(3)SRAM:速度快,非破坏性读出,不需要刷新,常用作Cache;DRAM:速度较SRAM慢,破坏性读出,需要刷新,常作为主存。
什么是存储元,什么是存储单元,什么是存储单元地址区别和联系?
(1)存储元:是存储器的最小存储单元,用来存放一位二进制代码0或1。
(2)存储单元:由若干存储元组成,可存放一个独立的二进制代码。存储单元具有存储或读写数据的功能。
(3)储单元地址:计算机中的存储器往往有成千上万个存储单元,为了存取数据不发生混淆,必须给每个存储单元一个唯一的编号。这个编号就是存储单元地址。
MMU Memory Management Unit是什么及作用?
MMU(Memory Management Unit)内存管理单元,它是CPU中用来管理虚拟存储器、物理存储器的控制线路,同时也负责将虚地址映射为实地址。
机器字长、存储字长、指令字长?
(1)机器字长:处理器一次能处理的二进制代码位数—一般等于CPU寄存器的位数。
(2)存储字长:一个存储单元能存储二进制代码的位数,即MAR,MDR,PC的位数。
(3)指令字长:计算机机器指令所占的位数。
内存的扩展方式?
字扩展:增加存储字长。
位扩展:增加存储单元的数量。
字位扩展:既增加存储字长,又增加存储单元的数量。
低位交叉存储器:
(1)低位地址为体号,高位地址为体内地址;
(2)每个模块都有相同的容量和存取速度;
(3)程序被连续的存放在相邻的体中。
(4)采用低位交叉存储后,可以采用流水线技术,提高存储器的带宽。
说一说Cache, Cache的原理—局部性原理
(1)Cache是介于CPU和主存之间的高速缓冲存储器。CPU在访问数据时,首先判断所要访问的内容是否在Cache中。如果cache命中,此时CPU直接从Cache中调用该内容;否则,CPU从内存中调用所需的数据。
(2)CPU可以直接从Cache中读数据,也可以直接往Cache中写数据。CPU和Cache之间通常一次传送一个字块,字块的长度是一个主存周期能存取信息的长度。
(3)高速缓存的出现就是为了缓解CPU和主存之间的速度矛盾,提高CPU的利用率,进而使整个系统的性能得以提升。
内存和cache有什么区别? cache与主存的关系怎样?
(1)内存,是存储器,用于暂存CPU中的运算数据,及与硬盘等外部设备交换数据;Cache,是一种特殊的内存。内存主要由DRAM和只读存储器ROM组成,Cache主要由SRAM组成。
(2)CPU主频很高,运算速度很快;主存速度相较于CPU很慢,如果直接把主存与CPU连接,会造成CPU花很大一部分时间来等待主存存取数据,导致CPU的效率降低,所以需要高速的Cache来缓解CPU与主存的速度矛盾。
Cache和虚拟存储器结构的区别?
相同点:(1)基于局部性原理,把最近经常所有的部分常驻高速存储器中。
(2)都力图使存储系统的性能接近高速设备。
不同点:
(1)Cache是介于CPU和主存之间的高速缓冲存储器;虚拟存储器是介于主存和辅存之间的高速缓冲存储器。
(2)Cache用全硬件实现,虚拟存储器在主存和辅存之间用软件实现。
CPU和Cache之间通常一次传送一个字块,字块的长度是一个主存周期内能存取信息的长度。
(3)Cache是一种物理存储器,虚拟存储器是一种逻辑存储器
CPU —cache —主存 cpu-主存—辅存 的异同?
(1)cpu-cache-主存:利用cache缓和了CPU与主存储器的速度矛盾。cpu -cache-主存结构速度接近于cache,但容量接近于主存,价格接近于主存,解决了速度与成本的矛盾。
(2)cpu-主存-辅存:利用主存缓解了,高速CPU与慢速的辅存之间的速度矛盾。cpu-主存-辅存结构速度接近主存,容量接近辅存。解决了大容量低成本的矛盾。
组成原理的内存地址映射的问题
答:Cache与主存的映射方式有:直接映射,全相联映射,组相联映射。
(1)直接映射:主存中的块只能根据地址中的某些字段,映射到cache的某个特定的位置。
(2)全相联映射:只要cache有空位,就将主存中的某个块映射过去。(分组为1的组组相联映射)。
(3)组相联映射:主存中的块只能根据地址中的某些字段,映射到cache的某个特定的组中(cache的某几块中)。
Cache的写策略–全写法(写直通法),写回法
(1)全写法:CPU对Cache写命中时,必须同时将数据写回Cache和主存。
优:能随时保持主存中数据的正确性;缺:增加了访存次数。
(2)写回法:CPU对Cache写命中时,只修改Cache的内容,而不立即写回主存,只有当此块被换出时才写回主存。这种方法,减少了访存次数,但存在数据不一致的隐患。
指令格式:操作码,寻址特征,形式地址。
寻址方式有哪些?
寻址方式有直接寻址,一次间址,寄存器寻址,寄存器间接寻址,相对寻址,基址寻址,变址寻址等。
(1)直接寻址:指令中的形式地址为操作数的有效地址。
(2)一次间址:指令中的形式地址对应的内存中所存的内容为操作数的有效地址
(3)寄存器寻址:直接给出操作数所在寄存器的编号。速度快,不访存。
什么是寻址?相对寻址、基址寻址,变址寻址是什么,作用是什么?
寻址简单的说是磁头在盘片上定位数据的一个过程。
相对寻址:程序计数器PC的内容加上指令中形式地址形成操作数的有效地址,作用:相对寻址,用于转移指令。
基址寻址:把基址寄存器的内容,加上指令中的形式地址为操作数的有效地址。作用:基址寻址,便于多道程序设计。
变址寻址:把变址寄存器的内容,加上指令中的形式地址为操作数的有效地址。作用:变址寻址,便于数组和循环程序的处理。
CPU如何区分主存上的程序代码与数据的?
答:在指令的不同的周期区分。取指周期从内存中取出的是指令,而执行周期从内存取出或写入的是数据。
指令的执行周期
取指周期----取指令; 间指周期----有效地址
执行周期----操作数; 中断周期----保存程序断点
(1)指令周期:一条指令启动到下一条指令启动的时间间隔;
(2)总线周期:一次访存储器/IO端口所需的时间;
(3)时钟周期:一个节拍的时间间隔;
一条指令周期由若干总线周期组成,一个总线周期由若干时钟周期组成。
(4)机器周期:指令执行每一步操作所需的时间。
(5)微指令周期:读出一条微指令+执行该条微指令所需的时间。
指令集:指令集是存储在CPU内部,并对CPU运算进行指导和优化的程序。
机器指令和微指令?(谈谈指令和微指令)
(1)一条机器指令对应一个微程序,这个微程序是由若干条微指令构成的。因此,一条机器指令的功能是若干条微指令序列来实现的。
(2)一般每条微指令对应一个时钟周期。即一条机器指令的执行需要若干个时钟周期。
微指令的编码方式
(1)直接编码:选用或不用某个微指令,只需将该微指令对应位设置成1或0即可。这种方法比较直观,但使得指令字过长,n个微指令就需要,微指令的操作字段有n位。
(2)字段直接编码:将互斥性微命令放在同一段内,相容性微命令放在不同段。
什么是CISC和RISC ?简述它们的特点和区别?
CISC:“Complex Instruction Set Computer”,即“复杂指令系统计算机”,
RISC:“Reduced Instruction Set Computer”,即“精简指令集计算机”
CISC:(1)计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2)CISC绝大多数为微程序控制。
(3)指令长度不固定。
(4)CISC对可访存的指令不加限制。
RISC:(1)设计者把主要精力放在那些经常使用的指令上,对不常用的功能,常通过组合指令来完成。因此,实现特殊功能时,效率较低。但可以利用流水线技术加以改进。
(2)RISC绝大多数通过组合逻辑控制。
(3)RISC的指令长度固定,可以实现流水线技术。
(4)RISC中能访存的指令只有load和store。
CPU的功能?
答:CPU(Cntral Pocessing Uit),
cpu是计算机的核心,因为它负责处理、运算计算机内部的所有数据,而主板则控制着数据的交换。
CPU主要由运算器、控制器构成,运算器主要负责对二进制数据进行运算,控制器主要负责控制计算机各部件的指令执行,包括存取地址。
CPU的两种设计方式?
(1)硬布线(组合逻辑):速度快,但难以扩充和维护—通常用于risc结构的CPU。
(2)微程序:一条机器指令对应一个微程序,执行指令时只需要读出微程序即可。每条指令都需要从控存中读取,所以速度较慢,但容易进行扩充和修改。
—通常应用于cisc结构的CPU。
什么是寄存器?
答:寄存器是CPU内的重要组成部分。寄存器是高速存贮部件,可用来暂存指令、数据和地址。在CPU的控制部件中,包含指令寄存器(IR)、程序计数器(PC)、地址寄存器(MAR)、数据寄存器(MDR)等。在CPU的运算器部件中,包含暂存器(DR)、累加器(ACC)、程序状态字寄存器(PSWR)和通用寄存器等。
什么是程序计数器?
答:程序计数器PC是用于存放执行指令的地方。在程序开始执行前,必须将它的起始地址,即程序的第一条指令在内存的地址送入PC,因此程序计数器(PC)的内容是第一条指令的地址。
ALU的全称? 简单说一下ALU?
答:ALU:Arithmetic Logic Unit,算术逻辑单元。
由与门和或门组成,主要负责二进制数据的加、减法运算。
指令流水线阻塞的原因?
(1)数据相关:多条指令争用同一资源。–解决:前一条指令访存时,使后一条指令暂停一个时钟周期。
(2)结构相关:后一条指令要用的数据为前一条指令的结果。
类型:《1》写后读;《2》读后写;《3》写后写
解决:1.将相关指令暂停一个或几个时钟周期;2.数据旁路技术
(3)控制相关:流水线遇到转移指令时。
解决:1.尽早判别转移指令是否发生;2.提高转移方向的猜准率。
总线分类:
(1)片内总线:连接芯片内寄-寄,寄-alu
(2)系统总线:连接计算机各部件。—数据总线,地址总线,控制总线;
数据总线:双向,传送数据,数据可以是地址,操作数,状态信息;
地址线:单向,指出源或目的操作数所在的主存单元或I/O端口的地址。
控制总线:单向,传送控制命令。
(3)通信总线:计算机系统之间传送信息的总线。
地址线,数据线是干什么的?
(1)地址线是用来传输地址信息用的。指出源或目的操作数所在的主存单元或I/O端口的地址。
(2)数据线是用来传输数据的,数据是宏观来说的,数据可以是地址,操作数,状态信息。
2MByte大小的内存空间寻址需要多少跟地址线、不同单位之间换算的题
答:需要21根地址线。
总线定时:同步定时、异步定时、半同步定时、分离式定时。
总线的两种基本定时方式-----同步(定时)传输与异步(定时)传输
(1)同步传输:采用一个统一的时钟信号来协调发送方和接收方的传送定时关系。时钟信号通常由CPU控制总线发出,传输速度快,总线效率低。
(2)异步传输:允许各个模块速度不一致,不要求各部件严格统一时间,而是采用握手的方式。(全互锁,半互锁,不互锁)
总线仲裁:-------集中仲裁、分布仲裁
集中仲裁:(1)链式查询方式;(2)计数器查询;(3)独立请求方式
总线带宽:单位时间内总线上可以传输的数据的位数。
总线带宽=总线宽度*总线工作频率
突发传输?----一次传送一个地址和一批地址连续的数据。
串口?串行接口简称串口(常指COM接口),是采用串行通信方式的扩展接口。
USB?-----(Universal Serial Bus)
答:USB,(通用串行总线),属于设备总线,用于规范电脑与外部设备的连接和通讯。USB接口的优点:支持插即用、热插拔、传输速度快、扩展能力强。
显存容量:分辨率灰度级位数
显存带宽:分辨率灰度级位数*刷新频率
磁盘操作的时间?
(1)寻道时间:将磁头移动到指定磁道所需的时间;-------- ------调度算法决定
(2)延迟时间:将磁头定位到磁道的某个扇区所需的时间;------磁盘转速决定
(3)传输时间:从磁盘读出或写入数据所需的时间。---------------磁盘转速决定
I/O端口编址
(1)统一编址:把I/O端口当做存储器的单元,采用统一的访存指令访问I/O端口。优:不需要专门的I/O指令。缺:占有了存储器地址,使内存容量变小;且执行速度较慢。
(2)独立编址:CPU设置专门的I/O指令访问端口。
优:程序编址清晰。缺:I/O指令少,且增加了控制的复杂性。
计算机由什么组成?说一下计算机内部的结构
答:计算机由硬件系统和软件系统组成:硬件系统分主机和外设。主机由:中央处理器(CPU)、内存和主板。外设由:外部存储设备、输入设备、输出设备。软件系统分:基本输入输/输出系统(BIOS)、系统软件、应用软件。
内存有哪些引脚?
答:根据内存条金手指引脚定义有:(72、144、152、168、184、200、240线)
内存条的作用?
答:内存条用于暂存CPU中的运算数据,及与硬盘等外部存储器交换的数据。计算机运行时,CPU就会把需要运算的数据调到内存,当运算完成后再将结果传送出来。
比如在使用WPS处理文稿时,在键盘上敲入字符时,它就被存入内存中,点击保存时,内存中的数据才会被存入硬(磁)盘。
什么是虚拟机?有什么用处?
答:虚拟机(Virtual Machine)是指在一台计算机上分配出多个具有完整计算机特性的区域,每个区域可以互不影响的工作,可以独立安装运行软件,保存数据。但不会对真正的系统产生任何影响。
作用:虚拟机主要用来做实验和测试,比如测试一些病毒软件,可以在虚拟机里去运行测试,这样即使染毒也不会感染到真实计算机中。
多路接入通道与数组接入通道
(1)多路接入通道:连接多台中速和慢速的设备:以交叉方式为多个外设服务。
(2)数组接入通道:连接多台高速设备:在一段时间内只能执行一道通道程序。
操作系统
操作系统的特征
(1)并发;(2)共享;(3)虚拟;(4)异步。
OS的功能:
(1)处理机管理(2)存储器管理(3)文件管理
(3)设备管理(5)OS作为用户与计算机硬件之间的接口-联机/脱机命令接口。
什么是中断?
1.在程序运行过程中,系统出现了一个必须由CPU处理的情况,CPU暂停正在执行的程序,转而处理新的程序的过程,叫中断。
2.中断分为–内中断和外中断:内中断信号来自CPU内部,与当前执行的指令有关。外中断的信号来自CPU外部,与当前执行的指令无关,在每个指令周期末尾检查是否需要中断。
(1)外中断:外设请求;I/O操作完成。
(2)内中断:地址越界;整数除0;缺页;内存溢出;文件损坏
3.中断处理过程----(1)某设备或程序发出中断请求;(2)中断隐指令完成中断前状态的保存(关、保、服);(3)中断服务;(4)返回断点继续执行。
CPU对中断如何处理?
(1)发生中断,为了响应中断,CPU就会暂停正在执行的程序,转而去处理中断的事件。中断处理结束后,CPU返回中断前的工作,继续执行。
(2)如果CPU正在做更重要的事情,就会让这个程序先等待,有空在响应中断。
(3)如果同时有多个程序都要CPU来处理,CPU就按重要程度来逐个处理。
中断和陷入(陷阱)的主要区别----中断通常指外中断
(1)陷入通常由处理机正在执行的指令引起,中断由与现行指令无关的中断源引起的。
(2)CPU在执行完一条指令后,下一条指令开始前响应中断;而在一条指令执行中可以响应陷阱。
中断与信号的区别与联系
相同点:(1)都是异步通信方式;(2)有中断/信号请求时,都暂停正在执行的进程,转而执行相应请求;(3)执行完都返回原来的断点;(4)对中断/信号都可进行屏蔽。
不同点:(1)中断有优先级,而信号没有;(2)中断处理在核心态,信号处理在用户态;(3)中断的响应是及时的,信号的响应有较大延迟。
什么是管态?什么是目态? 它们与进程运行状态的关系是什么?
(1)管态又叫特权态,或核心态。CPU在管态下可以执行指令系统的全集。通常,操作系统在管态下运行。
(2)目态又叫用户态。处于目态时,只能执行非特权指令。用户程序只能在目态下运行。
简述系统调用过程—文件管理、设备管理、内存管理等都需要系统调用
(1)传递系统调用参数 (2)执行trap陷入指令
(2)执行系统调用服务 (4)返回用户态
注:系统调用请求发生在用户态,处理在核心态。
为什么引入多道程序技术?
引入多道程序技术后,可以进一步提高了CPU利用率,提高内存和I/O设备利用率,增加系统吞吐量。
什么是进程?-------(特征:动态性、并发性、独立性、异步性)
(1)进程由程序段,数据段,PCB组成;–PCB是进程存在的唯一标志。
(2)进程是程序在一个数据集合上的一次运行过程。进程是动态的,程序是静态的。
(3)在没有线程机制的计算机系统中,进程是资源分配和调度的基本单位。在引入线程机制的计算机中,进程依然是拥有资源的基本单位。
进程三个状态的转换
(1)就绪态,已获得除cpu以外的所有资源,只要再获得处理机便可运行这。
(2)执行状态,指进程已获得处理机及其他必须资源后,程序正在执行。
(3)阻塞状态,进程因等待某件事发生时,用block原语阻塞进程。
进程的并发、并行和互斥?
并发:两个或多个事件在同一时间间隔内发生;宏观上同时执行,微观上交替运行。
并行:两个或多个事件在同一时刻发生;宏观和微观上都同时执行;
互斥:若进程要使用某资源,该资源正在被另一进程所占有,且该资源不允许被两个进程同时使用,则该进程只好等待占有资源的进程,释放资源后,才能使用。
临界资源:一次只允许一个进程使用的资源。
进程的调度策略有? 先、短、高、优、时、多
调度的基本准则?
(1)CPU利用率(2)系统吞吐量(3)周转时间(4)等待时间(5)响应时间
在基于优先级调度中,当一个进程正在执行时,来了一个高优先级的进程,是否会立即终止现行的进程?为什么?
不一定,因为有可能为非抢占式系统,要等待当前进程执行完毕才可以抢占CPU;
父子进程是否可以并发运行?
可以。父进程创建子进程后,子进程也成了一个可以独立运行的单位,虽然子进程继承了父进程的全部资源,但只要两个进程的数据没有冲突,它们就可以并发运行。
进程/线程状态的控制-------原语-------创建与终止,阻塞与唤醒
1.进程/线程的创建与终止
创建:(1)申请空白PCB;(2)为进程/线程分配空间。
终止(撤销):(1)找到撤销进程的PCB;(2)若进程正在执行,则立刻停止,若该进程有子进程则将子进程撤销;(3)回收进程所占的资源。
引起进程撤销的原因有哪些?—进程正常结束 (2)进程异常 (3)外界干预
2.进程/线程的阻塞与唤醒
阻塞:需要等待某事件发生时,使用block原语将自己阻塞。–主动
唤醒:相关事件完成时,调用wakeup原语唤醒进程。------------被动
进程通信方式?(进程间信息交换)
低级通信:(PV操作)
高级通信:(以较高的效率传输大量的数据):共享存储、消息传递、管道通信、套接字。
(1)共享存储:在通信的进程之间,开辟一块可直接访问的共享空间。对共享空间的访问需要PV操作。
(2)消息传递:进程之间的数据交换,以格式化的消息为单位。进程通过发送消息和接收消息两个原语进行数据交换。
(3)管道通信:管道即连接读写进程之间的一个文件,也叫缓冲区。各进程只能互斥的访问管道。写满:写进程被阻塞,读空:读进程被阻塞。没写满,不允许读,没读空,不允许写。
(4)套接字可用于不同进程间的通信。
进程通信中管道是什么?为什么用管道技术?和其他技术相比有什么优缺点?
(1)管道即连接读写进程之间的一个文件,也叫缓冲区。各进程只能互斥的访问管道。
(2)优点:使用管道,进程之间能较高效的传输大量数据,实现进程通信。
(3)缺点:管道只能半双工通信,若要实现全双工通信需要设置两个管道。
线程
(1)线程分为用户级线程和内核级线程。用户级线程的管理由应用程序负责;内核级线程的管理由OS负责。
(2)线程是独立运行的基本单位,一个进程可以有若干线程。
(3)线程基本不拥有资源,但可访问所属进程的全部资源。
(4)线程的切换开销较小,故可更好的实现并发性。
进程与线程的关系?–任务、程序?
(1)在没有引入线程机制的计算机系统中,进程是独立运行和拥有资源的基本单位。引入线程后,线程是独立运行的基本单位,而进程依然是拥有资源的单位;线程基本不拥有资源,但可访问所属进程的全部资源。
(2)进程间的通信方式有:共享存储,消息传递,管道,套接字。而线程之间的通信要先检查是否属于同一个进程。属于同一个进程之间的各线程可直接读写进程数据段;而不同进程的线程之间的通信属于进程间通信。
(3)进程切换的开销较大。而线程切换时,只需要保存少量寄存器的内容,开销较小。
(4)进程之间的地址空间相互独立,而同一进程的各线程可共享进程的地址空间。
任务:一系列共同达到某一目的的操作。一个任务既可以是一个进程,也可以是一个线程。例如,读取数据并将数据放入内存。这个任务可以作为一个进程来实现,也可以作为一个线程来实现。
程序:一组指令的有序集合,它只是一个静态的实体。
谈一下多线程?
多线程(multithreading):是指从软件或者硬件上,实现多个线程并发执行的技术。具有多线程能力的计算机,能够在同一时间执行多个线程,进而使整个系统的性能得以提高。多线程能提高–资源利用率,程序响应快。
线程为什么能提高系统效率?
(1)线程并发执行的开销比进程小。(2)线程的切换开销比进程小。因此可以提高系统效率。
多线程,真的提高了效率吗?
不一定。多线程并不是为了提高效率,而是可以并行执行,只是它合理利用了时间,进行了多个操作。买票系统就是用了多线呈。如果一个用户,一个用户的等下去不是办法;所以可以用多线程,让多个用户同时买票,效率也就提高了。当然。效率不是指执行的效率,而是时间的利用率。
处理机调度—高级(作业)调度、中级调度、低级(进程)调度
(1)高级(作业)调度:在外存的作业后备队列中,选择一个作业调入内存。
高级调度,只进行一次;
(2)中级调度:将内存中某个不用的进程,挂起到外存的后备队列;或从外存的后备队列,选择一个进程激活并调入内存;—多次
(3)低级(进程)调度:从进程的就绪队列中,选择一个进程上处理机运行。–调度频率较高
在交互式系统中,非剥夺是不是一个好的策略? 为什么?
(1)非剥夺方式:一旦把处理机分配给某进程后,便让它一直运行下去,直到进程完成时,才把处理机分配给另一个进程。
(2)剥夺方式:当一个进程正在运行时,系统可以剥夺已分配给它的处理机(资源),分配给其它进程。剥夺原则:优先级原则、短进程、时间片原则。
在分时系统中不剥夺不是一个好的策略。因为,在分时系统中,除了交互性以外,及时性也是很重要的因素。当一个作业被阻塞后,CPU就空闲,其他用户的及时性就无法保证了。
实时系统的分类-----软实时、硬实时系统。
—计算机能及时响应事件的请求,并在规定的时间内完成对该事件的处理。
(1)软实时系统,要求事件在截止期限前得到处理,但违反截止期限,并不会带来致命的错误。–eg:实时多媒体系统
(2)硬实时系统,各任务不仅要执行无误,而且要准时,对操作系统的实时性要求比较严格。–eg:航天中的宇宙飞船的控制等
CPU不执行程序的时候干什么?
CPU不执行任何程序时,处理器被认为是空闲的。大多数的CPU当空闲时会进入省电模式。操作系统有一个空闲任务,当CPU无事可做的时,OS通过调度来载入它。这个空闲任务是由一个重复执行停机指令的循环组成的。
进程互斥应满足:
(1)空闲让进;(2)忙则等待;(3)有限等待;(4)让权等待
举例解释一下同步和互斥
(1)同步表现为直接制约,如管道通信,一个进程读,一个进程写,它们相互制约。(2)互斥表现为间接制约,比如多个进程同时请求打印机等。
生产者和消费者系统中,同步和互斥的含义?
同步:直接制约—有产品,才可以消费。
互斥:间接制约—多个生产者,只能互斥的使用缓冲区。
读者/写者问题在实际中有何应用----文件操作,过独木桥问题,汽车单行道问题
实现同步与互斥的机制?
同步:信号量–(整型/记录型);整型不满住让权等待;记录型满足让权等待,实质是pv操作。
互斥:软件–(单标志法,双标志先检查,双标志后检查,皮特森算法)
硬件–中断屏蔽法,硬件指令法(TextAndSet指令–原子操作)
谈谈PV操作。
号量的P,V操作的实质是‘加减操作’,p操作是对信号量进行减1操作,然后判断信号量是否小于0,是则阻塞等待,否则什么都不做;V操作是对信号量进行加1操作,然后判断信号量,是否小于等于0,是则唤醒进程,否则什么都不做。(S.Value值的绝对值表示等待该资源而阻塞的进程数。)
谈谈信号量
信号量分为整数型信号量和记录型信号量。整数型信号量,表示资源个数,不遵循让权等待。记录型信号量,遵循让权等待。记录型信号量的实质:(PV操作)
信号量是一个计数器,可以用来控制多个进程或线程对资源的访问。信号量不是用于交换数据,而是用于进程之间的同步。信号量用于通知接收进程某个事件已经发生。
同步异步
(1)同步,就是在发出一个同步调用后,在没有得到结果之前,就不能继续执行后续操作。
(2)异步,当一个异步调用发出后,在没有得到结果之前,就可以继续执行后续操作。
同步,就是实时处理(如打电话):通信双方不能断(我们是同时进行),你一句我一句,这样的好处是,对方想表达的信息能马上收到。
异步,就是分时处理(如收发短信):服务器接收到客户端请求后不是立即处理,而是等服务器比较空闲时加以处理,这样可以避免涌塞。
管程?
(1)管程是由一组数据及对这组数据的操作组成的一个软件模块,这组操作能初始化,并改变管程中的数据和同步进程。管程的出现是为了解决,信号量机制编程麻烦,且容易出错的问题。
(2)管程只能访问管程内的局部变量,任何时刻只能有一个进程进入管程执行;进程只能通过管程提供的入口进入管程。
n个任务一个cup,阻塞,运行,就绪的进程最多有多少个?
阻塞n个(死锁)----运行1个(只有一个CPU)----就绪n-1个(运行一个,剩下的就绪)
OS的死锁?
答:由于资源占用是互斥的,当某个进程提出资源申请后,使得有些进程在无外力协助下,永远分配不到必需的资源,而无法继续运行,这种现象就称为死锁。
死锁的原因主要是:
(1)系统资源不足。
(2)进程推进顺序的不合理性。
(3)资源分配不当等。
死锁的四个必要条件:
(1)互斥条件:一段时间内某种资源仅为一个进程所占有。
(2)不剥夺条件:进程已获得的资源,在没有使用完之前,不能被其他进程剥夺。
(3)请求与保持:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(4)循环等待条件:存在一种资源循环等待链,链中的每个进程已获得的资源同时被链中下一个进程所请求。
死锁的处理策略-----死锁预防、死锁避免、死锁的检测与解除。
预防死锁—破坏产生死锁的四个必要条件中的一个或几个
(1)互斥条件:不可实现
(2)不剥夺条件:释放已获得的资源,可能造成前一阶段的工作失效。
(3)请求与保持:静态预分配法。
(4)循环等待条件:顺序资源分配法。
死锁避免-----(银行家算法)
安全状态:系统按照某种进程推进序列,为每个进程分配,回收资源,可以使每个进程都可以顺利完成。只要系统处于安全状态,系统就能避免进入死锁。
不安全状态:系统无法找到一个安全序列,则称系统处于不安全状态。系统处于不安全状态,系统有可能进入死锁。
银行家算法的步骤
Available:可用资源数; Max:进程需要的最大资源数
Allocation:已分给进程的资源数 Need:进程还需要的资源数
(1)检查此次申请是否小于等于需求资源数,Request《=Need;
(2)检查此次申请是否小于等于可用资源, Request《=Available;
(3)试探着分配资源,并更新数据:
Available=Available-Request;
Allocation=Allocation+Request;
Need=Max-Allocation;
(4) 检查此次分配是否会使系统进入不安全状态,不会则分配资源,否则不分配。
死锁的检测与解除
----允许死锁的发生,OS只检测死锁的发生,然后采取措施解除死锁。
主要用到–资源分配图:有资源结点和进程结点,进程指向资源的边为请求边,资源指向进程的边为分配边。
依次消除与不阻塞进程相连的所有边,若进程能消除所有边,则称可完全简化。可完全简化,则可以解除死锁。
死锁解除-(1)资源剥夺法:挂起某些死锁,剥夺它的资源,分配给其他死锁。
(2)撤销进程法:强制撤销某些进程,并剥夺这些进程的资源。
(3)进程回退法:让某些进程回退到足以回避死锁的状态。
安全性算法与死锁检测算法区别
(1)安全性算法(银)–检测分配后,系统是否处于安全状态,即检查这样分配后,其余进程能否有充足的资源顺利执行下去。
(2)死锁检测算法–是检测已经分配资源的进程,是否可以用还剩下的资源顺利执行下去。
描述程序在计算机里面的运行过程
(1)程序的运行过程要经过:编译、链接和装入。
编译:将用户代码编译为若干模块;
链接:将编译后的目标模块和所需的库函数链接在一起,形成一个装入模块。
装入:将装入模块装入内存运行。
(2)计算机在运行时,先从内存中取出第一条指令,通过控制器译码,按指令的要求,从内存中取出数据,进行运算,然后再根据译码地址将结果写回内存。接下来,再取出第二条指令,在控制器的控制下完成规定操作。依次进行下去。直至遇到停止指令。
程序链接的三种方式?----静态链接、装入时动态链接、动态运行时装入。
覆盖与对换?
覆盖:将用户空间,划分为一个固定区和若干覆盖区;将常驻内存的段放在固定区,调入后就不在调出;将不经常使用的段放在覆盖区,需要时调入内存,不需要时调出内存。
交换:在磁盘开辟一个足够大的区域做为对换区,把内存中某些不常使用的进程换出到对换区,在需要时候又把它们换进内存。
当内存已全部被使用时,计算机采用什么技术?
答:对换技术。
在磁盘上开辟一个足够大的区域做为对换区。当某进程要调入内存运行,而当前的内存空间又不能满足该进程时,可把内存中某些不常使用的进程换出到对换区,在需要时候又把它们换进内存。
连续分配内存?
(1)单一连续分配:将内存划分为系统区(低地址)和用户区(高地址)。系统区提供给OS使用;用户区提供给用户使用。适用于单道程序系统,解决空间不足的方法是覆盖。内部碎片;
(2)固定分区分配:将内存划分为大小相等的分区,每个分区只能装入一道程序。适用于多道程序系统,解决空间不足的方法是覆盖/对换技术。内部碎片;
(3)动态分区分配:根据进程的大小动态的建立分区,并使分区的大小正好适应进程的大小。解决空间不足的方法是交换。外部碎片;
在可变分区管理中,需要哪些硬件机制?
可变分区分配管理方式,一般均采用动态重定位方式装入。地址变换主要靠两个寄存器:基址寄存器和限长寄存器。基址寄存器存放作业的起始地址,限长寄存器存放作业的长度。
动态分区分配算法
(1)首次适应:空闲分区的地址递增链接,从链首顺序查找第一个满足条件的分区。----速度快,平均性能最好。碎片多出现于低地址空间。
(2)循环首次适应:空闲分区的地址递增链接,从上次查找结束的位置开始查找第一个满足条件的分区。 碎片多出现于高地址空间。
(3)最佳适应:空闲分区按容量递增的次序链接,从链首开始顺序查找第一个满足条件的分区。 要对分区排序,开销大。
(4)最坏适应:空闲分区按容量递减的次序链接,从链首开始顺序查找第一个满足条件的分区。 要对分区排序,开销大。使系统缺少较大的分区,若此时有大进程到达,可能无法调入内存。
分页存储管理和分段存储管理?----非连续分配
页式管理:把主存空间划分为大小相等的块,每个进程也以块为单位划分。进程执行时,以块为单位逐个申请主存中的块空间。进程的块称为页,内存的块称为页框。系统为每个进程建立一张页表,记录了页面在内存中的物理块号。
分页存储管理方式需要硬件:页表寄存器(存放页表的始址、页表长度)
分页管理方式地址结构:页号、页内偏移;
作用:从计算机角度出发,提高内存的利用率,有内部碎片,地址是一维的。
段式管理:把一个程序分成若干个段进行存储,每个段都是一个逻辑实体。段式管理是通过段表进行的,包括段号、段长、段的起始地址等。
作用:面向用户,利于编程和信息共享,有外部碎片,地址是二维的。
段页式管理:程序被分为若干段,然后将每个段划分为大小相等的页。在一个进程中,段表只有一个,而页表可以有多个。
为了实现重定位需要哪些硬件?
最简单的方式是在系统中增设一个重定位寄存器,存放正在执行作业的内存地址。每次访问数据时,由硬件自动将相对地址与重定位寄存器中的地址相加,形成物理地址。当然在分页式与分段式系统中,具地址变换机构,以及快表等硬件。
局部性原理
答:局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于集中在一个较小的连续区域中。
局部性有两种不同的形式:时间局部性和空间局部性。
时间局部性:在具有较好的时间局部性的程序中,如果某个存储器被访问了,那么很可能在不久的将来被再次访问。
空间局部性:在具有较好的时间局部性的程序中,如果某个存储器被访问了,那么程序很可能在不久的将来,访问附近的一个存储器。
虚拟存储器的思想是什么? (用内外数据倒换的时间差换空间+局部性原理)
答:基于局部性原理,将程序的一部分装入内存,其余的留在外存。当所访问的信息不再内存时,由操作系统将所需的信息调入内存。操作系统将暂时不用的数据换出到外存上。系统好像为用户提供了一个比实际大得多的存储器。称为虚拟存储器。
三种实现方式:请求分页,请求分段,请求段页式。
特点:多次性(多次调入)、对换性(进程不需要常驻内存)、虚拟性(逻辑上扩充主存容量)
页表/段表机制:通过查表获得相关信息;
中断机制:要访问的页不在内存时产生缺页中断;
地址变换机制:把逻辑地址变为物理地址
虚拟内存容量由什么决定?----计算机的地址结构、可用磁盘容量。
页式虚拟存储和段式虚拟存储的特点和区别?
1、页式虚拟存储器
主存与虚存都被划分为同样大小的页,主存的页称为实页,虚存的页称为虚页。页式虚拟存储的地址格式为:虚页号,页内偏移;虚地址到实地址之间的变换由页表来实现;每个页表项记录了虚页号,实页号和装入位等信息。装入位为1表示该页面已经在主存中了,否则就通过缺页中断来调入页。
2、段式虚拟存储器
段式虚拟存储器是按程序的逻辑结构划分地址空间,段的长度是随意的。它的优点是易于实现存储保护,便于程序动态装配;缺点是调入操作复杂。
3、段页式虚拟存储器
在段页式中把程序按模块分段,每个段划分成与物理空间同样大小的页面。
计算机系统怎样实现存储保护?
(1)防止地址越界(检查进程的地址,发生越界时产生中断,由操作系统进行相应处理)
(2)防止操作越权(自己区域的信息–可读可写、对公共区域中允许共享的信息–可读而不可修改、对未授权使用的信息–不可读,不可写)
操作系统中,当一个页面存满了后,系统会用哪些算法处理?页面替换的算法
(1)最佳置换(OPT):淘汰以后不再使用的页或最长时间内不再使用的页。(无法实现,但可以用来评价其他算法)
(2)先进先出置换(FIFO):淘汰最早进入内存的页面(Belady异常)
(3)最近最久未使用(LRU);淘汰最近最长时间未被访问的页。
(4)时钟置换算法:淘汰使用位位0的页,(选择一个页最多两轮扫描)
(5)改进的时钟置换:淘汰使用位为0,修改位为0的页(最多4轮扫描)
当cache已全部被使用时,现需要调入一个页面,计算机会怎么处理?
答:使用页面置换算法,选择一个页调出cache,然后将需要的页面调入。
(先进先出、最近最久未使用、最不经常使用)
发生缺页中断时,是否一定会执行页面淘汰算法
–不一定。(1)若系统所分配的页面,还有页面未被使用,则直接调入,不用执行淘汰算法;(2)若缺页的页地址错误则结束进程,此时不再执行淘汰算法。
页面调度时,当发生缺页时是否立即调出一页,也同时调入一页?
不一定,(1)如果系统分配的页数使用完,此时需要调出一页,然后将需要的页调入。(2)但如果页数还有剩余的话,则只需调入页面,不涉及页面调出操作。
操作系统的页面分配策略
答:固定分配局部置换、可变分配局部置换、可变分配全局置换。
(1)固定分配:为每个进程分配一定数量的物理块,在整个运行期间保持不变。
(2)可变分配:为每个进程分配一定数量的物理块,OS会动态调整给每个进程分配的物理块数。
(3)全局置换:OS保持一个空闲物理块队列,当某进程发生缺页,OS从空闲物理块队列,取出物理块分配给该进程。
(4)局部置换:若发生缺页,则只能从该进程所占的页面中,选择一个页调出,然后再调入需要的页面。
抖动
页面置换过程中,页面频繁的调入调出,如果一个进程调页的时间,多于执行时间。就称这个进程为抖动或颠簸。
原因:(1)对换信息量过大,(2)内存容量不足,(3)置换算法选择不当。
解决方法:(1)增大内存容量,(2)减少进程数量。
文件控制块FCB?
用来存放控制文件所需的各种数据结构,以实现“按名存取”。FCB包含:
(1)基本信息:如文件名等;
(2)存取控制信息:如文件存取权限等;
(3)使用信息:如文件建立时间、修改时间等。
文件关闭的过程
(1)通过检索文件目录来找到指定文件;
(2)调用“close()”关闭文件,并把该文件从打开文件表中的表目项,删除。
文件的目录结构?—单级、两级、多级、无环图目录结构
(1)单级目录结构:整个文件系统只创建一张目录表,每个文件占一个目录项。
优:实现了按名存取; 缺:查找速度慢,文件不允许重名,不便于文件共享。
(2)两级目录结构:将文件目录,分为主文件目录、用户文件目录两级。
优:解决了不同用户的重名问题; 缺:目录结构缺乏灵活性
(3)多级(树形)目录结构
优:目录层次清晰; 缺:查找文件时需逐级查找,增加了访问磁盘次数。
绝对路径:从根目录出发到指定文件的路径;
相对路径:从当前目录出发到指定文件的路径。
(4)无环图目录结构:可以用不同的文件名指向同一文件,甚至指向同一目录。优:方便文件的共享; 缺:系统的管理更加复杂。
文件共享?硬链接、软链接
(1)硬链接:采用索引结点的方式,在索引结点中还增设了一个计数器count,表示链接到本文件上的用户数,当count》1时,文件拥有者不能将文件删除,否则会导致指针悬空。
优点:实现了异名共享;
缺点:文件拥有者不能删除与他人共享的文件。
(2)软链接:利用符号链实现文件共享。只有文件的拥有者,才拥有指向其索引结点的指针。
优点:文件拥有者可以删除被他人共享的文件;
缺点:读取共享文件时,需要按路径名逐级查找,访问开销大。
文件的实现/文件分配方式------连续、隐式链接、显示链接、索引分配
(1)连续分配:要求每个文件在磁盘上占一组连续的块,其中,文件的FCB包含第一块地址和连续的块数。—类似顺序表
优:支持顺序访问和随机访问,实现简单。
缺:文件不宜动态增加。
(2)隐式链接分配:每个文件对应一个磁盘块的链表,每个盘块都有指向下一个盘块的指针。文件的FCB包含第一块指针和最后一块的指针。—类似链表
优:文件增删改很方便,可动态分配盘块,提高了空间利用率;
缺:只能顺序访问,且一旦断链会导致文件数据丢失。
(3)显示链接分配:把用于链接文件各物理块的指针,都显式的存放在一张链表中。在整个磁盘仅设一张FAT,开机后将FAT读入内存,并常驻内存。
优:支持顺序或随机访问。
缺:文件分配表需要占一定的物理空间。
(4)索引分配:把每个文件的所有盘快号放在一起,构成索引表。–顺+链
优:索引支持随机访问,且没有外部碎片问题。
缺:增加了存储空间的开销。
文件连续分配和离散分配的优缺点?
(1)连续分配。
优:支持顺序访问、直接存取。缺:要求有连续的空间;且要事先知道文件长度。
(2)离散分配
优点:提高外存利用率,减少碎片产生;无须事先知道文件大小。
缺点:访问速度慢;索引分配可以直接存取,但是索引表占用额外空间;链接
分配只能顺序访问。
文件存储空间的管理–对空闲磁盘块的管理
(1)空闲表法:为所有空闲盘快,建立一张空闲盘块表;
(2)空闲链表法:将所有空闲盘快,组成一个空闲盘块链表;
(3)位示图法:用一位二进制数0或1,表示某个块空闲或不空闲。
混合索引分配方式?–直接地址、一次间接地址、二次间接地址…
磁盘调度算法? 先、最短寻道、SCAN,CSCAN
(1)先来先服务:根据访问磁盘的先后顺序,进行调度。
优:算法简单,且具有公平性。
(2)每次选择离当前最近的磁道调度。—可能导致离磁头远的进程饥饿。
(3)SCAN:在磁头移动方向,选择离当前最近的磁道,作为下一次服务对象。
缺:对最近扫描过的区域不公平。
(4)CSCAN:磁头单向移动来提供服务。返回时磁头直接移动到起始端,而不服务任何请求。
优:解决了SCAN算法趋向于处理最内或外道请求的缺点。
RAID磁盘阵列
(1)RAID0:条带化,类似于低位交叉存储器,作用是提高存取速度。
(2)RAID1:用两套磁盘,互为备份,来提高可靠性。
(3)RAID2:采用纠错的海明码的磁盘阵列。
(4)RAID3:位交叉奇偶校验的磁盘阵列。
(5)RAID4:块交叉奇偶校验的磁盘阵列。
(6)RAID5:无独立校验的奇偶校验磁盘阵列。
I/O控制有哪几种?—5章
I/O控制方式主要有----程序查询方式、中断方式、DMA方式和通道控制方式。
(1)程序查询方式(程序轮询方式):CPU必须循环检测I/O设备的状态,当设备准备好时,CPU就可以与I/O设备进行数据存取操作。每次只能存取一个字;CPU与I/O设备串行工作。
(2)中断方式:当某进程要启动某个设备时,CPU就向相应的设备控制器,发出设备启动指令,然后CPU又返回去做原来的工作,当I/O设备完成时,就会向CPU发出中断请求。一次存取一个字;CPU与I/O设备并行工作。
(3)DMA(直接内存存取):在外设和内存之间开辟一条直接的数据通路,数据传送时,DMA控制器从CPU完全接管对总线的控制,除了在数据传输开始和结束时,整个过程无须CPU的干预。降低了CPU在数据传送时的开销。一次存取一个数据块;CPU与I/O设备并行工作。
(4)通道:通道(Channel)是一个外围设备处理器。通道能执行与外部设备相关的指令。是一种实现主存与I/O设备,直接进行数据交换的控制方式。一次存取若干数据块;CPU与I/O设备并行工作。
说一说DMA原理?
在外设和内存之间开辟一条直接的数据通路,数据传送时DMA控制器从CPU完全接管对总线的控制,除了在数据传输开始和结束时,整个过程无须CPU的干预。降低了CPU在数据传送时的开销。
DMA与CPU使用主存的方式:(1)CPU停止访问主存 (2)CPU与DMA交替访问主存 (3)周期挪用。
DMA的优先级为什么比CPU高?–因为DMA请求得不到及时响应,I/O传输数据可能会丢失
I/O子系统的层次结构
(1)用户层I/O软件:实现与用户的交互,提供与I/O操作有关的库函数,
(2)设备独立性软件:将逻辑设备名映射为物理设备名,设备的分配与回收
(3)设备驱动程序:I/O进程与设备控制器之间的通信程序。
(4)中断处理程序:保护中断进程的CPU环境,转入相应的中断处理服务,恢复中断现场,返回中断继续执行。
(5)硬件设备
什么是设备独立性(无关性)?
即在应用程序中,使用逻辑设备名,来请求某类设备。系统实际运行时,将逻辑设备名映射成物理设备名使用。
设备驱动程序属于操作系统吗?它的任务是什么?
不属于操作系统,设备驱动程序,I/O进程与设备控制器之间的通信程序。
什么是缓冲区?–单缓冲,双缓冲,循环缓冲,缓冲池
缓冲区实际上就是一块内存,缓冲区的引入是为了缓和高速设备与低速设备的速度矛盾,提高设备与cpu的并行度,降低cpu的中断频率。缓冲区可以实现预读和滞后写。
为什么说缓冲是用“空间换时间?”举例说明Cachce的作用。
(1)缓冲要开辟一个缓冲区,用于连接高速设备与低速设备,用于缓解速度不匹配的矛盾。有了缓冲区,高速设备就不用停下来–等低速设备处理完成,而是通过缓冲区,把数据先放到缓冲区中让低速设备慢慢消化。这样就节约了时间。
(2)DISK Cachce可以减少磁盘读写次数,把频繁使用的数据放入其中。同时可以缓解磁盘与内存速度不匹配的矛盾。
谈一谈缓存的与外存的区别
答:缓存的存取速度快,但容量小,价格贵;
外存的存取速度慢,但容量大,价格便宜。
CPU—多级缓存
典型的CPU有三级缓存,离核心越近,速度越快,空间越小。L1一般32k,L2一般256k,L3一般12M。内存速度需要200个CPU周期,CPU缓存需要1个CPU周期。
本地缓存:在Java中使用本地缓存最简单的方式就是使HashMap或者ConcurrentHashMap,对于只读场景,两者都可以使用,对于缓存更新的场景,可以使用ConcurrentHashMap来保证数据的一致性。
什么是spooling技术? (独占设备–共享设备)—假脱机技术
Spooling技术是低速输入输出设备与主机交换信息的一种技术,使联机的方式得到脱机的效果。Spooling由输入/输出井(模拟联机I/O时的磁盘),输入/输出缓冲区,输入/输出进程组成。
spooling技术的特点是能提高I/O的速度,将独占设备变为共享设备。
eg:打印机是使用spooling技术的一个例子。当用户进程请求打印时,spooling系统同意为它打印的请求,但不是立刻把打印机分配给用户进程。而是
(1)先为该进程申请一个空闲磁盘块,将要打印的数据送入其中。
(2)为该进程申请一张请求打印表,将打印要求填入其中,再将该表挂到打印队列上。
什么是多核?
答:多核指在一枚处理器中集成多个完整的计算引擎(内核)。
linux和windows的区别?
答:(1)文件格式不同。windows操作系统内核是NT,而linux是shell;
(2)硬盘文件格式不同。windows硬盘文件格式是fat32,而linux硬盘文件格式是ext2或ext3,linux操作系统还多了一个SWAP格式的交换分区。
根据Flynn(弗林)分类法,可以将计算机系统分为哪几类?
答:四类。
单指令流单数据流机器(SISD)
单指令流多数据流机器(SIMD)
多指令流单数据流机器(MISD)
多指令流多数据流机器(MIMD)
计算机网络和分布式计算机系统的相同点与不同点?
(1)两者在计算机硬件连接、系统拓朴结构和通信控制等方面基本是一样的。
(1)分布式计算机系统:各互联的计算机可以互相协调工作,共同完成一项任务,在多台计算机上并行的运行。
(2)计算机网络系统中各计算机通常是各自独立进行工作的。
hadoop是什么?
(1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专门为大规模数据分析而设计的。(2)Hadoop就是一个分布式计算的解决方案。
(3)分布式计算的核心就是利用分布式算法,把运行在单台机器上的程序扩展到多台机器上并行运行,从而使数据处理能力成倍增加。Haddop就是为了解决这个问题诞生的。
请问对分布式的了解?
所谓分布式就是指数据和程序可以不放在同一个服务器上,而是分散到多个服务器。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统,会导致中心主机资源紧张的问题。
听说过比特币,区块链吗?------区块链的概念?
(1)比特币是“中本聪”提出的区块链技术的第一个应用。
(2)区块链是一种按照时间顺序,将数据块按顺序相连的方式组合成一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链技术的特点是,能保证链上的数据的可信性,即不可伪造性。
绿色计算(green computing)的重要性是什么?
绿色计算(green computing)是指本着对环境负责的原则使用计算机及相关资源。绿色计算包括:(1)采用高效节能的中央处理器(CPU)、服务器和外围设备、(2)妥善处理电子垃圾(e-waste)。
什么是前台作业,什么是后台作业?有什么区别?
在批处理兼分时的系统中,把分时系统控制的作业称“前台”作业,而批处理系统控制的作业称“后台”作业。前台作业优先权高,先处理前台作业。
计算机网络
如何构建计算机网络 ?–硬件、软件、协议
答:硬件:主机、通信处理机、通信线路、交换设备;
软件:各种能实现资源共享的软件,以及方便用户使用的工具软件;
协议:规定了网络传输数据时的规则。
怎样建立一个网站?(程序、域名、空间)
1.确定网站类型,开发网站程序,------程序
2.申请一个域名。-----域名
3.购买服务主机,用来放置网站程序。----空间
接入网络的两种类型?–宽带接入、拨号接入
计算机网络的分类?–局域网、广域网、个人区域网
网络按传输技术分类?–广播式网络、点对点式网络
(1)广播式网络:所有联网计算机都共享一个公共的通信信道。–eg:局域网
(2)点对点网络:每条物理线路连接一对计算机。--------------------eg:广域网
点对点和端到端工作在哪层?工作机制?
(1)点对点协议工作在链路层,用于两个直接相连结点的链路上。
(2)端到端协议工作在运输层,主要是用TCP传输协议。
网络按交换技术分类?–电路、报文、分组交换
(1)电路交换:发送数据前,在发送方与接收方之间建立一条专用的数据通路用于传输数据。
(2)报文交换:用户数据加上原地址、目的地址,校验码等信息后,封装成报文。将整个报文传送到相邻结点,全部缓存下来后,再转发给下一个结点。重复这个过程,直到数据传输到目的主机。
(3)分组交换:将数据分成较短且固定长度的数据块。在每个块中加上源地址、目的地址等信息后,以存储–转发的方式传输。
数据报是什么?
IP数据报(IP Datagram)。由首部和数据两部分组成。首部的前一部分是固定长度,共20字节。在固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。
存储转机制是什么?
答:存储转发(Store and Forward):以太网交换机的控制器先将输入端口到来的数据包缓存起来,先检查数据包的完整性和正确性。确定包正确后,取出目的地址,通过查找表找到输出端口地址,然后将数据包转发出去。
虚电路交换:
发送数据前,在发送方和接收方建立一条逻辑上相连的虚电路。与电路交换类似,整个通信过程分为。虚电路建立、数据传输、虚电路释放。
在虚电路网络中,每个结点都维持一张虚电路表。
带宽:网络通信线路所能传送数据的能力,是信道能达到的最高数据率。
计算机网络体系结构(分层)------计算机网络体系结构采用分层方式,
(优)各层之间相对独立,灵活性好,易于实现和维护。(ISO标准将网络分为7层),(TCP/IP标准将网络分为4层)。在分层体系中,第n层使用其下各层服务的总和,并向n+1层提供服务,最高层面向用户,最低层只提供服务。上层只能通过相邻层之间的接口使用下一层的服务。
协议的三个特征及含义?
(1)语法:规定数据传输格式、编码及信号电平;
(2)语义:规定了要完成的功能;
(3)同步:规定各种操作的时序关系。
网络有几层架构?
答:五层结构:物链网输用
七层结构:物链网输会示用
TCP/IP体系结构:接际输用( 网络接口层、网际层、运输层、应用层)
ISO和TCP/IP各层是什么?
答:ISO/OSI参考模型 TCP/IP协议模型 所对应PDU(协议数据单元)
应用层 ……………应用层 …………数据 用户与网络界面
表示层 ……………应用层 …………数据 数据压缩,加密,解密
会话层 ……………应用层 …………数据 建立管理会话
传输层 ……………传输层 …………段 … 传输管理,差错控制
网络层…………… 网际层 …… 包 差错控制,网际互联,流量控制
数据链路层 ………网络接口层 ……帧 成帧,差错控制,流量控制
物理层 ……………网络接口层 ……比特流 透明传输比特流
OSI和TCP/IP的相同点与不同点?
相同点:(1)都采取分层的体系结构
(2)都可以解决异构网络互联的问题
(3)都是下层为上层提供服务。
不同点:(1)OSI模型精确定义了服务,协议,接口这三个概念。TCP/IP则没有明确区分。
(2)OSI出现在协议发明之前,TCP/IP出现在协议之后。
(3)TCP/IP在设计之初就考虑到了异构网络互联的问题,并且将网际IP层作为一个单独重要的分层。
(4)OSI在网络层支持无连接和面向连接,传输层支持面向连接;
TCP/IP协议网络层支持无连接,传输层支持面向连接和无连接
目前用的最多的是7层和5层网络模型,说说他俩之间的区别?
答:五层网络模型:(物链网输用)
第五层 应用层 (Application Layer)
第四层 传输层 (Transport Layer)
第三层 网络层 (Internet Layer)
第二层 数据链路层
第一层 物理层 (Phsical Layer)
数据链路层协议分类
(1)面向字符的链路层协议:----PPP协议
(2)面向比特的链路层协议:—HDLC协议(High-level Data Link Control)
网络层有哪些协议?(设备:路由器) TCP/IP协议属于哪 层? 网络层
答:网络层有IP协议,地址解析协议ARP(IP-》MAC)、逆地址解析协议RARP、报文协议ICMP(差错报告报文、询问报文)、组管理协议IGMP
传输层各用了什么协议?,举个udp的列子
传输层有用户数据报协议UDP(User Datagram Protocol)和传输控制协议TCP(Tranmission Control Protocal)。
udp面向无连接不可靠传输,传输速率快,效率高,实时性好。tcp是面向连接的,能实现可靠传输。
举例:UDP由于实时性好,可用在直播转播。
应用层有哪些协议?
答:应用层有FTP(文件传送协议) DNS(域名解析协议)
SMTP(邮件传输协议)HTTP(超文本传输协议)
DHCP:基于UDP,给主机动态分配IP地址。
信号和码元?
信号:数据在传输过程中的表现形式;
码元:用一个固定时长的信号波形,表示一个k进制数据。而这个时长被称为码元长度。
信源、信道、信宿?
信源:产生和发送数据的源头;信道:传输数据的媒介;信宿:接受信号的终点。
什么是网络时延?
时延(delay)是指一个报文或分组从链路的一端传送到另一端所需的时间。
网络时延又分哪几部分组成?各产生于何处?
网络时延主要由传输时延和传播时延组成。
(1)传输时延:将数据包放到链路上所需要的时间;
(2)传播时延:数据包在链路上传输所需要的时间。
几种常见的编码?-非归零码、反向非归零码、曼彻斯特、差分曼彻斯特编码。
波特和比特的区别?
(1)波特是码元传输速率的单位,说明每秒传输多少个码元。
(2)比特是信息量的单位。
(3)但,信息的传输速率“比特/秒”与码元的传输速率“波特”在数量上却有一定的关系
奈奎斯特定理:在无噪声干扰的信道中,极限码元传输速率为2W波特。若用V表示离散电平数,则极限数据传输率=2WLogV比特每秒。
对于奈氏准则,结论:
(1)任何信道中,码元的传输速率是有上限的;
(2)信道频带越宽,码元的传输速率就会越高。
(3)奈氏准则只给出码元传输速率的限制,但没有对信息传输速率给出限制。
香农定理:
给出了在带宽受限,且有噪声干扰的信道,极限数据传输率=WLog(1+S/N)比特每秒。S/N为信噪比。
对于香农定理,结论:
(1)信道的带宽越大,或信噪比越大,则信息传输速率就越高。
(2)只要信息的传输速率,低于信道的极限数据传输率,就一定能找到某种方法,来实现无差错的传输。
数字数据调制为模拟信号?
(1)调频 (2)调幅 (3)调相 (4)调幅+调相
什么是模拟信号、数字信号?
答:数字信号指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示。
模拟信号是指在给定范围内表现为连续的信号。
模拟数据编码为数字信号?–采样、量化、编码
(1)采样:采样信号≥2*模拟信号最高频率时,所得的离散信号可无失真的代表被采样的模拟信号。
(2)量化:将采样得到的离散信号,按一定的分级标准,转化为离散的数字量。
(3)编码:将量化的数字量,转化为二进制编码。
双绞线的规格?
答:1、双绞线按其是否外加金属网屏蔽层分:屏蔽双绞线和非屏蔽双绞线。
2、按电气特性分为3类、4类、5类、超5类、6类、7类线。5类线的最大速度为100M,5类线上标有CAT5字样,而超5类线上标有5e字样。
同轴电缆的规格?-------内导体、绝缘层、网状编织屏蔽层、塑料外壳。
按特性阻抗值的不同分为50欧和75欧同轴电缆,50欧用于传输基带信号,75欧用于传输宽带信号。
光纤:损耗小,中继距离长------单模光纤、多模光纤
物理层接口的特性----机械特性,电气特性,功能特性,规程特性
数据链路层封装成帧的方法?
(1)字符计数法:帧头使用一个计数字段,来标明帧内字符数。
(2)字符填充法:使用一些特定字段来定界一个帧的开始(DLE STX)与结束(DLE ETX)。
(3)零比特填充法5110:发送方在遇到5个连续的1,则自动在其后插入一个0;接受方收到5个连续的1,则自动删除其后的0。
(4)违规编码法:借用一些违规编码序列,来定界帧的开始与结束。
数据链路层差错控制:奇偶校验码、循环冗余码–(这两检错)、海明码(能纠错)。
数据链路层流量控制与可靠传输?–停等,GBN,SR
(1)停止等待协议
答:发送方每发送一帧,都要等待接收方的应答信号,之后才允许发送下一帧。所以传输效率很低。
(2)后退N帧协议 GBN
答:发送方可连续发送帧,接收方只允许按顺序接收帧,当发送方发现某一帧在计时器超时后还未返回其确认信息,则该帧被判为出错或丢失。此时发送方就重传该帧及之后的所有帧。
后退N帧协议中,若采用n比特对帧编号:接受方窗口=1;1《=发送方窗口《=2^-1
(3)选择重传协议 SR
答:选择重传协议:只重传出现差错,或者是超时的数据帧。接收方要设置缓冲区,暂存那些未按序正确接收到的帧,等到收到所有缺序的数据帧后再一并交付给上一层。
选择重传协议的差错处理策略:一旦怀疑帧出错,就会发一个NAK否定帧,要求重传NAK中制定的帧。
网络中的复用技术?现在比较流行的网络介质控制方式有哪些?
使用什么技术实现多路信号同一信道进行传播?—复用技术
答:复用技术是指一种信道划分的技术。多路复用技术把多个信号组合在一条物理信道上进行传输,提高了信道利用率。
介质访问控制可分为:静态划分信道,动态划分信道;
静态划分信道:频分多路复用(FDM)、时分多路复用(TDM)
波分多路复用(WDM)、码分多路复用(CDM)
动态划分信道:轮询访问介质控制:令牌传递协议
随机访问介质控制(ALOHA,CSMA,CSMA/CD,CSMA/CA)
多路分解:将传输层报文段中的数据,交付到正确的套接字的过程称为多路分解。
以太网的监听算法(当网络发生冲突时,有几种监听算法)?-------CSMA
答:有3种。分别是1坚持,非坚持,p坚持
1坚持:发送数据前,先监听,空闲则立刻发送,忙则等待,同时继续监听,直到信道空闲为止,发生冲突,则随机等待一段时间后,再重新监听。
非坚持:发送数据前,先监听,空闲则立刻发送,忙则放弃监听,随机等待一段时间后,重复这个过程。
p坚持:发送数据前,先监听,空闲则以p的概率发送数据,以1-p的概率推辞到下一时隙发送。忙则等到下一时隙再监听。
CSMA/CD (carry sence multiple access collision)载波监听多路访问/碰撞检测
载波监听:信道空闲则立即发送数据并进行冲突检测,忙则继续监听,直到信道空闲。
碰撞检测:适配器边发送数据边检查信道上的电压变化情况,以判断是否还有其他站点在发送数据。如果检查到冲突,则停止发送帧。并用二进制指数规避算法来等待一段时间后重新监听。
CSMA/CA 载波监听多路访问/碰撞避免----局域网
碰撞避免,并不是指该协议可以完全避免碰撞,而是指尽量减少碰撞发生的概率。碰撞避免的机制包括;
(1)预约信道:发送方发送数据的同时通知其他站点自己传输数据所需的时间。
(2)ACK帧:只有发送方收到返回的ACK帧才确认数据已经正确到达接收端。
(3)RTS/CTS帧:主要解决无线网络中的“屏蔽站”问题。
在CSMA/CD(CSMA/CA)协议中,一旦检测到冲突,为降低再冲突的概率,需要等待一个随机时间,然后再使用CSMA方法试图传输,请问此时采用什么算法?
二进制指数规避算法。(解决CD或CA冲突的算法都是二进制指数规避算法)
简述二进制指数退避算法?
答:在遇到重复的冲突时。二进制指数退避算法提供了一个处理重负荷的方法。
(1)确定基本退避时间t(一般取争用期)
(2)定义参数k为重传次数和10之间取较小值;重传次数小于10次时,k的值为重传次数,重传次数大于10次,则k一直取10;
(3)从离散集合[0,1…,2^k -1]中随机取出一个数a,重传需要退避的时间为a倍t,即a倍的争用期;
(4)当重传次数达到16次还不能成功时,抛弃此帧并向上层报告出错。
局域网如何实现?
局域网是在一个局部的地理范围内(如一个学校内),将各种计算机,外部设备和数据库等互相联接起来组成的计算机通信网络。它可以与其他的局域网、数据库相连接,构成一个更大范围的信息处理系统。
(1)局域网:逻辑拓扑为总线型,物理拓扑为星型;
(2)传输介质:双绞线/光芯;
(3)介质访问控制:CSMA/CD,令牌传递协议;
**无线网络和协议?**IEEE802.11
无线网络:wifi、蓝牙、卫星通信
无线局域网协议:IEEE 802.11标准。其中IEEE 802.11协议、蓝牙标准等是无线局域网,所有标准中最主要的协议。
谈一谈Wlan—IEEE802.11
WLAN,(wireless local area network)无线局域网,指应用无线通信技术将计算机设备互联起来,构成可以互相通信和实现资源共享的网络体系。
局域网与广域网的区别?
答:局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个学校内),将各种计算机,数据库等互相联接起来组成的计算机通信网。局域网可以与其他的局域网、数据库相连接,构成一个较大范围的信息处理系统。
广域网(Wide Area Network,WAN),是一种跨度较大的计算机网络的集合。广域网包括大大小小不同的子网,广域网(WAN),就是所说的Internet,它是一个遍及全世界的网络。
局域网覆盖范围较小, 广域网覆盖范围较大
广播通信 点对点通信
OSI的物、链 OSI的物、链、网
资源共享 数据传输
广域网使用的链路层协议:PPP协议、HDLC协议(零比特填充法)
IEEE802.3LAN,传输距离上可以加中继器,是否能够无限延伸?
答:不能,因为数据包有关。802.3是以太网协议,以太网协议规定数据包的长度最小为64字节最大为1500字节(1518字节)。
VLAN是什么?
答:VLAN(Virtual Local Area Network)“虚拟局域网”。
在计算机网络中,一个二层的网络可以被划分为多个不同的广播域,一个广播域对应一个特定的分组,不同的广播域之间要想通信,需要通过一个或多个路由器,这样的广播域称为虚拟局域网。
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户不受物理位置的限制,可以根据特定的因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样。
VLAN的优点:网络设备的移动、添加和修改的管理开销小;可以控制广播风暴,提高网络的安全性。
VLAN传输数据包时什么时候加标签,什么时候去标签?
答:交换机端口收到计算机发的无标签数据报时,就打上本端口的虚拟局域网ID号;如果收到有标签的数据包,则直接丢弃。
PPP协议---------点对点通信协议
该协议应用在两个直接相连结点的链路上。通过拨号或专线方式建立点对点连接,发送数据。
PPP协议由链路控制协议、网络控制协议、和一个将数据包封装到串行链路的方法组成。
PPP协议(1)提供差错检测,但不提供纠错功能;(2)只提供全双工通信;
(3)PPP协议两端可以运行不同的网络层协议。
什么是PPOE?(point to point protocol over Ethernet)
基于以太网的点对点通讯协议,是将点对点协议封装在以太网框架中的一种网络隧道协议。
在这种网络模型中,所有用户的主机都需要能独立的初始化自己的PPP协议。为了能在广播式的网络上建立、维持各主机与访问集中器之间的点对点关系,就需要每个主机与访问集中器之间建立唯一的点到点的会话。
网络的拓扑结构?
网络拓扑结构是指用传输媒介互连各种设备的物理布局,即用什么方式把网络中的计算机等设备连接起来。网络的拓扑结构主要有:(1)星型结构、(2)环型结构、(3)总线结构、(4)网状结构、(5)树型结构等。
星型结构:以中央节点为中心,其他节点都与中央节点直接相连。
环型结构在LAN中使用较多。(lan–逻总、物星)
**什么是路由器?**什么是下一跳地址? 路由器里面下一跳地址怎么构成?
(1)路由器(Router)属于网络层设备,是连接各局域网、各广域网或连接局域网与广域网的设备,路由器会根据信道的情况自动选择路由,以最佳路径,转发数据。
(2)路由器有路由表,下一跳地址即链路上与之相连的下一个路由器的地址,或具有路由功能的设备的IP地址。即下一次要把数据包转发给哪个路由器。
(3)路由器由ROM、RAM、NVRAM、FLASH组成。
ROM:只读存储器。保存着最基本功能的代码,用于引导路由器。
RAM:随机访问存储器。
NVRAM:非易失性随机访问存储器。当切断电源时,NVRAM用一个电池来维护其中的数据。
FLASH:闪存。FLASH中容纳了IOS软件的镜像。
网关(Gateway):是一个网络连接到另一个网络的“关口”。实质上是一个网络通向其他网络的IP地址。默认网关,是默认值,如果主机找不到可用网关,就把数据包转发给默认网关,由这个网关来处理数据包。
网关系统的原理作用什么的?
答:网关也被称为IP路由器。要实现两个网络之间的通信,必须通过网关。
原理:如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给自己的网关,再由网关转发给网络B的网关,网络B的网关再把数据包转发给网络B中的目的主机。
网关的两种工作模式?
答:路由模式(直通模式):不转换数据包的源IP地址。
NAT模式:网络地址转换”,是一种把内部私有IP地址经NAT转换成合法的公有IP地址的技术。
在网络层中,路由器怎么工作的,有哪些算法和协议?
答:当源主机向目标主机发送数据报时,路由器先检查源主机与目标主机是否在同一个网络上,如果在同一个网络上,则直接交付而无需通过路由器,若不在同一个网络上,路由器则按照路由转发表将数据转发给下一个路由。
跨网络的通信必须经过路由器。例如连接不同的局域网,不同的虚拟局域网,不同的广域网,或是把局域网与广域网连接起来。都要经过路由器。
谈谈路由协议,路由器间有哪几种协议,具体是怎么个流程------下一问
1、 RIP协议-路由信息协议 (距离向量路由协议)
2、 OSPF协议-开放最短路径优先协议 (链路状态路由协议)
3、 BGP协议-边界网关协议----在自治系统之间使用BGP协议。对设备要求较高,占用资源较大。
RIP,OSPF协议的作用?、路由算法?
(1)路由信息协议rip。采用距离向量路由选择算法。它选择路由的度量标准(metric)是跳数。指从源端口到目的端口所经过的路由器个数。每经过一个路由器跳数加1。实质是迭代计算跳数最小的路由通路。最大跳数是15跳,如果大于15跳,它就会丢弃数据包。
优点:对资源消耗较低,配置简单。缺点:链路收敛慢,只适用于小型网络。
(2)开放最短路径优先协议OSPF。采用链路状态路由选择算法。相当于一种导航软件,OSPF不但能知道走哪条路代价最小,还知道这条路径的拥塞情况,综合考虑两方面,决定数据包往哪些路由器转发。
优点:链路收敛快,不会出现像rip那样,坏消息传得慢的问题。
RIP与OSPF的区别
答:(1)OSPF使用洪泛法向本自治系统内的所有路由器发送信息,而RIP仅仅向与自己相邻的路由器发送信息。
(2)OSPF发送的信息是与本路由器相邻的所有链路状态的信息。
(3)OSPF当链路状态发生改变时,才用洪泛法向所有路由发送消息。不会出现RIP协议,坏消息传的慢的问题。
(4)OSPF是网络层协议,直接使用IP数据报传送。而RIP是应用层协议,在传输层使用UDP协议。
冲突域 广播域
网:路由器 √ √
链:桥、交 √ X
物:集、中 X X
集线器、交换机、路由器各工作在哪一层?有什么区别?
(1)集:物,用于信号的放大和连接多个终端设备。它没有智能处理能力,只负责透明的传输比特流。
(2)交:链,有多个冲突域和广播域,有多个端口用于连接各个主机。比集线器智能一些,它能分辨出帧中的源MAC地址和目的MAC地址,使用物理地址转发数据----转发速度较快。
(3)路:网,能隔离广播风暴,网络安全性好。比交换机更“聪明”一些,能理解数据包的IP地址,收到一个数据包,就检查其IP地址,如果目标地址是本地网络就不理会,如果是其他网络的,就通过路由转发表,将数据包转发出去。路由器,用IP地址转发数据----转发速度较慢。
中继器,集线器,网桥,交换机,网关(IP路由器),路由器功能,区别?
(1)中:物,通过对信号的重新发送或者转发,来扩大网络传输的距离。
(2)集:物,集线器在转发之前将弱信号重新生成。并且它把一个端口接收的信号,向所有端口分发出去。
(3)并且中与集的区别:集线器是多端口的中继器。
数据链路层设备?—网桥、交换机
网桥:能把多个以太网,通过网桥连接起来,变为一个网段。
(1)能过滤信号量;(2)扩大物理范围;(3)可互联不同类型的局域网。
交换机:以太网交换机是多端口的网桥;
交换机配置模式有哪几种,分别是什么?配置交换机时,他们的先后顺序?
答:用户、特权、特殊、全局、接口配置模式。
交换机的三层模型?分别是什么(物、链、网),分别的作用?
答:三层交换机是为了区别传统二层交换机的。传统交换机运行在数据链路层,所以叫二层交换机。三层交换机表示它拥有OSI第三层网络层的部分功能(路由功能),也就是把二层的交换和三层的路由整合到一台设备。
交换机的三层是指:物、链、网
(1)物理层:透明传输比特流;
(2)数据链路层:成帧、差错控制、流量控制
(3)网络层:将数据组装成包、差错控制、流量控制、路由与转发。
交换机的桥接(接入)模式和中继模式的区别?
桥接(Bridging),指依据OSI模型的链路层地址,对数据包进行转发的过程,工作在OSI模型的第二层。
中继(Relay)是两个交换之间的一条传输通路。可扩展无线网的覆盖范围,消除所有盲点。
交换机存储转发,直接转发,无碎片转发,三者之间的区别------几种交换模式
(1)直接转发:指交换机在获得目的地址后立刻转发数据包。这种方法的优点是转发速度快,但不判断转发包的完整性,会导致一些包碎片在网络上传输;
(2)存储转发:指交换机先把数据包缓存下来,判断数据包的完整性和正确性后。查找数据包的转发地址,然后将数据包转发出去。优点是能够确定数据包的完整性和正确性。但由于数据包是先接收后发送的,交换速度相对较慢;
(3)无片段直接转发:指交换机在获取数据包后转发数据包的前64个字节。小于64字节的数据包被视为片段,不被转发。这样既避免了存储转发时速度慢的问题,又避免了直接转发时的碎片问题。
交换机和交换机怎么连接?
平行线序,从上一台交换机的一个网口接出来,接到下一台交换机UPLINK口。
总线布局的以太网和利用交换机的以太网工作原理有什么不同?
(1)总线拓扑结构是将网络中的各个节点用一根总线挂接起来,实现计算机网络的功能。任何连接在总线上的计算机都能在总线上发信号,并且所有计算机都能接收信号。
(2)以太网交换机的结构是每个端口都直接与主机相连,并且一般都是全双工通信方式。交换机能同时连通许多对端口,使每一对相互通信的主机都能像独占通信那样,进行无冲突地传输数据。
广播风暴是什么 什么情况下发生。
答:由于网络故障或其他原因,导致广播数据帧在网段中被大量复制并传播,这就是广播风暴
原因(1)网卡损坏:损坏的网卡,不停向交换机发送大量无用的数据包,产生了广播风暴。
(2)网络环路:由于一条物理线路的两端,同时接在一台网络设备中。
(3)网络病毒:有一些病毒,一旦有机器中毒后,会立即通过网络进行传播。网络病毒的传播,就会损耗大量的网络带宽,引起网络堵塞,造成广播风暴。
IPV4与IPV6的区别?
(1)IPv4占32位,IPv6占128位;
(2)IPv4的首部为4B的整数倍,IPv6的首部为8B的整数倍;
(3)IPv6简化了分组首部,删除了校验和字段;
(4)IPv6有更好的支持选项;
(5)IPv6只有在包的源结点才能分片,IPv4可在路由器/主机处分片;
IPV6转IPV4的方法?
(1)双协议栈技术
(2)隧道技术
IPv6的路由技术。IPv6路由查找与IPv4的原理一样,也是最长匹配原则,选择最优路由时,允许地址过滤,聚合,注射操作。
数据的分片与重组发生什么时候—大于其要转发网络,MTU的数据报时–分片
IP地址的分类?每类的主机数是多少?
答:IP地址分5类,常见的地址是A、B、C类
A类(网络号8位) 最大主机数2^24 -2个
1.0.0.1到127.255.255.254
B类(网络号16位) 最大主机数2^16 -2个
128.0.0.1到191.255.255.254
C(网络号24位) 最大主机数2^8 -2个
192.0.0.1到223.255.255.254
D类:224.0.0.0到239.255.255.255用于多播地址
E类:240.0.0.0到255.255.255.254保留以后所以
给出子网掩码,计算每个子网的主机数
子网掩码中网络号全为1,主机号全为0,根据0的位数n,就可求出每个子网的最大主机数2^n-2;
255.255.255.0表示什么? —表示C类的子网掩码
知道子网掩码如何确定网络号?
子网掩码和IP地址逐位与运算就能得到网络号。
解释Mac地址,ip地址,端口?
(1)MAC(Media Access Control)媒体访问控制,或物理地址:物理地址用来标识网络中唯一的一块网卡。在OSI模型中,第二层–数据链路层负责MAC地址,每一个主机都有一个MAC地址。
(2)IP地址:(Internet Protocol Address)互联网协议地址。IP地址是IP协议提供的一种统一的地址格式,IP协议为互联网上的每一个网络和每一台主机分配一个逻辑地址。在OSI模型中,第三层–网络层负责IP地址。每个网络位置都有唯一的IP地址。
(3)“端口”(port):设备与外界通讯的出口。网络端口(集线器、交换机、路由器—连接网络的接口),计算机中唯一标识一个进程的也叫端口。
什么是ARP?
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址(MAC)的一个TCP/IP协议。
在ARP协议中请求分组是广播,响应分组是单播。
DHCP动态主机配置协议?
主机可从服务器动态获取IP地址,DHCP是应用层协议,基于UDP。DHCP服务器给主机动态分配IP地址的过程为:
(1)客户机广播,DHCP发现消息;
(2)DHCP服务器收到消息后,向网络中广播DHCP提供信息。
(3)客户机收到消息后,广播DHCP请求消息;
(4)DHCP服务器收到消息后,广播DHCP确认消息,并将IP地址分配给客户机。
ICMP协议的种类有:差错报告报文、询问报文。
(1)差错报告报文类型有:终点不可达,源点抑制,时间超过,路由重定向。
(2)询问报文类型:PING,时间戳,路由询问报文。
PING用的是什么协议? ICMP-----(Internet Control Message Protocol)
PING使用的是ICMP报文协议中的询问报文,是TCP/IP协议的一个子协议,用于在IP主机、路由器之间传递控制消息。
Tracert原理?
Tracert的原理是利用ICMP报文和IP首部的TTL字段。TTL字段是防止数据报在网络中不停的流动。
NAT是什么?
(1)网络地址转换(Network Address Translation)属于接入广域网(WAN)技术,是一种将私有地址转化为公有地址的转换技术。
(2)因为,在因特网的所有路由器,对目的地址为私有地址的数据一律不进行转发,所以要采用NAT技术将私有地址转化为公有地址。
(2)转换过程需要NAT转换表实现(本地IP地址:端口)到(全球IP地址:端口)的映射。这种映射方式,就可让多个私有IP地址映射到同一个全球IP地址。
NAT作用?--------减缓IP地址耗尽的速度。
NAT的几种模式?分别是什么?
(1)静态NAT(1–》1):服务器地址必须采用静态转换,以便外部用户可以方便使用这些服务。
(2)动态NAT(1–》n):可以让多个本地地址,共用一个全球地址。
(3)重载NAT(1–》n):通过端口来识别不同的内部私有地址,可以使多个私有地址,同时使用一个公有地址。
TCP和UDP的区别?什么是面向连接,面向无连接。
(1)TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。
(2)UDP(User Data Protocol,用户数据报协议)。是面向无连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
区别:
(1)TCP:面向连接、能保证可靠传输、用于传输大量数据。但建立连接需要较多时间和系统资源开销。TCP用于可靠性要求较高的场合如:SMTP,FTP,HTTP。
UDP:面向无连接、不可靠传输。用于传输少量数据、传输速度快,效率高。实时性。UDP用于实时性较强的场合如:视频聊天,语音电话等。
(2)UDP分组首部开销小,UDP仅有8B的分组首部;而TCP有20B的分组首部。
面向连接:是指通信双方在通信时,要事先建立一条通信线路。连接建立的三个过程:建立连接、使用连接和释放连接。
面向无连接,是指通信双方在通信时,不需要先建立好一个连接。资源在数据传输时动态地进行分配。优点是灵活性好、实时性好。但无连接服务是一种不可靠的服务。即“尽量大努力支付”。
TCP可靠传输机制?
(1)校验:与UDP一样,增加伪首部;
(2)序号:为数据中的每一个字节都编上一个序号,序号的值是本报文段所发送数据的第一个字节的序号。
(3)确认:确认号是指对已收到数据,最后一个字节的序号+1,TCP采用累积确认,确认号表示该序号之前的所有数据都已正常接收。
(4)重传:超时或冗余ACK帧。
超时:若超时就重传这个数据段;
冗余ACK:当连续收到三个冗余ACK时,就重传该报文。
TCP连接的三次握手协议
所谓的“三次握手”是对每次发送的数据量进行跟踪和协商,使数据段的发送和接收同步。
第一次握手:客户端发送数据段x到服务器,此时同步位SYN=1。(请求)
第二次握手:服务器确认数据段x+1(希望下次收到数据段x+1),并向客户端发送数据段y。此时同步位SYN=1,确认位ACK=1;(确认,请求)
第三次握手:客户端确认数据段y+1,并向服务器发送数据段x+1,此时确认位ACK=1。(确认)
TCP释放的四次握手协议
第一次握手:客户端发送数据段u到服务器,此时结束位为FIN=1;(结束)
第二次握手:服务器端确认数据段u+1,并向客服端发送数据段v,此时的确认位ACK=1;(确认)
第三次握手:服务器端确认数据段u+1,并向客服端发送数据段v+i,此时的确认位ACK=1,结束位FIN=1。 (确认结束)
第四次握手:客户端确认数据段v+i+1,并向服务器发送数据段u+1,此时的确认位ACK=1;
TCP怎么控制拥塞?(慢开始与拥塞避免、快重传和快恢复算法)
(1)慢开始与拥塞避免算法
开始时,拥塞窗口置为1,并设置门限值,每经过一个RTT,拥塞窗口值加倍。当拥塞窗口增长到门限值时,改用拥塞避免算法,每经过一个RTT,拥塞窗口加1。当网络发生拥塞,就将新门限值更新为发生拥塞时的一半,拥塞窗口重置为1,并重新执行慢开始算法。
(2)快重传和快恢复算法
快重传和快恢复算法在发生拥塞前和慢开始拥塞避免算法一样,只是当发生拥塞时,拥塞窗口不是立即重置为1,而是把拥塞窗口变为发生拥塞时窗口值的一半,之后按拥塞避免算法加法增大。
TCP拥塞控制与流量控制的区别?
(1)拥:指防止过多的数据注入到网络中,这样可以避免网络中的路由器或链路过载。
(2)流量控制:通过动态控制发送端发送窗口的大小,实现端到端的流量控制
计算机怎样访问网址?(DNS域名解析)域名—》IP
答:先查询到域名的IP地址,计算机根据IP地址去访问网址。
域名解析---------递归查询、递归和迭代查询相结合
(1)递归查询:先查询本地域名服务器,若查询失败,本地域名服务器将递归的查询根域名服务器,若查询失败,根域名服务器递归的查询顶级域名服务器,若查询失败,顶级域名服务器递归查询权限域名服务器。查询成功则依次返回去。
(2)递归和迭代查询相结合:主机先查询本地域名服务器,若失败,本地域名服务器查询根域名服务器,若失败,本地域名服务器查询顶级域名服务器,若失败,本地域名服务器查询权限域名服务器。查询成功则将IP地址返回给本地域名服务器,本地域名服务器再将IP返回给主机。
DNS递归和迭代区别是什么? eg(老师问问题)
递归:各域名服务器之间单线信息交互;1-》2-》3-4
迭代:本地域名服务器和相关服务器都有信息交互;1-》2,1-》3,1-》4
B/S和C/S的区别?
(1)C/S:又称Client/Server或客户/服务器模式。它把客户端与服务器区分开来。在C/S结构中客户端需要安装专门的软件。每一个客户端软件的实例都可以向服务器发出请求。C/S结构能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。优点是客户端响应速度快。
(2)B/S:是Brower/Server的缩写,客户机上只需安装一个浏览器,例如IE浏览器,服务器安装SQL Server等数据库。浏览器通过网络服务与数据库进行交互。B/S结构的优点是可以在不同设备进行操作,而不用在客户机上安装任何专门的软件。
客户服务器模式的例子?(C/S)
eg:(C/S)模式最常见就是目前在因特网上使用的网页。例如,在维基百科阅读文章时,你的电脑和浏览器就被当做一个客户端,组成维基百科的电脑、数据库和应用程序就被当做服务器。当浏览器向维基百科请求一个指定的文章时,维基百科服务器从维基百科的数据库中找出该文章的信息,再发送回本地浏览器。
文件传输协议FTP?
(1)FTP采用C/S工作方式,使用TCP连接。
(2)控制连接:传送请求,采用服务器端口号21,整个会话期间一直保持打开状态。
(3)数据连接:传送数据,采用服务器端口号20,每次数据传输完毕后就关闭。
邮件传输协议?
(1)SMTP(simple mail transfer protocol):采用C/S工作方式,建立在TCP连接上。发送方用用户代理,使用SMTP协议把邮件发送到邮件服务器。
(1)POP3(post office protocol-version 3):采用C/S工作方式,建立在TCP连接上。接收方用户代理,使用pop3协议把邮件从邮件服务器上取下来。
HTML 超文本标记语言—Hypertext Markup Language
HTTP协议?–Hypertext Transfer Protocol
(1)HTTP协议是无状态的;
(2)HTTP协议是无连接的,双方在交换HTTP报文之前不需要先建立HTTP连接。
(3)HTTP既可以使用持久连接,也可使用非持久连接。
持久连接:发送响应后仍保持这条连接
非持久连接:每个对象的发送都需要单独建立一个TCP连接。
ATM网络
ATM是异步传输模式的缩写,ATM采用面向连接(TCP)的传输方式,将数据分割成若干固定长度的信元,通过虚电路方式进行传输。ATM集交换、复用、传输为一体,复用采用的是异步时分复用方式。
P2P网络
(1)P2P(对等网络,是一种有别于传统C/S客户/服务器式的分布式网络)直接将人们联系起来,让人们通过互联网直接交互。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P使网络上的沟通变得容易。
(2)P2P应用程序包括:发现,连接和通信三个阶段。发现阶段:负责动态定位对等节点的网络位置;连接阶段:负责在对等节点之间建立网络连接;而通信阶段:负责在对等节点之间传输数据。
简述C/S与P2P混合结构的特点----网络上每台主机既是服务器又是客户端。
远程桌面怎样登录是什么原理?
答:1.和对方机器建立一个Socket链接(协议估计是tcp/ip这种有状态协议)
2.在本地虚拟一个对方的系统
3.对方系统会在这个socket链接上实时发送系统状态数据
4.收到对方的数据后,本地虚拟的系统通过这个数据还原对方系统操作。
5.在本地操作这个虚拟的操作系统,并发送数据命令到对方机器,
6.对方机器接收指令,通过Hook(底层钩子),等操作系统。
其中应用的技术:
1.SOCKET、2.Hook钩子3.虚拟技术4.传输
oto,btb,btc的各自含义
OtO:(Online To Offline)指将线下的商务与互联网结合,让互联网成为线下交易的平台。
BtB(Business-to-Business)是指企业与企业之间通过专用网络,进行数据的交换,开展交易的商业模式。
BtC(Business-to-Customer)“商对客”就是常说的直接面向消费者销售产品和服务的模式。
用白军和蓝军解释一下没有100%可靠的通信
两军作战,白军在山谷下,蓝军分成两队占领山头。蓝军要发动进攻,一队向二队发送信息准备进攻,二队为了验证信息真伪,发送确认信息要求一队确认,一队再发送确认信息。结果永远不能确认。
说说搜索引擎的原理?
搜索引擎:指的是收集因特网上大量网页,并对网页中关键词进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词时,所有包含该关键词的网页都被搜索出来。然后,按照搜索结果与搜索关键词的匹配程度,进行排列。
游戏引擎中有哪些算法:
在游戏中路径的规划通常属于图论内容,可以采用Dijkstra算法计算最短路径。
TCP/IP网络协议的核心是什么,如何引出“over everything”和“everything over?”
(1)TCP/IP(传输控制协议/网间协议)是一种网络通信协议。它规范了网络上的所有通信设备,尤其是各个主机之间的数据交换格式及传送方式。
(2)everything over IP:即IP为王,网上信息业务宜一律使用IP。
请问WEB 2.0的特点?—Web 2.0强调网络的外部延展性,形成去中心化的型态。
什么是语义网?
简单地说,语义网是一种能理解人类语言的智能网络,它不但能够理解人类的语言,而且还可以使人与电脑之间的交流变得像人与人之间交流一样轻松。
物联网与互联网的概念
物联网(Internet of Things,IOT):从大范围来说,没有互联网就没有物联网。
物联网是指:物与物之间通过互联网通信技术,实现物物通信、协调、控制。
C、C++、Java
C与C++的区别
C是结构化、层次化的语言,c++是在c的语言的基础增加了面向对象,类。
即C语言面向过程,C++面向对象。
C++、Java的优缺点------C和C++的区别-----C面向过程、C++面向对象
C优点:
(1)C是结构式语言
(2)C程序生成代码质量高,程序执行效率高
(3)C适合于多种操作系统,如DOS、UNIX
C缺点:
(1)可重用性差
(2)数据安全性差
(3)难以开发大型软件和图形界面的应用软件
(4)把数据和函数分离为相互独立的实体
C++优点:
(1)可扩展性强
(2)数据安全性好
(3)面向对象的特性
(4)通过继承与多态性,可提高程序的可重用性,使软件开发和维护都更方便。
C++缺点:
(1)库涵盖范围不足
(2)非并行
(3)封装度不够
Java优点:
(1)面向对象性(面向对象的程度可以达到 95%)
(2)跨平台性
(3)支持多线程
Java缺点:
(1)效率低
(2)跨平台是它最大的优点也是最大的缺点
什么是面向对象?-----OO
答:面向对象是一种对现实世界理解和抽象的方法,可以将现实世界中的物质抽象为对象,并将具有某些相同特性的对象抽象为一个类。面向对象是相对于面向过程来说的,面向对象,把相关的数据和方法组织为一个整体来看待,更贴近事物的模式。
什么是封装性?
封装就是把普通的对象进行封装,把对象的访问限定设为私有,对外提供get和set方法,其他类只能通过get和set方法对象属性值进行操作。即只留必要的方法和接口,让用户使用。
封装的优缺点?
优点:(1)数据安全性好
(2)不必关心具体的实现;
(3)面向对象三大特征之一;
缺点:如果封装太多,虚类太多,效率也会低
封装的缺点可以使用什么改善?-----(友元函数)
友元函数 关键字:friend 将一个函数声明为一个类的朋友
用friend关键字对函数进行声明,友元可以访问与其具有好友关系的类中的私有数据成员。
友元类
将一个类声明为另一个类的友元,形式为:friend class 类名;例如,将B类声明为A类的友元,此时B类就是A类的朋友,B类中的所有函数都是A类的友元函数,可以访问A类中的所有成员。
(1)友元的关系是单向的,如,B类是A类的友元,不等于A类也是B类的友元。
(2)友元的关系不能传递。如B类是A类的友元,C类是B类的友元,不等于C类是A类的友元。
面向对象程序设计语言(java、c++)的3个特点?
(1)继承,方便对已有函数的功能进行直接调用和扩展,目的是——代码重用。
(2)封装,可以隐藏具体实现细节,使得代码模块化。方便调用类库里面已经写好的函数。
(3)多态:指不同的子类对象可以根据同一消息,做出不同的行为。多态可以实现对派生类对象的统一调度,目的——接口重用
C++语言,什么是继承性? 在现实生活中举例?
答:继承性是对已有函数的功能进行直接调用和扩展,例如:子类共享父类数据结构及方法的机制。
例子:编写一个有关日期(年、月、日)和时间(时、分、秒)的程序。该程序建立三个类,一个是日期类Date,一个是时间类Time,另一个是日期和时间类DateTime,它是Date类和Time类为基类的派生类。也就是DateTime继承自Date类和Time类。
单继承和多继承是什么-----c++支持多重继承,Java不支持多重继承
(1)单继承就是一个子类只有一个父类
构造函数(包括析构函数)是不被继承的,所以一个派生类只能调用他直接基类的构造函数。当定义派生类的一个对象时,首先调用基类的构造函数,对基类成员进行初始化,然后执行派生类的构造函数。
(2)多继承就是一个子类可以有多个父类
在Java中,使用extends只能继承一个类。而使用implements关键字可以使java具有多继承的特性,implements是接口的实现(没有什么构造函数),只是接口可以被其他类继承而已。
继承
(1)公有继承:基类的公有成员和保护成员保持原来的访问属性,私有成员仍为私有属性。
(2)私有继承:基类的公有成员和保护成员变为私有成员,私有成员仍未私有属性。
(3)保护继承:基类的公有成员和保护成员变为保护成员,私有成员仍未私有属性。
虚基类:继承间共用基类时,只保留一份成员。虚基类可以避免产生二义性。
Class A {…};
Class B:virtual A {…};
虚函数
虚函数就是在基类声明为虚拟的(virtual),之后在派生类中才正式定义此函数。虚函数允许在派生类中重新定义与基类同名的函数,并可通过基类指针或引用来访问基类和派生类中的同名函数。
纯虚函数
纯虚函数是在声明虚函数时被初始化为0的函数。=0并不代表函数返回值为0,只是形式上的作用,告诉编译系统,该函数为纯虚函数。
纯虚函数不能被调用,在派生类中重定义后,才能被调用。作用是在基类中为其派生类保留一个函数的名字。以便派生类根据需要对其进行定义。
抽象类:不用来定义对象而只作为一种基本类型用来被继承的类,称为抽象类,由于它常作为基类,所以通常称为抽象基类。
c++实现多态的方法-----多态—静态多态(静态联编)、动态多态(动态联编)
静态多态通过重载来实现,如函数重载和运算符重载。
动态多态通过虚函数来实现。
关联(联编)–确定调用的具体对象的过程称为关联------静态关联、动态关联
(1)在编译时即可确定其调用的函数属于哪一个类,这种过程称为静态关联,例如:函数重载
(2)在运行阶段,基类指针先指向某个派生类的对象,然后通过指针调用该对象所在类中的函数。即在运行时把函数与类对象绑定在一起,称为动态关联。
举个多态的例子?
(1)定义抽象图形基类,在基类在定义求面积的虚函数area();
(2)定义派生类-正方形类,在正方形类中对求面积函数area()进行重定义;
(3)在主调函数中实例化派生类对象,定义基类指针p,并用基类指针指向派生类对象,通过指针p访问求面积的函数area()。就实现了对求面积函数的多态。
java为什么具有很好的跨平台性?
答:因为java有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的。java是先把java文件编译成二进制的class文件,虚拟机就解释执行class文件,所以它的代码就能不经修改,就在不同平台上运行。
Java它的发展前景?
(1)桌面级应用:尤其是需要跨平台的桌面级应用程序。
(2)企业级应用:一般使用人数较多,数据量较大,对系统的稳定性、安全性、有比较高要求的应用。
(3)嵌入式设备及电子产品:包括无线手持设备、通信终端、信息家电、Java游戏等。
闭包和多态性?
答:闭包是指有权访问另一个函数作用域中变量的函数,即在函数内创建另一个函数。
多态性指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而做出不同的行为。
C语言的问题——怎样在各函数之间传递数据
答:用指针的方法和用全局变量的方法
程序的健壮性?
答:对于规范要求以外的输入,程序能够判断出这个输入不符合规范要求,并提供合理的处理方式。
C语言的指针是怎么定义的,指针跟什么的实质是一样的?
答:指针的定义首先要定义数据类型类型,在数据类型后面加上*号,跟上指针名,指针的初值一般设置为NULL。
实质:指针跟数组名本质一样,都被编译器编译成一个地址。
数组与指针区别?
(1)数组要么在静态存储区被创建,如全局数组;要么在栈上被创建。数组名对应着一块内存,其地址与容量在生命周期内保持不变,但数组的内容可以改变。
(2)指针可以随时指向任意的内存块。所以常用指针来操作动态内存,指针比数组灵活,但也更危险。
C语言结构体和JAVA(C++)的类的异同
(1)类可以看做是一种特殊的结构体,不仅能存储不同的数据类型,还有方法。
(2)C语言的结构体对内部成员变量的访问限定符默认为public,而类中允许public,protected,private三种访问限定符,且默认为private。
代码如何检查错误,有哪些方法?
答:编译一下就可以检查出是否有语法错误,至于程序的控制错误可以用SIM来进行分析和判断。
Ncsim:检查主要是一些编译检查,保证代码能够正确编译。
还有局部变量和全局变量的底层理解
1.作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等。
2.存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区。
3.生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁。局部变量在函数的退出后就不存在了。
4.使用方式不同:全局变量在声明后程序的各个部分都可以用,局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量。
动态分配内存 要用new关键字:
用new开辟的内存,要用delete释放;new和delete必须成对出现。且用new在堆中定义对象时,会调用构造函数;用delete释放对象时,会调用析构函数。
(1)为一个对象分配内存:指针名= new类名;
(2)为一个对象数组分配内存:指针名= new 类名[长度];
引用 即给对象起别名 ----- 数据类型 &别名=变量名
将b声明为a的引用后,a,b的作用相同,都代表同一个变量。
(1)声明一个引用时,必须同时使之初始化,即声明它代表哪个变量。
(2)在声明为一个变量的引用后,不能再作为另一个变量的引用。如b为a的引用,在b的定义域内,b不能再作为c的引用了。
用指针指向结构体变量就构成了链表
枚举(enumerate)类型 关键字:enum
枚举是指变量的值可以一一列举出来,变量的值只在列举出来的范围之内。例如变量星期,只有星期1到7这几种可能,可设为枚举类型。
Typedef声明一个新的类型名来替代已有的类型。例如typedef int x;表示用x来代表int类型。
方法:对数据的操作-------------------消息:对数据操作的命令;
string对象
(1)包含于#include头文件包中
(2)计算字符串长度方法是:字符串.size()
(3)返回字符串子串的函数:substr(起始位置,结束位置)
函数的参数及其传递方式
(1)对象作为函数参数:这种传递是单向的,不会改变实参的值。
(2)对象指针作(地址)为函数参数:这种传递会改变实参的值。
(3)引用作为函数参数:实参和形参代表同一个对象,所以改变形参就是改变实参对象。
函数的重载
函数重载指函数名相同,但函数的参数类型,参数个数或参数顺序不同。
只有函数名和参数个数、类型和顺序都相同,的情况下才会发生同名覆盖;函数名相同而参数个数、类型或顺序不同时,不会发生覆盖,而属于重载。
运算符重载 关键字:operate
定义一个重载运算符的函数,使重载的运算符不仅能实现原有的功能,而且能实现函数中指定的新功能。使用被重载的运算符时,系统就自动调用运算符重载函数,以实现相应的功能。
C++中不能重载的运算符有:(。成员访问运算符),(::作用域运算符),(*指针运算符),(sizeof长度运算符),(?:条件运算符)
运算符重载不能改变运算符的优先级;运算符重载不能改变运算符的结合性;
函数模板 template
(1)建立一个通用函数,函数类型和形参类型不具体指出,而用一个虚拟的类型来代表,这种通用函数就称为函数模板。
(2)函数模板只适用于函数体相同,参数个数相同而类型不同的情况。
类模板 template《class 类型参数名》
(1)将一些数据类型从类中分离出来形成的一个通用的数据类型T,并为这个数据类型T设计一个操作集,在调用时与特定的类关联起来,称之为类模板。
(2)类模板也可以继承,继承的方法与普通的类一样。
内联函数 “inline”
内联函数的声明只要在函数前加上关键字“inline”即可。内联即将所调用函数的代码直接嵌入到主调函数中的一种方法。但内联函数不能包括一些复杂的控制语句,例如循环语句、switch语句等。只有那些规模较小而且又被频繁调用的简单函数,才适合声明为inline函数。
内部函数与外部函数
(1)如果一个函数只能被本文件中的其他函数所调用,就称为内部函数。定义内部函数时要用static关键字修饰。
(2)如果用extern关键字修饰,则表示该函数为外部函数。可被其他文件的函数调用。
类外定义成员函数:
要用作用域运算符“::”,意思是说明其后的成员函数属于这个类。
构造函数
(1)构造函数与类同名,不具有任何类型,不返回任何值。
(2)默认构造函数是系统自动产生的,一个类只能有一个默认构造函数。当用户定义了自己的构造函数系统就不在提供默认构造函数。
(3)一个类可有多个构造函数,程序自动调用构造函数来初始化对象。
构造函数重载:函数名字相同,参数个数或类型不同。
(4)当使用new在堆中定义一个对象时,首先给对象分配足够的内存,然后自动构造函数来初始化这块内存。
(5)拷贝构造函数:用对象来实例化一个新对象,时会调用拷贝构造函数。
类名(const 类名 &a)
析构函数
(1)在构造函数前加取反运算符~就变为析构函数。析构函数与类同名,不具有任何类型,不返回任何值,且不能被重载。
(2)一个类只能有一个析构函数。析构函数在销毁对象时被主动调用。
(3)当使用delete销毁一个堆中的对象时,首先为这个对象调用析构函数,然后再释放这个对象所占的内存。
对象的初始化与析构:先构造的后析构,后构造的先析构。
数据成员的赋值:不能在定义数据成员的同时进行赋值,这种做法是错误的。
通过实例化对象或是调用set()函数对数据成员赋值。
对象数组:数组中的每个元素都是同类的对象。
This指针-----指向本类对象的指针
This指针的值是当前被调用的成员函数所在对象的起始地址。This指针可以隐式调用也可以显示调用。
Const:定义的变量相对于常数,初始化后就不能修改
Const对象 //常对象成员
常对象:在对象名前使用const来声明常对象,但是声明时必须同时进行初始化,而且不能更改。
常对象,只能调用它的常成员函数,不能调用非const类型函数。
常成员函数:可以声明一个成员函数为const类型的函数。
常成员函数,只能引用本类的数据成员,且不能修改他们。
静态数据成员
(1)如果希望各对象数据成员的值是一样的,就可以把它们定义为静态数据成员,这样它就被各对象所共有,所有对象都可以引用它。
(2)一个类中可以有多个静态成员,所有对象都共享这些数据成员。
(3)静态数据成员在内存中只占一份空间。
(4)不能用参数初始化列表对静态数据成员进行初始化。静态数据成员可以初始化,但只能在类外进行初始化。
静态成员函数
(1)静态成员函数是类的一部分,但不是对象的一部分。如果要在类外调用公有的静态成员函数,要用类名和作用域限定符::。 eg:A::area();
(2)因为静态成员函数没有this指针,所以静态成员函数只能通过对象名(或指向对象的指针)访问该对象的非静态成员。
C++的异常处理机制:检查(try)、捕捉(catch)、抛出(throw)
把需要检查的语句放在try块中,catch用来捕获异常信息,出现异常时用throw抛出异常信息。
数据库
数据库设计的六个阶段
(1)需求分析、(2)概念结构设计、(3)逻辑结构设计、(4)物理结构设计、(5)数据库实施、(6)数据库运行和维护。
1.需求分析:—数据字典:描述数据项、数据流、数据结构、数据存储、处理过程的集合。
2.概念结构设计:
对用户需求进行归纳与抽象,形成一个独立于具体DBMS的概念模型。–E-R图;
3.逻辑结构设计-----将概念结构转化为某个DBMS所支持的数据模型。
DBMS支持哪几种数据模型?–层次模型、网状模型、关系模型、面向对象模型。
(1)层次模型:用树形结构表示实体及其之间的联系,树中每一个节点代表一个记录类型。
(2)网状模型:用有向图结构表示。网状模型的特征有:
《1》允许一个以上的节点无双亲。
《2》一个节点可以有多于一个的双亲。
4.物理设计:描述数据在系统内部(磁盘)的表示方式和存取方法。
5.实施阶段----建立数据库,编制与调试程序,组织数据入库,并进行试运行。
6.运行和维护阶段:经过试运行后即可投入正式运行。
什么是数据独立性?
数据独立性包括物理独立性、逻辑独立性。
物理独立性:用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。
逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的。即数据的逻辑结构改变时,用户程序可以不变。
SQL的四个组成部分?
数据定义子语言(Data Definition Language)
数据操纵子语言(Query Language)
数据控制子语言(Data Manipulation Language)
数据存储过程。(Data Control Language)
数据库操纵语言举例—也就是增删查改
如SELECT的作用是查询表的内容,UPDATE的作用是修改数据等。
什么是数据库控制语言,试举例说明—DCL用来设置或更改数据库用户角色权限
GRANT(授权)、DENY(拒绝)、REVOKE(删除)三类。
DBMS的控制操作有哪些
①数据的安全性保护;②数据的完整性检查;③并发控制;④数据库恢复。
数据库中的自主存取控制方法和强制存取控制方法?
(1)自,(DAC Discretionary access control):定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限,防止不合法用户对数据库的存取。
(2)强,(MAC Mandatory Access Control):每个数据对象被标为一定的密级,每个用户也被授予某一个级别的许可证。只有,某一许可证级别的用户,才能存取某一个密级的数据对象。
为什么强制存取控制提供了更高级别的数据库安全性?
强制存取控制(MAC)是对数据进行密级标记,无论数据如何复制,标记与数据是一个不可分割的整体。只有符合密级标记的用户才可以操纵数据,从而提高了数据的安全性。
介绍下有哪些应用数据库?
SQL数据库,DB2数据库,access数据库,Oracle数据库等。
数据库中数据模式是什么? 数据库的三级模式-------外模式、模式和内模式。
(1)外模式:又称用户模式,它是数据库用户能够看见和使用的。一个数据库可有多个外模式。
(2)模式是对数据库中全体数据的逻辑结构和特征的描述。
(3)内模式:又称为存储模式,是描述数据在数据库内部的表示方式。一个数据库只有一个内模式。
数据模式是对数据进行的“类型”的方面的刻画,而相应的“实例”则是对数据“值”的方面的描述。先有数据模型,才能据其讨论相应数据模式,有了数据模式,就能依据该模式得到相应的实例。
数据库的二级映像及作用:外模式/模式映像、模式/内模式映像。
保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
数据库规范化是为了解决关系数据库中什么问题而引入的?
答:数据库规范化是为了解决数据冗余、插入异常和删除异常等问题引入的。
数据库关系模式中,为何要满足不同的模式,这样做可以解决什么问题?
有利于:数据结构化,数据共享性高,冗余少于且易扩充,数据独立性高,有统一的数据控制功能。
**什么是函数依赖?**举一个例子
答:某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。
如果一个表中某一个字段Y的值是由另外一字段X的值来确定的,就称为Y函数依赖于X。
平凡函数依赖
当关系中属性集合Y是属性集合X的子集时,存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
非平凡函数依赖
当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。
完全函数依赖
设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
部分函数依赖
设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
关系模式中,满足什么条件才能符合第二范式?,谈谈范式?
(1)所谓范式就是符合某一种级别的关系模式的集合。
(2)通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合,称为规范化。
1、第一范式(1NF):一个关系模式R的所有属性都是不可分割的基本数据项。
2、第二范式(2NF):关系模式R满足第一范式,且每个非主属性都完全函数依赖于主键。
3、第三范式(3NF):关系模式R属于第二范式,且除主键外的其他属性不能有传递依赖关系。
4、第四范式(4NF):要求把同一表内的多对多关系删除
5、第五范式(5NF):从最终结构重新建立原始结构。
6、BC范式(BCNF):关系模式R属于第三范式,且主属性不依赖于主属性。
1NF 有哪些缺点?
(1)数据冗余太大(每一个系的系主任名字重复出现)
(2)插入异常、(3)删除异常、(4)更新异常
超键、候选键、主键、外键分别是什么?
(1) (Super Key):在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可为作为一个超键,多个属性组合在一起也可作为一个超键。超键包含候选键和主键。
(2) (Candidate Key):是最小超键,即没有冗余元素的超键。
(3) (Primary Key):能唯一标识一条记录的某一个属性组,该属性组就可以做为一个主键。一个数据列只能有一个主键,且主键的取不能为空(Null)。
(4) (Foreign Key):在一个表中存在,且为另一个表的主键,则称为该表的外键。
primary key约束和unique约束有什么区别?
(1)一个表可以有多个唯一约束,但只能定义一个主键约束;
(2)空值的列上可以定义唯一约束,不能定义主键约束。
数据库中怎么去除去重--------使用distinct关键字
项目数据库中大对象,如何存储文本?-------将文本当做字符串处理。
视图是什么? 视图的作用是什么?
视图:是从一个或几个基本表(或视图)导出的虚表;视图是编译好的sql语句。
作用:1、视图能够简化用户的操作
2、对数据提供安全保护
3、适当的利用视图可更清晰的表达查询
4、视图能将多表的数据关联起来,实现多表数据输出。
视图的使用场景:
(1)多次用到相同条件的查询结果时,可将该查询结果作为视图,供后续使用。
(2)开放权限给其他部门的人,但又不想暴露本部门的机密信息时,可以建立视图开放视图权限。
数据库中数据要存储在视图中吗?
答:数据库中的数据要存储在表中。视图是虚表,即视图所对应的数据不进行实际存储。
视图和基本表的区别与概念?
(1)表是内容,视图是窗口,(2)视图没有实际的物理记录,而表有。
(3)视图是编译好的sql语句,而表不是。
(4)表是全局模式的实表;视图是局部模式的表,即虚表。
(5)表占用物理空间,而视图不占用物理空间,视图只能通过创建sql语句来修改。
哪些视图是可以更新、哪些是不可以更新的,请举例说明、
(1)行列子集视图可以更新;组合视图;静态视图
(2) ① 由两个以上基本表导出的视图,不可以更新;
④ 定义中含有 Group By 字句的视图,不可以更新;
⑤ 定义中含有 DISTINCT 字句的视图,不可以更新;
⑦ 不允许更新的视图上,定义的视图也不允许更新。
数据库中锁?
如果需要“修改”一条数据,首先数据库管理系统会在上面加锁,以保证在同一时间只有一个事务能进行修改操作。上锁发生在一个事务获得对某一资源的权限时,这时,其他的事务就不能更改这个资源了,这种机制的存在是为了保证数据一致性。
数据库中死锁是如何产生的?如何解除死锁,思想是什么?
当多个事务同时访问数据库时,每个事务所拥有的锁都是其他事务所需要的,由此造成每个事务都无法继续运行下去。例如,事务A等待事务B释放他的锁,事务B又等待事务A释放他的锁,这样互相等待就形成死锁。
解除死锁:
选择一个处理死锁代价最小的事务,将其撤消,释放该事务持有的所有锁,使其它事务得以继续进行下去。
死锁的预防:一次封锁法,顺序封锁法;
死锁的诊断:超时法,等待图法。
封锁:—共享锁-S、排它锁-X
数据库的三级封锁协议?
(1)一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,一级封锁可防止丢失修改。
(2)二级封锁协议:满足一级封锁协议,且事务T在读数据R前必须先对其加S锁,读完后即可释放S锁。二级封锁协议能解决:防止丢失修改、防止读“脏”数据。
(3)三级封锁协议:满足一级封锁协议,且事务T在读取数据R前必须先对其加S锁,直到事务结束才释放。三级封锁协议能解决:防止丢失修改、防止读“脏”数据、防止不可重复读。
两段锁协议------指所有事务必须分两个阶段对数据项加锁和解锁:
(1)第一阶段是获得封锁。在这阶段,事务可以申请任何数据项上的任何类型的锁,但是不能释放任何锁。
(2)第二阶段是释放封锁。在这阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。
E-R图全称(什么是E-R图?),图内分别由什么构成,思想是什么等?
答:E-R图也称实体-联系图,提供了实体类型、属性和联系的方法,用来描述现实世界的概念模型。构成E-R图的基本要素是实体型、属性和联系。
(1)实体型:在E-R图中用矩形表示,矩形框内写明实体名
(2)属性:实体具有的某一特性,一个实体可由若干个属性。在E-R图中用椭圆形表示,并在椭圆内标明属性名。
(3)联系:反映实体之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边将有关实体连接起来,同时在无向边上联系的类型(1:1,1:n或m:n)。
e-r图,且e-r图是属于什么模型的?联系有没有属性?
答:e-r图概念模型。联系没有属性
怎么把E-R图转换为关系模型表?—完整性约束
如果有多个人同时在设计一个数据库的E-R图,应该注意什么问题?
答:应提前统一实体的名字,属性等。以免造成数据的不一致性。
数据库的三要素----------数据结构、数据操作、完整性约束条件。
数据完整性约束:指数据库中的数据应该满足的语义约束条件。可以分为六类:静态列级约束、静态元组约束、静态关系约束;动态列级约束、动态元组约束、动态关系约束。
数据库都有哪些完整性约束?-----数据库需要注意哪些方面?-----完整性约束
(1)实体完整性:规定表的每一行在表中是唯一的实体。
(2)域完整性:指表中的列必须满足某种特定的数据类型约束。
(3)参照完整性:指两个表的主键和外键的数据应一致,保证了表之间的数据的一致性。
(4)用户定义的完整性:针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。
完整性控制机制应具有哪些功能?
(l)定义功能–提供定义完整性约束条件的机制;
(2)检查功能–检查用户发出的操作请求是否违背了完整性约束条件;
(3)违约反应–如果发现用户的操作请求,违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
数据库的五大约束? 主外唯检默
(1)主键约束–唯一性,非空性
(2)外键约束–外键约束用于两张表之间,用来保证关联数据的完整性
(3)唯一约束–唯一性,可以空,但只能有一个
(4)检查约束–对该列数据的类型、范围进行限制,如非空约束
(5)默认约束–数据的默认值
多对多的实体,他们之间至少需要几个表?
3个。在关系数据库中,有一对一,一对多,多对多三种联系
前两个关系都只需要两个表就能表达清楚他们之间的关系,而多对多关系则需要第三张中间表,来表达清楚两张表之间的关系。
一般情况下是由三个字段组成:
1、两张表各自的主键。
2、中间表本身的自增主键。
数据库的安全性?
答:数据库的安全性:是保护数据库防止恶意的破坏和非法的存取。
常用技术:
(1)用户标识和鉴别:每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
(2)存取控制:只有合法权限的用户才能访问数据库,所有未被授权的人员无法存取数据。
(3)视图机制:把要保密的数据对无权存取的用户隐藏起来。
(4)审计:建立审计日志,把用户对数据库的所有操作记录到审计日志中。
(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
说一说数据库的安全机制?
数据库安全机制是用于实现数据库的安全策略的集合。
(1)用户标识和鉴别 (2)存取控制 (3)视图机制 (4)审计 (5)数据加密
数据库的完整性和安全性有什么区别?
数据库的完整性:是指为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,所造成的无效操作和错误结果。
数据库的安全性:是保护数据库防止恶意的破坏和非法的存取。
数据库保护(访问)的内容有哪些?
① 利用权限机制和完整性约束防止非法数据进入数据库;
② 提供故障恢复能力;
③ 提供并发访问控制
数据库的索引? RDBMS中索引一般采用B+树或HASH来实现。
(1)索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
(2)索引可以分为唯一索引、非唯一索引和聚簇索引三种类型。
索引的作用?
数据库使用索引来找到特定值,然后根据指针找到包含该值的行。这样可以使相应的语句执行得更快,可快速访问数据库表中的特定信息。
索引的优缺点?
优:(1)能提高数据的检索速度。
(2)能够加快表与表之间的连接速度。
(3)通过建立索引能有效的减少检索过程中所需的分组及排序时间,提高检索效率。
缺:(1)在数据库建立过程中,需花费较多的时间去建立并维护索引。
(2)索引需要占用一定的物理存储空间,如果建立聚簇索引,所占用的空间还将进一步的增加
(3)对其进行增、删或改操作时,索引还需要进行动态的维护,给数据库的维护带来了一定的麻烦。
使用索引一定能提高查询性能吗?
一般情况下,通过索引查询数据要更快,但也不是绝对的。因为索引需要额外的处理以及物理存储空间,那些不必要的索引反而会使查询反应时间变慢。
数据库加快查询速度要用什么? 索引
需要创建索引的情况:
(1)经常查询的列上。(2)作为主键的列上。(3)经常需要排序的列上。
(6)经常使用在where子句的列上。
不需要创建索引的情况:
(1)查询中很少使用的列。(2)修改性能远大于检索性能时。
数据字典是什么
答:数据字典指对数据的数据项、数据流、数据结构、数据存储、处理过程等进行定义和描述。即描述数据的信息集合。
关系表根据什么来简化------根据复杂程度来划到最小颗粒
数据库怎么加入新的数据?-----insert into
数据库的基本操作有哪些?----增、删、查、改(insert、delete、select、update)
关系数据库的操作特点:集合操作方式,即操作的对象和结果都是集合。
用什么技术提高对符号表的管理效率?
答:符号表一般以表格形式存储于系统中。如常数表、变量名表、数组名表等。对符号表管理方法的好坏,会直接影响编译系统的运行效率。
(1)把所有符号都组织在一张表中;(2)根据符号属性的相似程度分类组织成若干张表;(3)由视图可以将不同表的数据关联起来,实现对多表数据的管理。故可在这些子表上创建视图来管理。
数据库里面的查询语句有哪些? 关键字:select
查询语句:选择、投影、连接、并、交、差、除。
(1)数值型数据,(2)字符串型数据,(3)日期型数据(4)非空数据
(5)对数据进行升,降序查询(6)对数据进行多条件查询
数据库的关系操作有哪些?
选择、投影、连接、并、交、差、增、删、改。这些关系操作可以用代数运算的方式表示。
数据库的内连 INNER JOIN
只有在两个表中匹配的行才能在结果集中出现
数据库的左(外)连 LEFT JOIN
先返回左表的所有行,再加上符合连接条件的匹配行。
数据库的右(外)连 RIGHT JOIN
先返回右表的所有行,再加上符合连接条件的匹配行。
注:当在内连接查询中,查询条件无论是加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。
数据库中的事务是什么?
数据库事务(transaction):是可访问并操作数据库中,各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
事务的性质
(1)原子性(Atomicity):事务中的操作在数据库中是不可分割的
(2)一致性(Consistency):几个并行执行事务的执行结果,必须与按串行顺序执行的结果相一致。
(3)持久性(Durability):对于已提交事务,数据库系统必须保证事务对数据库的修改不被丢失。
(4)隔离性(Isolation):事务的执行不受其他事务的干扰。
DBMS采用(1)日志来保证事务的原子性、一致性和持久性。日志记录了事务对数据库的操作,如果某个事务在执行过程中发生错误,就可以根据日志撤销事务对数据库所做的更新,使数据库回滚到执行事务前的正常状态。
(2)DBMS是采用锁机制来实现隔离性。当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,直到前一个事务释放了锁,其他事务才有机会更新该数据。
事务的作用----------日志,锁机制
(1)为数据库操作序列,提供了一个从失败恢复到正常状态的方法。
(2)当多个应用程序在并发访问数据库时,可以在这些应用程序之间,提供一个隔离方法,以防止彼此的操作互相干扰。
事务的类别?
(1)扁平事务(2)链事务(3)嵌套事务(4)分布式事务。
事务的并发问题----并发事务时,可能会产生以下问题
(1)脏读:A事务读取B事务尚未提交的更改数据,并在这个数据的基础上进行操作。
(2)不可重复读:A事务多次读取同一数据,B事务在A事务读取的过程中,对数据作了更新,导致A事务多次读取同一数据时,结果不一致。
(3)幻读:A事务读取B事务提交的新增数据。
并发控制里面的乐观锁和悲观锁是什么?
(1)乐观锁即乐观并发控制,假设不会发生冲突,在提交更新的时候检查数据是否被正确更新,是的话正常提交更新,否则返回错误警告,由用户决定继续提交更新还是放弃提交更新。
(2)悲观锁即悲观并发控制,假设会发生冲突,在数据修改之前锁定数据,直到提交更新后解锁。
采用什么机制来保证数据库并发操作的正确性?
-------采用并发控制:封锁、时间戳、乐观控制法
不可重复读与幻读的区别:
(1)不可重复读指读到已提交事务的更改数据;而幻读指读到了其他已经提交事务的新增数据。
(2)解决不可重复读可通过行锁,解决幻读可通过表锁。
事务隔离级别
事务隔离级别 读脏 不可重复读 幻读
(1)读未提交(read-uncommitted) 是 是 是
(2)不可重复读(read-committed) 否 是 是
(3)可重复读(repeatable-read) 否 否 是
(4)串行化(serializable) 否 否 否
事务隔离级别越高,越能保证数据的完整性和一致性;但对并发性的影响也越大。
数据库恢复策略有哪几种----------1.数据转储(数据冗余)2.登记日志文件
数据库有哪几种备份策略,大概的操作
完全备份、差异备份、事务日志备份、文件备份
用windows做排课系统,系统有那些表?
答:(1)课程表、(2)教师表、(3)日期表:星期几、(4)班级表:教哪班
什么是存储过程?
存储过程:是一组为了完成特定功能的sql语句。存储在数据库中,经过一次编译后无需再次编译,用户通过指定存储过程的名字和参数来执行它。
存储过程的优缺点?
优:(1)存储过程是编译过的,执行效率高。
(2)存储过程直接存放于数据库中,可通过指定存储过程名字和参数直接调用,从而减少通信量。
(3)可保证数据的完整性和安全性。
缺:移植性差
什么是触发器?
触发器(trigger):是sql提供给程序员用来保证数据完整性的一种方法,是特殊的存储过程,它的执行由事件触发。
什么是游标?
(1)游标是一种能从多条数据记录的结果集中,每次提取一条记录的机制。
(2)游标是由结果集和结果集中,指向特定记录的游标位置组成。
drop、delete、truncate的区别是什么?
Drop删除表的结构和数据;delete和truncate只能删除数据。
DBA的职责是什么?
DBA一个(组)人员,负责全面管理和控制数据库系统。
(1)决定数据库中要存放哪些信息。
(2)决定数据库的存储和存取策略。
(3)限定数据的安全性要求和完整性约束条件。
(4)监控数据库的使用和运行-----转储数据、维护日志文件、故障恢复。
(5)数据库的改进和重构:对运行情况进行记录、统计分析,来不断改进数据库计。
和文件系统相比,数据库文件有什么优点?
(1)提高了数据的共享性,可使多个用户能够同时访问数据库中的数据。
(2)提高了数据的一致性和完整性。
(3)提供数据与应用程序的独立性。
软件工程
软件具有:复杂性,一致性,可变性,不可见性等内在特性。
计算机软件包括:程序、数据及文档的集合。
软件按功能分为:应用软件、系统软件、工具软件。
按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件。
软件危机:在计算机软件的开发和维护过程中所遇到的一系列问题。
(1)软件开发成本和进度无法控制(2)质量难以保证(3)软件维护程度低。
原因:软件的不可见性,系统规模庞大,及对维护不够重视。
软件工程3个要素:方法、过程、工具。
方法是完成软件工程项目的技术手段;
过程支持软件开发的各个环节的控制和管理。
工具支持软件的开发、管理、文档生成;
软件工程过程4种基本活动:
(1)P(Plan) ——软件规格说明; (功能及其运行时的限制)
(2)D(Do) ——软件开发; (产生满足规格说明的软件)
(3)C(Check) ——软件确认; (确认软件能够满足客户提出的要求)
(4)A(Action) ——软件演进。
软件工程的目标与原则,方法和过程:
(1)目标:在给定成本、进度的前提下,开发出具有有效性、可靠性且满足用户需求的产品。
(2)原则:信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
(3)工程方法:结构化方法、JSD方法、面向对象方法。
(4)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、软件验证、软件维护。
软件设计的基本原理:
(1)抽象 (2)模块化 (3)信息屏蔽(4)模块独立性
软件设计包括:软件结构设计、数据设计、接口设计、过程设计。
结构设计: 定义软件系统各部件之间的关系。
数据设计: 将分析时创建的模型转化为数据结构的定义。
接口设计: 描述软件内部、软件和系统以及软件与人之间如何通信。
过程设计: 把系统结构部件转换成软件的过程描述。
衡量模块独立的两个标准:耦合性和内聚性。
耦合性:软件系统中各模块间相互联系和紧密程度的一种度量。
内聚性:一个模块内各元素,相互联系和紧密程度的一种度量。
模块独立原则(模块设计原则):高内聚、低耦合。
软件开发方法:软件开发过程所遵循的方法和步骤,包括分析方法、设计方法和程序设计方法。
数据流程图有两个特征:抽象性和概括性。
抽象性:数据流程图把具体的组织去掉,只剩下信息和数据存储。
概括性:数据流图把系统对各种业务的处理过程联系起来,形成一个总体。
UML是面向对象的方法;静态结构图:类图和对象图
什么是阶段性开发?分为哪两个方面?
研究阶段与开发阶段。
(1)研究阶段:为获取新的技术知识而进行的调查。
(2)开发阶段:将研究成果应用于某项设计,以生产出具有实质性改进的产品。
设计过程的两个阶段:
(1)系统设计阶段:确定系统的具体实现方案;
(2)结构设计阶段:确定软件结构。
软件结构设计—主要设计内容有:确定模块元素、定义模块功能、定义模块接口、确定模块调用、进行结构优化。
什么是软件工程
软件工程是一门用工程化方法构建和维护实用且高质量软件的学科。涉及程序设计语言、数据库、软件开发工具等方面。
软件工程是一门生产无故障的,及时交付的,在预算之内和满足用户需求的软件的学科。
软件工程方法?-------软件工程的面向对象和面向过程的各自含义
(1)面向过程:由结构化分析、结构化设计和结构化程序设计组成。以算法为基本单元,把一个复杂问题的求解过程分阶段进行,这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。面向过程将功能和数据进行分离。
(2)面向对象:把面向对象的思想应用于软件开发过程中。以类为基本单位,对象是类的实例化,对象之间以消息传递为基本手段。目的是使问题空间与求解空间在结构上尽可能一致。
(3)面向构件:寻求比类的粒度更大且易于复用的构件。
(4)面向服务:应用业务过程由服务组成,而服务由构件组装而成。
面向对象的软件开发有?
(1)面向对象分析;object oriented analysis OOA
(2)面向对象设计;OOD
(3)面向对象编程;OOP (programming)
(4)面向对象测试;OOT
(5)面向对象维护;OOSM
软件工程中面向对象的模型有哪些?
(1)描述系统数据结构的对象模型
(1)描述系统控制结构的动态模型
(2)描述系统功能的功能模型
这三种模型都涉及到数据、控制和操作等共同概念。
软件周期----软件工程的基本周期?
产品从提出、实现、使用、维护到停止使用的过程。
软件生命周期的三个阶段----软件定义、软件开发、运行维护
软件开发的流程?-----哪一步最重要?----软件生命周期可细分为那几个阶段?
(1)可行性分析、(2)需求分析阶段、(3)软件设计阶段、(4)编码阶段、(5)软件测试阶段、(6)安装与交付阶段、(7)软件维护。
---------需求分析是从软件定义到软件开发的最关键步骤
可行性分析法包括:(1)经济 (2)技术 (3)运行 (4)法律
需求分析方法有 (1)结构化需求分析方法;(2)面向对象的分析的方法。
结构化分析方法:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程。
需求分析原则:按自顶向下,逐层分解。
软件开发期
1.软件概要设计
2.软件详细设计-------确定软件结构中每个模块的内部细节。
3.编码和单元测试
4.集成测试
5.系统确认验证
软件维护分为以下4类:预防性维护;适应性维护;改正性维护;完善性维护;
影响软件维护的因素:系统大小、程序设计语言、系统文档等。
什么是软件测试?
软件测试:利用测试工具按照测试方案和流程对产品进行测试,并对测试方案中出现的问题进行分析和评估。软件测试是为了发现程序中的错误而执行的过程。
软件测试目标(目的):尽力发现软件中的错误。
软件测试的功能是什么?----确保开发完成软件的正确度、完全度和质量。
软件测试有哪几类?如何区分?
区分:从是否需要执行被测软件的角度,分为静态测试和动态测试。
按照功能划分可以分为白盒测试和黑盒测试。
(3)静态测试:指软件代码的静态分析测验,这个过程中应用数据较少,主要通过人工推断。优点:耗时较短、仅需较少资源就能完成对软件的测试。
(2)动态测试:相较于静态测试而言的,动态测试方式主要依赖程序的运用。主要检测软件中功能是否缺失、软件运行效果是否良好。
(3)黑盒测试:(功能测试)将测试对象看做一个不可见的黑盒子,通过输入数据观察输出数据是否与预期结果一致,以此来判断软件内部功能是否正常。
(4)白盒测试:(结构测试)将测试对象看做一个透明的白盒子。根据软件内部应用、源代码等对产品内部工作过程进行测试。
优点:能够有效解决软件内部应用程序出现的问题。
软件测试过程一般按4个步骤进行:
单元测试、集成测试、验收测试、和系统测试。
谈一下软件测试步骤
(1)制定测试计划;根据测试计划,设计测试用例、实施测试、管理测试时发现的错误、测试完并且错误修正完后要做测试报告。
(2)单元测试;
(3)集成测试:
(4)系统测试:主要是测试系统的运行环境,包括:计算机硬件、外设、软件、网络等。
关于软件测试,你知道有那些软件测试的方法?
答:黑盒、白盒、静态、动态、单元测试(模块测试);集成测试;系统测试;确认测试等。
模块测试与集成测试?
(1)单元(模块)测试:(unit testing):对软件中最小可测试单元进行检查和验证。单元测试的对象是模块,即对设计中的一个个模块来进行测试,重点是测模块与模块之间的关系;测试一个模块时需要为该模块编写一个驱动模块和若干桩模块。顶层测试无需驱动模块,底层测试无需桩模块。
(2)集成测试(组装测试、联合测试):在单元测试的基础上,将所有模块按设计要求组装成子系统或系统,进行测试。
确认测试
确认测试又称有效性测试,其任务是验证软件的功能、性能及其他特性是否与用户的要求一致。在进行确认测试时,可以采用Alpha测试或Beta测试。Alpha是在开发环境下的测试;而Beta是用户在实际使用环境下进行测试。
面向对象的测试方法------自顶向下、自下向上
面向对象测试--------对于测试而言,基本还是黑盒、白盒、灰盒这三种
(1)面向对象单元测试-----把操作作为类的一部分来测试。
(2)面向对象集成测试
(3)面向对象确认测试
程序测试与调试的区别:
测试是尽可能多地发现软件中的错误,软件测试贯穿整个软件生命期。
调试是诊断程序中的错误,主要在开发阶段进行。
主要调试方法有:
(1)强行排错法;(2)回溯法;(3)原因排除法;(4)归纳法;(5)演绎法。
谈谈自动测试?
自动测试,比较常用的是通过编写脚本程序,之后脚本可以自动产生测试用例,输入到程序中进行检测。
自动测试工具:测试数据生成、动态分析、静态分析、模块测试程序。
软件工程过程模型
1.在一个实际的工程中,必须设计出一个开发策略,确定所涉及的过程、方法、工具。这种策略常被称为“软件过程模型”。
2.软件工程的过程模型:(1)敏捷软件开发scrum(敏捷开发以用户的需求为核心,采用迭代、循序的方法进行软件开发)、(2)迭代模型、(3)增量模型等。
举例说出软件模型
答:1.瀑布模型:自上而下,逐级下落,体现不可逆转性。
2.喷泉模型
3.增量模型
4.螺旋模型:可以在项目的各个阶段进行变更。
5.原型模型:容易适应需求的变化。
6.组件复用模型
瀑布模型--------自顶向下、逐层细化。
(1)特点:线性化的模型。
(2)作用:为软件项目按规程管理提供了便利。
(3)局限性:主要适用于需求明确的软件开发,但不适用于需求模糊的项目。
喷泉模型------喷泉模型是专门针对面向对象软件开发而提出的。
增量模型
在整体上按照瀑布模型的流程开发,以便对项目的管理。但在软件的实际创建中,则将软件系统按功能分解为许多增量构件来逐个创建与交付,直到全部构件创建完毕,且都被集成到系统之中使用。
螺旋模型
螺旋模型是一种引入了风险分析与规避机制的模型,是瀑布模型、快速原型方法和风险分析方法的结合。
其基本方法是,在各个阶段创建原型进行项目试验,以降低各个阶段可能遇到的风险。
原型模型
(1)快速原型模型:用来试探某种设计是否能够获得预期结果。
(2)原型进化模型:对有待开发的软件系统,先开发一个原型给用户使用,然后根据用户的使用意见,对原型不断修改,使它逐步接近开发目标。
原型模型是什么,说说原型法?
原型法与开发过程对系统进行分析、设计、编程和运行的内容相类似,不同点就是不需要对系统进行非常细致的分析、设计。只需对它的主要功能进行初步分析、初步设计和编程后就马上运行,以后在与用户进行交互中再进一步改进。
组件复用模型
在组件复用的软件开发中,软件由组件装配而成。就像用标准零件装配汽车一样。因此,组件复用模型能够有效地提高软件生产率。
集中式结构:集中式系统由一台主机和多个终端设备组成。
程序算法设计工具
(1)N-S图
(2)PAD图
Jackson程序设计方法
将软件系统中的数据分为顺序、选择和重复三种结构。Jackson程序结构也是顺序、选择和重复这三种结构。
图形用户界面(GUI)所具有的特点
(1)比较容易学习和使用。
(2)用户可利用窗口与系统进行交互,并可通过任务窗方便的从一个任务转换到另一个任务。
界面设计中需要考虑的因素
(1)用户工作环境与工作习惯。
(2)界面信息反馈。
(3)界面个性化。
(4)容错性。
界面类型
(1)单窗体界面(SDI)。特点是一次只能打开一个独立窗体。
(2)多窗体界面(MDI)。由一个MDI主窗体和多个MDI子窗体组成。
(3)辅助窗体。也叫对话框。辅助窗体的种类:登录窗、消息窗、设置窗等。
(4)Web页面。
“关于12306订票系统,你认为在测试中是哪个环节没有做好从而导致瘫痪?”
答:需求分析。
离散数学
主析取范式:极小项(m)之和;
主合取范式:极大项(M)之积;
求极大极小项时,每个变元或变元的否定只能出现一次
求极小项时变元不够合取真,求极大项时变元不够析取假;
笛卡尔积?
两个集合X和Y的笛卡儿积(Cartesian product),表示为X×Y。指第一个对象是X的成员,而第二个对象是Y的一个成员-的所有可能的有序对。
序偶<a,b>
笛卡儿积是两个集合中所有元素两两相乘,不满足交换律、结合律、满足分配律。
谓词逻辑
一元谓词:谓词只有一个个体,一元谓词描述命题的性质;
多元谓词:谓词有n个个体,多元谓词描述个体之间的关系;
命题逻辑和一阶逻辑的关系
(1)封闭的谓词公式在任何解释下都变成命题常项。
(2)非封闭的谓词公式在某些解释下可以变成命题常项。
前束范式:一个公式,如果量词均在全式的开头,它们的作用域延伸到整个公式的末尾,则称为是前束范式。任何一个谓词公式都有一个前束范式等价。
容斥原理:n个集合并集的元素的个数=每个集合元素的个数和-两两集合交+三三集合交+(-1)^(n+1)*n个集合交。
egn=2来说,|A+B|=|A|+|B|-|A∩B|
集合的分划与覆盖的比较:
分划:每个元素均出现,且仅在子集中出现一次;
覆盖:只要求每个元素都出现,没有要求只出现一次。
等价关系:二元关系R满足自反性,对称性和传递性,则R称为等价关系。
集合恒等式:交换律、结合律、分配律、德摩根率、吸收率、同一律。
单射:对任意x1 ,x2,且x1≠x2,若f(x1)≠f(x2);则称单射。
满射:对值域中任意一个元素y,在前域中都有一个或多个元素对应;则称满射。
双射:若f既是单射又是满射,则f称为双射。
等势:设A,B为两个集合,若存在从A到B的双射函数,则称A与B是等势的。
关系的概念
A,B是任意两个集合,两个笛卡儿积的任意子集R称为A到B的二元关系(注意是任一子集。个数也同子集总数相同)
关系的性质-----自反性、对称性、反对称性、传递性。
关系的闭包:包含所有给定的对象,并且具有制定性质的最小集合-----自反闭包、对称闭包、传递闭包。
广群的性质:封闭性;
半群的性质:封闭性,结合律;
含幺半群:封闭性,结合律,有幺元;
群的性质:封闭性,结合律,有幺元,有逆元;
阿贝尔群(交换群):封闭性,结合律,有幺元,有逆元–》(群) +交换律;
-----任何一个循环群必定是阿贝尔群
欧拉路:经过图中每条边一次且仅经过一次的通路;
欧拉回路:经过图中每条边一次且仅经过一次的回路;
欧拉图:具有欧拉回路的图;
哈密顿路:经过图中每个顶点一次且仅经过一次的通路;
哈密顿回路:经过图中每个顶点一次且仅经过一次的回路;
哈密顿图:具有哈密顿回路的图;
哈密顿图的应用------安排圆桌会议;
方法:将每一个人看成一个顶点,把每个人与和他能交流的人连接。找到一条经过每个顶点一次且仅经过一次的回路(哈密顿图)即可。
欧拉定理:假设一个连通平面图有v个节点,e条边,r个面,则v-e+r=2;
离散数学的研究内容?—数理逻辑,代数结构,集合论,图论
大学为什么既要学离散数学又要学高数?
答:学习离散数学要用到高数中的知识,比如图论中就需要用到矩阵运算,集合论中的关系也要用矩阵运算。
离散数学在计算机中的应用?
答:(1)集合论:数据库中被广泛的应用。使数据库从层次型变为关系型,使数据库中的数据更容易表示和处理。
(2)图论中的树,可以用来表示计算机中文件的组织结构。在计算机网络中,有些路由选择算法是离散数学里图论的应用。
离散数学和高等数学的区别?
高等数学:处理的是跟连续相关的问题。
离散数学:研究内容主要是离散的,比如代数结构等
离散数学的图论相关知识,用图论证明最短路径
答:最短路径:单源最短路径,地杰斯特拉算法--------贪心算法
任意两点的最短路径:弗洛伊德--------动态规划
人工智能
谈谈你对人工智能(AI)的了解?
我觉得人工智能最出名的一个程序就是(AlphaGo)。其主要工作原理是“深度学习”。“深度学习”是指多层的人工神经网络和训练它的方法。AlphaGo用到了很多新技术,如神经网络、深度学习等。我相信未来人工智能应用能给我们带来更多便利。
谷歌阿尔法go机器人有什么新技术----自主学习(涉及到了计算机+自动化)
了解人工智能的开发平台么?
我不是很了解人工智能的开发平台。不过我稍微了解过AlphaGo中使用的技术。
了解哪些机器学习的算法?
在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。大体上有三类:监督式、非监督式、半监督式。
(1)监督式学习:逻辑回归和反向传递神经网络;
(2)非监督式算法:例如k-Means算法;
(3)半监督式:图论推理算法等。)
神经网络是什么?
神经网络:神经网络理论与控制理论相结合的产物。它汇集了包括数学、生物学、人工智能、计算机科学、控制等学科的理论。
虚拟现实
谈谈你对虚拟现实的了解?
Virtual Reality(虚拟现实,简称VR):是在计算机上生成一个三维空间,通过这个空间提供给使用者关于视觉、听觉等感官的虚拟,让使用者仿佛身临其境一般。3个特点,沉浸性immersion、交互性interactive、构想性imaginative。
有哪些主流的VR设备?-------谷歌Cardboard、索尼PS VR等。
VR(虚拟现实)与AR(增强现实)的区别?
Augmented Reality(增强现实,简称AR):VR是虚拟现实,偏向于以虚拟方式给人带来真实感受,AR是增强现实,偏向于在现实里加入虚拟要素。
云计算与大数据
什么是大数据?
大数据(big data):指无法在可承受的时间范围内,用常规软件进行处理的数据集合。大数据的4个特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。
大数据与云计算的关系?
在大数据和云计算都注重对资源的调度。大数据处理可以基于云计算平台。大数据处理也可作为一种云计算的服务。如阿里云的ODPS(Open Data Processing Service)。
计算机视觉
什么是计算机视觉?
计算机视觉是一门研究–如何使机器“看”的学科。简单来说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等;并进一步做图像处理,用电脑处理成–更适合人眼观察的图像。
计算机视觉,计算机图形学和数字图像处理,三者之间的联系和区别是什么?
区别:
(1)Computer Graphics(图形学),简称CG。输入的是对虚拟场景的描述。通常为多边形数组,每个多边形由三个顶点组成,每个顶点又包括三维坐标、贴图坐标、颜色等。输出的是图像,即二维像素数组。
(2)Computer Vision(计算机视觉),简称CV。输入的是图像或图像序列,通常来自摄像头或视频文件。输出的是图像序列,对真实世界的刻画。比如检测人脸、识别车牌。
(3)Digital Image Processing(数字图像处理),简称DIP。输入的是图像,输出的也是图像。Photoshop中对图像应用滤镜就是典型的一种图像处理。常见操作有模糊、灰度化、增强对比度等。
联系:
(1)图形学中会用到数字图像处理,现今的三维游戏为了增加表现力都会叠加后期特效,原理就是数字图像处理,只是将计算量放在了显卡端。
(2)计算机视觉更是大量依赖数字图像处理,比如对需要识别的照片进行预处理等。
图形图像处理
位图和矢量图有什么区别?
答:计算机能以矢量图(vector)或位图(bitmap)格式显示图像。
位图和矢量图的区别是:失量图可以无限放大,且不会失真,而位图而不能。
计算机图形学:直线在计算机怎么形成?颜色怎么显示?
从P0到P1的直线,实质上是找一个最佳逼近直线的像素序列并填入颜色数据的过程。
(1)基本增量算法(DDA):利用微分思想,即每一个点坐标都可以由前一个点的坐标变化一个增量得到。(2)中点算法
图形与图像的区别?
图形是由计算机绘制的直线、圆、矩形、曲线、图表等;而图像是设备捕捉实际的画面产生的数字图像。图形在进行缩放时不会失真;图像在放大时会失真–可以看到图像是由很多像素组合而成的。
了解人脸识别的相关算法么?
(1)基于几何特征的方法、(2)基于模板的方法、(3)基于模型的方法。
图像处理应用范围?----在我们身边像车牌识别、人脸识别都是图像处理的应用。
图形图像方面的算法:—主要分为两部分:1、图像增强 2、图像模糊处理
图像处理的实例-----数字图像处理应用可分为两大类:
(1)基础处理:通过算法来加强图片视觉效果。比如-对比度,降噪等。典型的应用比如Photoshop,以及美颜相机等。
(2)内容处理:对图像内容的分析。常见的包括脸部检测与识别、视频搜索等。
网络安全
网络安全问题-------(1)计算机病毒 (2)黑客 (3)网络陷阱
防火墙有哪几种?都属于哪一层的?包过滤,状态。包过滤网络层,状态应用层。
举个应用层防火墙的例子?----------web防火墙,防sql注入。
网络间密钥的概念
即网络中使用的秘钥,互联网是一个开放式的系统,所以保护个人隐私是互联网的头等大事,而使用加密秘钥是最简单,且有效的方法。
简述对称加密和非对称加密的区别? 对称加密和非对称加密?
(1)对称加密:加密和解密的秘钥是同一个。
优点:加密效率高、速度快。 缺点:密码数量多,难以管理。
常见的对称加密算法:DES、Blowfish、AES等。
DES采用56位秘钥,Blowfish采用1到448位变长秘钥,AES采用128,192和256位长度的秘钥。
(2)非对称加密:需要两个秘钥–公开秘钥(public key)、私有秘钥(private key)
优点:安全性好 缺点:加密速度慢
常见的非对称加密算法:RSA、DSA
和RSA不同的是DSA仅能用于数字签名,不能进行数据加密解密,其安全性和RSA相当,但性能要比RSA快。
什么是信息安全?-信息安全可通过加密实现(可以准备点加密算法讲给老师听)
信息安全主要包括保证信息的–机密性、完整性、可用性、可鉴别性、不可抵赖性。
1.机密性:保证信息不泄露给未经授权的进程或实体。
2.完整性:信息只能被得到允许的人修改,并能够被判断信息是否已被修改过。
3.可用性:只有授权者才可以在需要时访问该数据。
4.可鉴别性:网络应对用户、进程、系统等进行身份鉴别。
5.不可抵赖性:数据的发送方与接收方都无法对数据传输的事实进行抵赖。
你感觉得现在中国的网络安全吗?为什么?
不安全。因为有很多安全问题的事件依然在发生。例如:全国个人信息泄露的事情屡见不鲜。
网络安全到底是什么东西,有什么攻击手段和防御手段
网络安全–保护网络系统的硬件、软件及数据,不受恶意破坏、更改、泄露。
常见的攻击手段有:SQL注入、XSS攻击、DDOS、勒索软件等
常见的防御手段有:安装杀毒软件、设置复杂密码、经常打补丁等。
数学&闲聊
大学学过什么课程?
C语言、C++、数据结构、线性代数、数学分析、概率论等
数学分析的核心是什么-------核心是无穷小分析,也就是极限
说说极限的定义
存在常数A,任意 ,存在 ,当 时,有 则X趋于x0时函数 的极限是A。
极限是什么?求不出导数时,应该怎么求导?
答:设函数y=f(x)在点x0左右邻域都有定义,当x无限趋近x0时,函数值无限接近一个确定的常数A,则称A为当x无限趋近x0时函数f(x)的极限。
求不出导数时(例如导数不好求或导数不存在时(尖点):可以用导师的定义求,导数的定义是:x趋向于x0时,f(x)-f(x0)除以x-x0的极限值。也即x趋向于x0时, 除 的极限值。
一个矩阵可逆的充要条件是什么
(1)矩阵可逆的充分必要条件是行列式值不等于0;
(2)r(A)=n。
(3)矩阵的所有特征值中不含0。
(4)矩阵可以分解为若干初等矩阵的乘积。
线性方程组什么时候有解?解的情况
(1)齐次方程组:
1.方程组的秩等于未知数的个数,方程有唯一解(唯一0解)。
2.方程组的秩小于未知数的个数,方程有无穷多解。
(2)非齐次方程组:
1.系数矩阵与增广举证的秩相等且等于未知数个数,方程有唯一解;
2.系数矩阵与增广举证的秩相等且小于未知数个数,方程有无穷多解;
3.系数矩阵与增广举证的秩不相等,方程无解;
概率论中的均匀分布的概念?
在相同长度间隔内的分布概率是等可能的,在a与b之间,均匀分布的概率密度函数为
数学与计算机的关系
现实问题——数学模型——计算机算法——编程——上机运行——结果
高数在计算机的运用
现实问题——数学模型——计算机算法
极限的思想在计算机中是怎么体现的?-------逐步逼近
例如在MATLAB上作图时,某个函数的图像会无限趋于一个值但又不等于这个值,这个时候图像其实是在无限靠近渐近线的。计算机首先通过极限的求解方法计算出函数的渐近线,并无限靠近它。这就是一个极限思想在计算机中的体现。
多项式非确定性问题? Non-deterministic Polynomial Complete----NP问题
指一个复杂问题不能确定是否能在多项式时间内找到答案,但可以在多项式时间内验证答案是否正确。如完全子图问题、图着色问题等。
什么是数理逻辑?和其他的逻辑有什么不同?
答:数理逻辑又称符号逻辑、理论逻辑。是用数学方法研究逻辑的学科。形成符号化、数学化的逻辑。其研究对象是对证明和计算这两个概念进行符号化后进行研究。
QQ用到了哪些技术和有哪些功能?
答:是腾讯公司开发的一款基于Internet的通信软件。QQ能支持在线聊天、视频通话、共享文件、QQ邮箱等多种功能。
擅长什么编程语言?--------C++,
积分的概念?
答:积分分为定积分和不定积分两种。定积分结果是一个具体数值,不定积分结果是一个表达式。
定积分:二元函数的积分表示在平面坐标上围成的图像的面积。三元函数的积分表示曲顶柱体的体积值。
特征值有什么意义?怎么在计算机中求特征值?
答:特征值的定义是 。将两个矩阵乘积转化为一个矩阵的数乘。
计算机求:普通算法:计算特征多项式,进行因式分解,得到特征值。
对于一些大型矩阵,求特征值的算法,逐渐逼近。
随机变量中相关系数的含义是什么?
答:相关系数又叫线性相关系数。它是用来度量变量间的线性相关程度。相关系数=两个变量的协方差/ 两个变量标准差的乘积;相关分为正相关与负相关。
高数
敛散判别方法-------比较判别法、根值判别法。
傅里叶级数
非周期的傅里叶–通过奇/偶延拓,通过奇延拓变为正弦级数,通过偶延拓变为余项级数。
线性代数
概率论
几种常见的分布:
(1)0-1分布:ex=p ; dx=p(1-p) (2)二项分布:ex=np ; dx=np(1-p)
连续: 离散:
大数定理:n个变量的均值,依概率收敛到期望的均值。
中心极限定理:n个变量的和近似服从正态分布。
(1)列维-林德伯格中心极限定理
(2)棣莫弗-拉普拉斯中心极限定理。
举报