网络相关
1.描述一下网络的三次握手四次挥手,为什么要这样做?
-
三次握手:
1、客户端调用
connect()发起请求,请求报文SYN = 1,seq = x发送给服务器, 客户端此时为SYN_SENT状态,等待服务器确认;2、服务器收到
SYN = 1,知道客户端要请求连接,ack = x + 1,ACK = 1,SYN = 1,seq = y发送给客户端,服务器是SYN_RCVD状态;3、客户端收到
ack = x + 1,然后把ack = y + 1,ACK = 1,发送给服务器, 最后服务器确认ack = y+ 1,然后建立成功,两方进入ESTABLISH状态.

-
四次挥手:
1、客户端发送一个结束
FIN = 1, 用来主动关闭和服务器的数据传输,停止发送数据,报文首部:FIN = 1,seq = u,随后客户端进入终止等待状态1,FIN_WAIT_1;2、服务端收到这个
FIN,发出确认报文ACK = 1,确认收到的序号是收到的序号+1,即ack = u + 1,且带上自己的序列号,seq = v,和SYN一样,一个FIN将占用一个序号;如果服务器要发送数据,客户端依然要接收,该状态会维持一段时间,服务端会进入关闭等待状态,CLOSE_WAIT,客户端收到服务器的确认请求后,进入终止等待2状态FIN_WAIT_2,等待服务器发送链接释放报文,3、服务器向客户端发送链接释放报文,
FIN = 1,ack = u + 1,此时服务端还处于半关闭状态,服务器可能还会发送一些数据,此时序列号为seq = w,如此,服务器进入最后确认状态,LAST_ACK,等待客户端的确认.4.客户端收到服务器的链接释放报文后,回发确认,
ACK = 1,ack = w + 1,序列号是seq = u +1,此时客户端进入时间等待状态TIME_WAIT,此时TCP连接还没有释放,必须经过最长报文段寿命的时间后,才进入CLOSED状态,MSL:最长报文段寿命,一般为2分钟,TCP连接释放时,主动方必须经过2MSL后才进入CLOSED状态,因此主动方关闭比较晚.

2.网络的OSI七层模型,并对应说说除了物理层外的各层功能,并说说各层中有什么协议? 还有 TCP/IP四层模型, 各层的协议?
OSI七层模型:
应用层运行访问OSI环境的手段,传输单位为APDU,主要包括的协议为FTP、HTTP、DNS、SMTP表示层对数据进行翻译、加密和压缩、传输单位为PPDU, 主要包括的协议为JPEG、ASII会话层建立、管理和终止会话,传输单位为SPDU,主要包括的协议为RPC、NFS传输层提供端到端的可靠报文传递和错误恢复,传输单位为报文,主要包括的协议为TCP、UDP网络层负责将数据包从源到宿的传递和网际互联,传输单位是包,主要协议是IP、ARP、ICMP数据链路层将比特组装成帧和点到点的传递,传输单位是帧,主要协议是MAC、LAN、PPP-
物理层通过媒介传输比特,单位是bit,主要协议是IEEE802.3、CLOCK、RJ45TCP/IP四层模型:应用层是用来给用户提供服务的,包含了各种应用服务协议:FTP,HTTP和DNS;封装成http数据;传输层是用来提供两台计算机之间的数据传输;包含TCP和UDP;给http数据打上tcp的首部;网络层是用来处理网络中传输的数据包;与对方计算机之间进行多台计算机或网络设备进行传输时,网络层就是在众多的选项中选择一条传输路线.再打上一层IP首部,数据链路层用来处理连接网络的硬件部分,如光纤、网卡、驱动、操作系统,再打上以太网首部
3.
HTTPS和HTTP之间的区别,为什么要使用HTTPS,HTTPS的实现原理(这三个是层层递进的问的,所以不要只知道HTTPS比较安全,使用了什么什么非对称加密和对称加密算法...最好是整个流程都去了解一下,如何获取公钥,数字证书有什么用,虽然工作中不是很重要,但是面试大家都是背八股文长大的,那不是更得知道的多才能显得你与众不同吗)区别:
底层:
HTTP底层是通过建立socket通道实现数据传输的,是基于TCP的安全可靠的协议;HTTPS是在HTTP的基础上加上安全套接字层SSL协议,构建的可进行加密传输、身份认证的协议;数据传输:
HTTP是以明文发送内容,不适合传输敏感信息;HTTPS是依靠证书验证服务器的身份,实现通信加密;连接方式: 两者使用完全不同的链接方式,
HTTP端口是80;HTTPS端口使用443.响应速度:
HTTP要比HTTPS响应速度快,首先都要先经过TCP三次握手,CS之间交换三个包,而HTTPS还要加上SSL握手需要的九个包,一共是12个包.
HTTPS实现原理:客户端发出请求
HTTPS与服务端建立SSL链接,然后服务端返回一个公钥证书,客户端产生一个随机对称密钥;
使用公钥加密对称密钥;
发送加密后的对称密钥,服务器给个回应;
使用对称密钥进行加密通信.
4.
ARP协议如何工作(这个也比较简单,但是后面会扩展问一些TCP,UDP的问题),会问某些场景是否使用TCP或者UDP,后面还转进了http1.0和1.1的长连接,感觉这个也是一个考点,记得不是很深刻了5.进程和线程的区别,为什么要有线程,线程拥有什么独立的资源, 多线程如何安全的访问进程中的资源,讲一下各种锁(这个也是八股文,操作系统必问,懂得都懂)
进程就是系统中正在运行的一个应用程序,可以理解为一个app;
线程是程序执行的最小单元,是进城中的一个实体,进程就是一系列的线程执行单元组成的
一个进程中可以有多个线程,但至少得有一个线程
多核CPU中,多个线程一起执行可以提高程序的执行效率
自旋锁:
互斥锁:
6.操作系统中的虚拟内存是什么,讲一讲
页面置换算法,是否有了解过三级缓存机制(也是递进的问的!三级缓存机制是APP开发常用的也会考查)7.最后有一道算法题,leetcode 59,螺旋矩阵
定义上下左右四个边界
内缩遍历
8.IP地址和MAC地址的区别?
MAC地址是物理层和数据链路层使用的地址,用来定义网络设备的位置,IP地址是网络层和以上各层使用的地址;IP地址是放在IP数据报的首部,而MAC地址是放在MAC帧的首部.
9.请介绍一个操作系统中的中断
中断是指CPU对系统发生的某个事件做出的一种反应,CPU
暂停正在执行的程序,保存现场后自动去执行相应的处理程序,处理完该事件后再返回中断处,继续执行原来的程序.中断一般分为三类:一种是由CPU外部引起的,如I/O中断,时钟中断,一种是来自CPU内部事件或程序执行中引起的中断,例如(程序非法操作,地址越界,浮点溢出), 最后一种是在程序中使用了系统调用引起的.
中断处理一般分为中断响应和中断处理两个步骤,中断响应由硬件实施,中断处理主要由软件实施.