前段时间依然裸辞了,上一份工作是某事业单位,身边的朋友就不明白我为啥要辞掉那么好的工作。其实吧,我觉得对于好这个定义,一直以来都是相对的,而不是绝对的。至于明白的人都知道,事业单位办事情相对于企业而言,还是有很大差别的。比如在工作效率方面,事业单位比较稳打稳扎,效率可能比较慢。企业、公司追求效益,要求的效率极高。这也是我一直想去互联网公司看看,所以就裸辞了,到跟团队老大提离职到交接完成总共就四天。这个我还是比较诧异的。不管怎么说,能这么快离职,也是这篇博客诞生的原因。
- 之前早就想记录下自己面试的过程,但是入职之后一直比较忙,所以趁着这几天放假,就先立个牌坊,把这次面试记录下来吧。为以后回顾这一路,也好做个准备。
因为刚好那天目前公司的技术刚好在,所以全程都是技术面。面试的大概内容就是以下:
1. Tcp握手过程
TCP 中有三次握手,四次挥手。
三次握手
- 第一次握手:
建立连接。客户端发送连接请求,发送SYN报文,随机生成seq,本例默认为0。然后,客户端进入SYN_SEND状态,等待服务器的确认。
- 第二次握手:
服务器收到客户端的SYN报文段。需要对这个SYN报文段进行确认,发送ACK报文,将ack设置为1(ack值为对方seq+1或者seq+L(数据长度L))。同时,自己还要发送SYN请求信息,将seq为0。服务器端将上述所有信息一并发送给客户端,此时服务器进入SYN_RECV状态。
- 第三次握手:
客户端收到服务器的ACK和SYN报文后,进行确认,然后将ack设置为1,seq设置为1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
四次挥手
- 第一次挥手:
客户端向服务器发送一个FIN报文段,将设置seq为100和ack为120,
此时,客户端进入 FIN_WAIT_1状态,这表示客户端没有数据要发送服务器了,请求关闭连接; - 第二次挥手:
服务器收到了客户端发送的FIN报文段,向客户端回一个ACK报文段,ack设置为101,seq设置为120;
服务器进入了CLOSE_WAIT状态,客户端收到服务器返回的ACK报文后,进入FIN_WAIT_2状态; - 第三次挥手:
服务器会观察自己是否还有数据没有发送给客户端,如果有,先把数据发送给客户端,
再发送FIN报文;如果没有,那么服务器直接发送FIN报文给客户端。请求关闭连接,
同时服务器进入LAST_ACK状态; - 第四次挥手:
客户端收到服务器发送的FIN报文段,向服务器发送ACK报文段,将seq设置为101,将ack设置为121,
然后客户端进入TIME_WAIT状态;服务器收到客户端的ACK报文段以后,就关闭连接;此时,客户端等待
2MSL后依然没有收到回复,则证明Server端已正常关闭,客户端也可以关闭连接了。
2. MQTT 服务质量等级Qos
> QoS(Quality of Service)等级是发送与接收端的一种关于保证交付信息的协议。
一共有三个等级:
- QoS 0 – 最多一次传输
消息是基于TCP/IP网络传输的。没有回应,在协议中也没有定义重传的语义。消息可能到达服务器1次,也可能根本不会到达。
- QoS 1 – 至少一次的传输
服务器接收到消息会被确认,通过传输一个PUBACK信息。如果有一个可以辨认的传输失败,无论是通讯连接还是发送设备,还是过了一段时间确认信息没有收到,发送方都会将消息头的DUP位置1,然后再次发送消息。消息最少一次到达服务器。SUBSCRIBE和UNSUBSCRIBE都使用level 1 的QoS。如果客户端没有接收到PUBACK信息(无论是应用定义的超时,还是检测到失败然后通讯session重启),客户端都会再次发送PUBLISH信息,并且将DUP位置1。当它从客户端接收到重复的数据,服务器重新发送消息给订阅者,并且发送另一个PUBACK消息。
- QoS 2 只有一次的传输
在QoS level 1上附加的协议流保证了重复的消息不会传送到接收的应用。这是最高级别的传输,当重复的消息不被允许的情况下使用。这样增加了网络流量,但是它通常是可以接受的,因为消息内容很重要。
3. Socket长连接断开原因及解决方法
长连接会存在断开的情况,而断开原因主要是:
- 长连接所在进程被杀死
- NAT超时
- 网络状态发生变化
- 其他不可抗因素(网络状态差、DHCP的租期等等 )
解决方法:
- 进程保活
- 心跳保活机制(着重讲了Mina)
- 断线重连机制
5. 各种类的初始化顺序
- 这个问题之前写过一篇博客,详细可参见以下:
Java 类初始化顺序 https://blog.csdn.net/CalledJoker/article/details/88886347