前端实习面试小米一面2022/4/7

656 阅读5分钟

这个面试官是我见过最好的!!!有互动,在我答不上来题的时候说没事没事。 首先和我确认了实习时长能否出校的事情,然后介绍了面试流程,项目介绍,基础知识,算法考察,大概45min。 面试官看我的简历就是说我目前的项目经历没啥好聊的就跳过了。(感觉刷题就没时间跟项目做了,一个题做太久,一天也刷不了几个题哭了。教训就是应该越早刷题越好,不要等到准备面试再开始刷题,因为面试也会考一些js手写面试题还得过。)

2022/4/8没有收到结果估计g了。感觉问的题目越简单其实越考验,因为我看了别人总结的回答,广度深度都有,而我只肤浅的停留在表面。

  • 0.你提到学习能力还不错,那如果说让你独立做一个小模块,你能做到吗?
  • 1.http和https的区别
  • 2.get和post请求
  • 3.OSI网络模型,每一层是干嘛的
  • 4.三次握手和四次挥手
  • 5.http状态码
  • 6.常见的排序以及时间复杂度
  • 7.js写了一个冒泡排序
  • 8.找出字符流里面第一个出现一次的字母
  • 9.输入url网址敲回车发生了什么

我说不能很肯定的说独自能完成这个模块,因为不知道这个模块的难易程度,很难的话,也是可以通过寻求帮助,相信自己还是可以做到的。

[](史上最详细的经典面试题 从输入URL到看到页面发生了什么? - 掘金 (juejin.cn)) [](面试官,不要再问我三次握手和四次挥手 - 掘金 (juejin.cn))

基础知识:

  • 建立连接需要发送syn同步包,收到方收到后也需要发送syn包
  • seq是sequence的简写,是序列号
  • Ack是acknowledge的简写,是确认号(包),值为期望收到的下一个序列号
  • 确认号ack包只有ACK标志位为1时有效。
  • 确认方Ack=发起方Req+1,两端配对
  • 断开连接双发需要发送fin包
  • 为什么需要序列号,因为数据分开传的,用序列号标识数据,为了收到方能还原数据顺序

自己的话说就是:发起连接发送一个syn同步包,设置序列号seq=x,同步syn=1,进入syn_send等待状态,

接受方收到后发送一个syn+ack同步包和应答包,syn=1,ack=x+1,seq=y,进入syn_rece状态,

发起方收到后发送一个确认ack报文,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

结束连接发fin,建立连接发syn包。

image.png

三次握手保障了什么1.第一次,客户端知道服务端的发送能力,第二次服务端知道客户端的发送,接受能力,和自己的发送接受能力,但此时服务端并不知道客户端的接收能力,于是第三次,服务端知道客户端的接收能力。通过三次握手确定了发送双方的接收发送能力正常,防止失效的连接请求报文到客户端,如果客户端不验证服务端的接收能力,直接同意连接,那么客户端就会等待服务端发送这个数据,消耗资源。

四次挥手:发起方不一定总是客户端,这列假设发起断开连接是客户端。

发起方发送fin包,finish,表明不会再发数据了,但是fn包之前,发送的数据,如果没有收到客户端ack包应答,还是会重新发送,此时客户端进入fin_wait1状态.fin=1,seq=u;

此时服务端收到后发送一个确认ack包和自己的序列,seq=v,ack=u+1;此时客户端就进入Fin-wait2状态,等待服务端发送fin包,此时客户端处于半关闭状态,客户端会接受服务端的数据,服务端是close-wait状态。

服务端发送fin包和确认序列号ack=u+1,ACK=1,seq=w。表明数据发送完了,进入最后确认last-ack状态。

客户端收到包后发送一个确认包ack=w+1,ACK=1,seq=u+1,这时客户端处于time-wait状态。 需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。 即客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。

image.png

为什么是三次握手,对应的是四次挥手,三次挥手可以吗?不行,因为服务端接收到fin包后可能还有数据发送,只能先发一个ack确认包,等数据发送完毕再发送fin包。而三次握手里面服务端收到syn包,可以同时发送syn+ack包。

为什么要等到2msl结束后再断开tcp连接,因为为了以防万一,如果最后发送的确认ack没有到达服务端,客户端可以重传。MSL-报文最大生存时间.