滴滴面试记
滴滴投的是运维研发岗,两轮面试都是视频面的,完成的不是很好。
1. TIME_WAIT 的作用
TIME_WAIT
是为了实现 TCP
全双工连接的可靠性关闭,用来重发可能丢失的 ACK
报文;需要持续2个MSL
(最大报文生存时间):假设应用程序端口在进入TIME_WAIT
后,2个 MSL
时间内并没有收到FIN
,说明应用程序最后发出的ACK
已经收到了;否则,会在2个MSL
内再次收到ACK
报文。
2. tcp 四次分手
3,500 和 502 的区别
500 Internal Server Error(内部服务器错误):服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
502 Bad Gateway(网关故障):作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
4,ping 使用的是什么类型的数据包
请求回显的包
5,根据端口查看进程名
# lsof -i:+端口号
6,查看系统的连接数
使用 ss
或者 netstat
都可以查看
7,app 打开慢,说下该如何查找问题
这个分析了半天
8, 当删除一个文件后,磁盘的空间不变
文件正在被进程使用,删除文件后,进程将仍然可以读取该文件,磁盘空间也一直被占用。
使用以下命令查看已经被删除但是仍然被应用程序占用的文件列表:
# lsof |grep deleted
9,找出大于 2G 的文件并删除
我对命令还是非常熟悉的:
# find ./ -type f -size +2G -exec rm -f {} \;
# find ./ -type f -size +2G | xargs ls -l {}
10,traceroute 的原理
这个不太了解,只知道 traceroute
的作用
主要的原理是IP
路由过程中对数据包TTL
(Time to Live
,存活时间)的处理。当路由器收到一个 IP
包时,会修改 IP
包的 TTL
(及由此造成的头部检验和checksum
变化)。每收到一个包,检查这个包的 TTL
是否是 0 或 1。如果是,表明这个包还没有到达目的地,而且剩余时间不多了,肯定是到不了目的地了。这样路由器就简单地丢弃这个包,并给源主机发送 ICMP
通知,说这个包已经超时了。ICMP
的通知信息里包含当前路由器发送时所用的IP。
这样就可以通过构造数据包,来间接检查到 达一个主机时经过了哪些路由。一开始发送一个TTL
为 1 的包,这样到达第一个路由器的时候就已经超时了,第一个路由器就发通知说包超时,这样就可以记录下所经过的第一个路由器的IP
。然后TTL
加 1,安全通过第一个路由器,而第二个路由器的的处理与第一个相同,丢包,发通知说包超时了,这样记录下第二个路由器IP
,由此可以一直进行下去,直到这个数据包到达目标主机,由此打印出所有经过的路由器。
11,滴滴客户端与服务器交互的过程
分析了一下 ISO 七层模型之间的数据传输
12,如何让一个服务开机自启
1,可以写一个服务脚本,将服务加入到 chkconfig list
中,然后设置开机自启。
#!/bin/sh
#chkconfig:2345 80 90 运行级别 启动级别 关闭级别
#description:auto_coreseek
2,将执行服务的命令写在 /etc/rc.d/rc.local
文件中
滴滴的面试官其实还算 nice
,二面一上来先是让写一个算法题,也不是很难,十多分钟用 C
写完了,但是AC
不了,给面试官说了下思路,面试官说还不错,然后又让写一个简单点的算法,确实不是很难,用 python
大概也就十分钟写完了,面试官看了下说你还挺熟悉 python
的,然后不让写代码了,就聊了下 Linux
的一些命令等,还问我可以来实习吗,我说要是能拿到 offer
可以考虑去实习,然后大概给我介绍了一下他们部门的情况。