一、介绍自己、询问项目经验,详细询问项目中自己做了什么,遇到问题如何处理
二、手写插入排序算法实现,并对写的算法询问有没有优化的可能
三、手写堆排序算法实现,并询问各排序算法的原理、时间复杂度、空间复杂度
四、一个链表,遍历一遍,求倒数第K个数 我用的快慢指针,面试官问有没有更好的方法
五、数据库优化案例、数据库索引原理
六、美团应用实例,上游发送一个状态字,我要发送给下游,如何处理,使无论上游是否重复发送,我只向下游发送一次(异步线程)
七、计算机网络OSI七层模型和TCP/IP四层参考模型
八、输入一个网址后的过程
九、三次握手,为什么是三次握手而不是两次?如果是两次,会发生什么?
OSI七层网络模型和TCP/IP四层参考模型
OSI七层网络协议 | TCP/IP四层概念模型 | 对应网络协议 |
应用层(Application) | 应用层 |
HTTP、TFTP、FTP, NFS, WAIS、SMTP |
表示层(Presentation) | Telnet, Rlogin, SNMP, Gopher | |
会话层(Session) | SMTP, DNS | |
传输层(Transport) | 传输层 | TCP, UDP |
网络层(Network) | 网络层 | IP, ICMP, ARP, RARP, AKP, UUCP |
数据链路层(Data Link) | 数据链路层 | FDDI, Ethernet, Arpanet, PDN, SLIP, PPP |
物理层(Physical) | IEEE 802.1A, IEEE 802.2到IEEE 802.11 |
输入一个网址的过程?
1、浏览器查找该域名的IP地址
2、浏览器根据解析到得到的IP地址,向web服务器发送一个HTTP请求
3、服务器收到请求并进行处理
4、服务器返回一个响应
5、浏览器对该响应进行解码,渲染显示
6、页面显示完成后,浏览器发送异步请求
三次握手
要弄清TCP建立连接需要几次交互才行,我们需要弄清建立连接进行初始化的目标是什么。TCP进行握手初始化一个连接的目标是:分配资源、初始化序列号(通知Peer对端我的初始序列号是多少),知道初始化连接的目标,那么要达成这个目标的过程就简单了,握手过程可以简化为下面的四次交互:
(1) Client端首先发送一个SYN包告诉Server端我的初始序列号是X;
(2) Server端收到SYN包后回复给Client一个ACK确认包,告诉Client说我收到了;
(3) 接着Server端也需要告诉Client端自己的初始序列号,于是Server也发送一个SYN包告诉Client我的初始序列号是Y;
(4) Client收到后,回复Server一个ACK确认包说我知道了。