面试复盘 | 哔哩哔哩客户端一面面经
1、项目
2、计算机网络五层模型
• 应用层 支持各种网络应用 FTP、SMTP、HTTP、DNS
提供应用层协议,方便应用程序之间进行通信。
• 传输层 进程-进程的数据传输 TCP、UDP
传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。
• 网络层 源主机到目的主机的数据分组路由与转发 IP、ICMP、OSPF
将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方,通过路由选择算法为分组通过通信子网选择最佳路径。路由器工作在这一层。
• 数据链路层 把网络层传下来的数据报组装成帧 Ethernet PPP。
在不可靠的物理介质上提供可靠的传输,接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路。提 供物理地址寻址功能。交换机工作在这一层。
• 物理层 比特传输。
主要解决两台物理机之间的通信,通过二进制比特流的传输来实现,二进制数据表现为电流电压上的强弱,到达目的地再转化为二进制机器码。网卡、集线器工作在这一层。
3、输入https://www.bilibili.com会发生什么
- 根据域名查询域名的IP地址
先查找浏览器缓存(如果曾经访问过该域名且没有清空缓存则存在)
如果没命中,查询系统缓存,即hosts文件(C:\Windows\System32\drivers\etc)。
如果没命中,查询路由器缓存。
如果没命中,(以UDP数据报的形式)请求本地域名服务器解析域名,没有命中就进入根服务器进行查询(根服务器会会在收到请求后,查看区域文件记录),没有命中就返回顶级域名服务器IP给本地DNS服务器。本地DNS服务器请求顶级域名服务器解析,没有命中就返回主域名服务器ip给本地DNS服务器。本地DNS服务器请求主域名服务器解析域名,将结果返回给本地域名服务器。本地域名服务器缓存结果并反馈给客户端。
- 通过ip寻址和arp,找到服务器,建立TCP连接(三次握手)
- 发送HTTP请求
- 服务器处理请求并返回响应结果
- 关闭TCP连接(四次挥手)
- 浏览器解析渲染页面
4、为什么TCP三次握手?两次不行吗?
防止已经失效的请求又传送到了服务端,建立了多余的连接,造成资源的浪费;两次握手只能保证单向连接是畅通的,如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
5、TCP四次挥手?两次不行吗?
因为TCP是全双工通信,每个方向都要发送关闭请求,另一方相应的返回确认信息
6、MSL是什么??具体值一般是多少?
MSL,一个数据分片(报文)在网络中能够生存的最长时间,在RFC 793中定义MSL通常为2分钟,即超过两分钟即认为这个报文已经在网络中被丢弃了。
查看默认的MSL值(60s):
[root@DanCentOS65var]# cat /proc/sys/net/ipv4/tcp_fin_timeout
修改默认60为120:
[root@DanCentOS65var]# echo 120 > /proc/sys/net/ipv4/tcp_fin_timeout
7、数据库的事务的作用
8、事务有几种模式
9、网络层如何将一个分组从客户端传到服务器的?
10、线程与进程的区别?
11、如何实现两个进程间的互相通信
12、做项目负责人的感触
13、手撕:合并两个有序链表
大概40min吧,面试官人很nice~
#面试复盘##面经##校招##Java工程师#