计算机保研面试专业课提问

计算机组成原理

1.如何解决流水线中数据冒险?

采用硬件阻塞、空指令、转发技术,编译时采用优化技术。

其中转发技术不能解决load-use型冒险,

load-use型冒险:

load R0,(0)R2

sub R4, R0,R1

在load指令的访存阶段才能取到R0的值,在sub指令的执行阶段用到R0的值,中间必须要延迟一个周期的时间。

2.DMA控制方式原理

DMA控制是四种IO控制方式之一(程序直接控制方式、中断驱动方式、DMA方式、通道控制方式)。

DMA控制方式的硬件基础:采用三总线结构。

在这里插入图片描述

 采用DMA控制方式:IO设备可以直接与内存进行交换,只会在数据传送的开始和结束打扰CPU,产生中断。

工作过程:

DMA控制器由与IO设备的接口、IO控制逻辑和一些寄存器组成。在DMA控制器有传输数据的请求时,向CPU发出中断,CPU向DMA发出控制命令,设置MAR为传输的起始地址,DC为传输的数据量,启动DMA;之后CPU即可执行其它工作,委托权由DMA控制。DMA进行连续存储,每次存储1个字。存储完成后,产生中断。

 3.通道控制方式原理

通道控制方式采用双总线结构:

在这里插入图片描述

 通道相当于弱化版CPU。CPU只需向通道发出一条读取设备一组数据的相关指令(告诉执行通道程序的首地址和要访问的IO设备),通道就可以自行的进行数据传输、数据相关控制,并且将数据放入主存的合适位置。

与DMA方式的不同点

DMA控制方式中,传输的数据量的多少、存放在内存中的起始位置等控制信息是由CPU决定的,而通道方式是由通道决定的。通道享有更高的控制权限。

通道控制的优点

CPU、通道、IO设备之间可以并行工作,CPU执行自己指令,通道向主存中传数据,IO设备向通道传数据,工作效率提高,资源利用率高。

数据结构

1.二叉搜索树的优缺点?

缺点是查找的平均时间复杂度为O(logN),但是最坏情况下为O(N)(由于不够平衡的缘故)

优点是方便插入和删除,

插入是当做叶子结点插入;

删除的话分为三种情况,分别是删除叶子结点、删除度为1的结点、删除度为2的结点。删除叶子结点直接删除即可;删除度为1的结点p,记p的父节点为pa,p的子树为pc,如果pc是p的左子树,则将pc当做pa的左子树,如果pc是p的右子树,则将pc当做pa的右子树;删除度为2的结点p,在p的左子树中寻找一个最大的节点plmax,plmax是必定没有右子树的,用plmax的值替换p,再将plmax删除;或者在p的右子树中寻找一个最小的节点prmin,prmin是没有左子树的,用prmin的值替换p,再将plmin删除。

2.堆排序的时间复杂度

建成堆用的是O(n);

之后n-1次“删除操作”为O((n-1)*logn)

因此时间复杂度为O(nlogn)

3.快排的实现过程

依据主元进行划分的算法,主元之前的数小于主元,主元之后的数大于主元:

借用两个指针i,j;i指向第一个大于主元的数,j指向数列尾,做下列循环:

i不动,j--:直到j指向的数据小于主元,与i做交换;

j不动,i++

程序设计

1.指针和引用的区别?

引用相当于是别名

int a;

int *p = &a;//p是一个指针变量,在内存中p有单独的一块位置,p的值是a的地址

int &r = a; 

//r相当于是a的别名,在内存中r和a代表同一块存储空间,只不过既可以叫a也可以叫r

计算机网络

1.奈氏准则,香农定理区别

信道的极限传输速率与哪两个因素有关?由此衍生出哪两个公式?这两个公式的区别?

信道能够通过的频率范围(即带宽),信噪比。

奈氏准则,香农定理。

奈氏准则给出的是,只在带宽的限制下,信道在不发生码间串扰的前提下极限传输速率。

香农定理给出的是,在带宽和信噪比的限制下,信道在无差错传输的前提下的极限传输速率

2.CSMA/CD协议工作过程

帧协议,针对总线型网络之间通信的协议,全称:载波监听多点接入/碰撞检测

工作过程:

假设A到B发送数据,总线的最长单程传播时延为\tau

1.准备发送:A从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。

2.监测信道:若检测到信道忙,则停止发送;若检测到信道空闲,则开始发送给B。

3.发送过程中,不断进行碰撞检测,这里存在两种可能性:

2\tau时间内无检测到碰撞产生,则认为成功发送;否则发送不成功,使用截断二进制指数退避算法进行重发。

3.协议的三要素

语法,语义,同步。

语法:数据的格式(如帧格式符合语法才能被识别)

语义:数据的具体格式所代表的控制信息、完成的动作、做出何种应答(如404代表访问失败)

同步:事件实现顺序的完整说明(如三次握手、四次握手)

4.集线器、交换机、路由器的区别

集线器:没有分割冲突域和广播域,即同时只能有一台设备发送信息,且A向B发送的数据会被集线器广播给所有的设备。工作在物理层。

交换机:分割冲突域,未分割广播域;交换机所连接的不同网段属于不同的冲突域,但若A广播发送数据给交换机,还是可以传播到所有网段的设备;如果A发送数据给另一个网段的B,交换机会根据数据的目的MAC地址,只把数据发送给B设备;若交换机没有学习过B的MAC地址,那么这个数据会被广播发送,但是通过ARP协议解析MAC地址,进行MAC地址的匹配,最终还是只发给B,交换机也从此学到了B的MAC地址。

路由器:分割冲突域和广播域;路由器连接的属于不同的网络,连接到路由器上的网段会被分割成不同的广播域,不同的网段依靠IP地址进行通信。

5.层次路由解决的问题

层次路由是解决什么问题的?

1.由于网络的数量越来越多,让路由器知道所有的网络该如何到达并不现实,路由表占用的空间非常大。

2.许多单位并不想让外界知道自己内部的网络结构和组织,但同时还想连接到互联网上。

由此,引入了层次路由——将互联网划分为许多小的自治系统AS。

AS内部采用内部网关协议IGP,如RIP、OSPF。

AS之间采用外部网关协议EGP,如BGP4。

6.TCP如何建立连接

1.三次握手过程?

第一次:客户→服务器 SYN=1,seq=x,SYN=1是建立同步连接的信号,由于还未建立连接seq的值是自己初始化的,该报文段不允许携带数据。

第二次:客户←服务器 SYN=1,ACK=1,seq=y,ack=x+1,该报文段也不允许携带数据。

第三次:客户→服务器 ACK=1,seq=x+1,ack=y+1,此时可以携带数据也可以不携带数据。

2.为什么选用三次握手而不是二次握手?

客户给服务器发送的建立同步连接的报文可能被阻塞,导致在客户、服务器完成整个数据传输过程并且释放掉连接之后,才到达服务器。

服务器接收到建立同步连接的报文,会返回给客户确认连接的报文。

如果是二次握手,则连接被重新建立。

如果是三次握手,客户端知道自己并没有建立连接的需求,因此丢弃该报文,不会建立连接。 

7.TCP如何释放连接

1.四次挥手过程:

第一次:客户→服务器,FIN=1,seq=x

第二次:客户←服务器, ACK=1,seq=y,ack=x+1

然后,服务器把还没发送完给客户的数据发送完

第三次:客户←服务器,FIN=1,ACK=1,seq=w,ack=x+1

第四次:客户→服务器,ACK=1,seq=x+1,ack=w+1

服务器关闭,然后客户再等待两个最长报文段寿命(2MSL时间)关闭。

2.为什么要等待2MSL?

因为第四次 客户→服务器的报文可能会丢失,此时服务器一直得不到第四次的握手报文,会重新执行第三步握手,如果不等待2MSL那么实际上服务器那端没有得到第三次的握手反馈,会一直关闭不了;如果等待2MSL,第四次客户→服务器就会重新发送一次。

3.为什么释放连接比建立连接多一次

因为第二次挥手之后,服务器还可能会向客户发送数据,因此“建立连接”中的客户←服务器,实际上和此处的两次客户←服务器等价。

8.TCP拥塞控制

慢开始阶段:cwnd按照每个RTT二倍增加到门限值

拥塞避免阶段:cwnd到达门限值之后,每隔一个RTT加1

快重传:连续收到三个ACK确认包,说明有一个包没收到,启动快重传,即立刻重传认为缺失的那个包。

快恢复:连续收到三个ACK确认包,在快重传的同时,设置门限值为当前cwnd/2,每隔一个RTT门限值和cwnd都+1。

一旦碰到超时,进入慢开始阶段,此时cwnd设为1,门限值设为cwnd/2

发送方窗口的上限值:Min【rwnd,cwnd】 其中rwnd为接收方接收窗口的上限值。     

9.TCP流量控制   

利用滑动窗口,接收方告诉发送方接收窗口rwnd的大小,发送方实际发送的大小(即发送窗口)=Min【rwnd,cwnd】

10.流量控制和拥塞控制的关系

流量控制是用来控制接收方和发送方速率匹配的问题。

拥塞控制是用来控制整个网络中防止被注入过多的数据,导致拥塞。

11.socket通信

全双工

bind方法 为进程绑定IP地址和端口号

connect 连接到某个IP地址和端口号

recv 接收连接的进程的信息

send 发送信息给连接的进程

close 关闭端口

12.主机之间通信过程

如果两个主机属于同一个网络,那么主机A通过ARP表查找,是否有B的IP地址到MAC地址的映射,若有,则构造报文,发送给交换机,交换机再根据自己的MAC学习表发送给B;若没有,发送ARP请求报文给交换机,交换机广播发送,B接收后返回给A,A在ARP表中即记录下B的IP与MAC地址之间的映射。

如果两个主机属于不同的网络,那么主机A通过ARP表查找,是否有该网段的路由器E的IP地址到MAC地址的映射,如果有构造报文目的IP为B的IP,目的MAC地址为路由器的MAC地址,源IP和源MAC地址都是A的,发送给路由器,剩下的转发工作交给路由器E,

路由器E对该报文的MAC地址进行改动,源MAC地址改为E的左侧网段的MAC地址,目的MAC地址改为E的右侧网段的MAC地址。

路由器的右侧再对报文进行改动,源MAC地址改为E的右侧MAC地址,通过查找ARP目的MAC地址改为B的MAC地址。

13.URL访问过程

1.现在给出一个URL,首先根据DNS域名解析过程得到其IP地址:

具体过程为:

1.查询本地域名服务器(比如浏览器缓存)

2.通过本地域名服务器向根域名服务器发出请求,根域名服务器会直接告诉IP地址或者告诉去哪个顶级域名服务器中找。

3.通过本地域名服务器向顶级域名服务器发送请求,顶级域名服务器会直接告诉IP地址或者告诉去哪个权限域名服务器中找。

4.通过本地域名服务器向权限域名服务器发出请求,权限域名服务器会直接告诉IP地址或者再告诉本地域名服务器去别的哪个权限域名服务器中找。最终得到IP地址。

2.再根据IP地址,通过ARP表获得MAC地址,如果没有MAC地址,就需要在网络中广播ARP请求,需要用到路由选择协议,网络内部用OSPF、网络之间用BGP4,最终得到MAC地址。

3.发送请求连接报文,建立TCP连接(三次握手),三次握手。

4.建立连接之后,进行http(基于TCP连接)协议的一些操作,以及数据传输。

5.释放连接,四次挥手。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值