早上接到蚂蚁金服的运维面试电话,有点突然袭击,下面是整个的面试记录。
首先,面试官先向我讲述了一下他们平时运维的工作内容,然后结合我的简历开始提问。
1)都用过我们的什么产品?
这一阶段老老实实、正常回答工作中所用到的阿里云产品和使用情景。
2)VPC网络有哪些好处?
我就答出来更加安全…面试官说其他方面呢,我就不知道了。
【事后补充】VPC网路的灵活性更高,可以自由定义网段划分、IP地址和路由网络。
3)一个vpc的服务器如何与外网交互?
我说可以改写路由或者通过iptables
转发。
4)iptables里PREROUTING和POSTROUTING都是啥?PREROUTING
处理刚到达本机并在路由转发前的数据包;POSTROUTING
处理即将离开本机的数据包。
5)问:RDS在什么操作下会CPU飙升,任举一例?
答:在我实际工作中,比较明显的是在数据同步的时候会飙升。
6)RDS为什么会在DTS的时候有飙升的现象?
这个我答的不好,有点东拉西扯…(尴尬)
7)mysql备份的时候使用过什么参数?
答:--skip-opt
防止运行中的MYSQL锁库
加速数据备份的参数是什么?-q
提高导出性能-e
提高导入性能,使用包括几个VALUES
列表的多行INSERT
语法;--max_allowed_packet=XXX
客户端/服务器之间通信的缓存区的最大大小;--net_buffer_length=XXX
TCP/IP和套接字通信缓冲区大小,创建长度达到net_buffer_length
的行;
注意!max_allowed_packet
和net_buffer_length
在mysql里有参数值,不能超过参数值!
查看方法:show variables like 'max_allowed_packet';
8)cache和buffer有什么区别?cache
是缓存,弥补高速设备与低速设备的鸿沟引入的中间层,达到数据快取的目的(救火车与蓄水池);buffer
是缓冲区,用户流量整形,把大量的小的io整理一个平稳的大io,减少磁盘响应次数;buffer
是即将要写入磁盘的,cache
是要被从磁盘里读出来的。当然这只是普通用途,buffer
用来读、cache
用来写也是有可能的。具体问题具体分析。
9)他俩的调用有什么区别?
我问是要说“块读取”什么的么,面试官说是。我就蒙说cache是块读取,buffer我不清楚…(尴尬 again)
【事后补充】
10)谈一谈time_wait和close_wait,各自在什么情况下出现?time_wait
和close_wait
是出现在“四次挥手”的环节里,time_wait
是服务器接收到客户端发来的断开TCP连接的请求,并且服务器发送确认断开的包给客户端,此时服务器处于time_wait
状态,如果服务器等待两个msl
的话,就会默认断开连接,如果想修改msl
可以通过修改/etc/systl.conf
文件;close_wait
是客户端已经发送了断开TCP请求,但是服务器端没有接收到,也就是time_wait
的上一步,此时这个资源就一直被程序霸占。
11)为什么time_wait需要等待两个msl?1.99行不行?2.01行不行?
我当时说防止上一次连接中的包,迷路后重新出现,影响新连接。面试官好像觉得不是很满意…(尴尬 again)
【事后补充】MSL是指一个片段在网络中的最大存活时间,2MSL是一个发送和一个回复所需的最大时间,如果直到2MSL,客户端都没有收到fin包,那么客户端就可以断定他发出去的ack已经被服务端接收,结束TCP连接。
12)说出一个你使用过的python库。
我说我前两天用matpoltlib
画图,就谈了谈这个画图的库。
13)python装饰器了解么?
没什么深入的了解,就没敢答,怕被问死。
14)僵尸进程和孤儿进程,了解么?
马蛋,这个让我给说反了…(闹心啊啊啊啊啊啊啊)
【事后补充】孤儿进程:父进程退出,而它的一个或者多个子进程还在运行,这些子进程就叫孤儿进程,孤儿进程被init进程收养,由init进程对它们完成状态收集工作;
僵尸进程:一个进程用fork创建了子进程,然后这个子进程退出了,而父进程并没有调用wait或者waitpid去获取子进程的状态信息,那么这个子进程的进程描述符还在系统中,这种进程叫僵尸进程;
孤儿进程不怕,由于孤儿虽然没有父母,但是有民政局(init进程)收养,孤儿进程退出后也有init做一切善后工作;而僵尸进程会一直霸占其PID号,但是系统总共的PID是有限的,这样就会让可用的PID越来越少,所以僵尸进程是要避免的。