好久没更新博文了,无论心态还是生活,都变得有些懒散,呵呵,,发下牢骚,以下正文:

生活总要有点激情,前几天在猎聘网站刷新了下简历,有几个猎头联系了豪鹫,我挑了其中一家游戏公司过去面试,面试过程1个半小时左右,已经变成运维老咸菜的豪鹫分享下此次的面试经历吧,欢迎网友留言探讨。。

**面试准备: **

面试经过: 约了14:30面试,提前5分钟到达战场,因会议室都有人在用,所以在前台沙发等了近25分钟。。

一轮面:运维总监面试 1、自我介绍 这个问题99.99%都会遇到,所以在面试之前,有必要自己先根据自己简历内容梳理一下,这个问题对面试官占有比较高的印象分,豪鹫是按照这样来回答: a、目前就职哪个行业哪家公司什么职位,具体的工作内容; b、在现就职的公司之前,在哪个行业哪家公司什么职位,具体的工作内容; c、然后对于xx行业,比如游戏行业的运维,也可以说一些自己的理解和看法; 当然,这些都是豪鹫自己的思路,仅供参考。

比如豪鹫的回答是: 目前我就职于xxx技术有限公司任职Linux系统工程师,是一家资讯行业的人工智能公司,那我负责的具体工作主要是:

(1)、负责服务器的维护、监控、系统环境部署,日志收集分析,故障排除等; (2)、与开发共同设计并实施服务器的高可用架构,制定并实施相关运维技术和场景应急方案,确保服务高效、稳定可用; (3)、代码更新上线,服务器扩容方案、故障分析与处理,Nginx负载均衡,数据库高可用方案设计及架构升级,saltstack运维自动化工具等; 在这之前也待过一家创业型的电商公司,也是服务器系统运维方面的工作。 在这两家公司,做过几个大的架构优化,比如:MySQL的高可用架构MHA,Redis哨兵模式,MongoDB副本集,ES集群,Nginx负载均衡等。 代码上线更新的话,不同公司用不同的解决方案,电商公司用的是shell+rsync,预发布环境代码从svn拉取,线上代码从预发布环境直接同步过去。 当前就职的这家公司,用的是gitlab+jenkins+shell/python页面+saltstack的批量部署。 对于项目运维经验,app,网站,后台都有一些运维经验,对于游戏行业的运维,我没有这方面的运维经验,但不少同学都是在游戏行业里面做运维的,所以有时候或多或少也会做一些运维方面的交流, 那游戏行业早期的架构也就是LNMP或LAMP,开服,合服,停服等操作都使用shell脚本维护,发展到最近3年左右,慢慢地有了自动化运维管理平台的概念,shell也慢慢过渡到以python为主的技术,对于像贵公司这种做游戏研发和平台维护的,可能大多数都是用python来做运维平台,通过运维来维护和更新上线等。

注意:我觉得最重要的是不要紧张,说重点,以及即便是没有做过游戏运维,但起码要让面试官知道你是有准备这方面的东西。工作内容我觉得只说最近两家公司的工作内容就行了,以上介绍下来,大概花3~4分钟左右,不长不短。

2、说一下MHA实现的原理和过程,并且MHA高可用架构有什么缺点? MHA是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件,目前来说是一个相对来说的高可用技术方案。 在MySQL故障切换过程中,MHA能做到在30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。 MHA主要由两部分组成:管理节点和数据节点。管理节点可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上。数据节点运行在每台MySQL服务器上,管理节点会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master。整个故障转移过程对应用程序完全透明。那比如我们现在生产环境用的MHA,就是用一主三从,其中一个从节点不参与主节点的选举,只做备份使用,而管理节点部署在其中一个从节点上。(最好结合自己生产环境来说明,让面试官觉得你是有过生产环境部署及维护的经验)

至于MHA实现原理,可参考以下: (1)从宕机崩溃的master保存二进制日志事件(binlog events); (2)识别含有最新更新的slave; (3)应用差异的中继日志(relay log)到其他的slave; (4)应用从master保存的二进制日志事件(binlog events); (5)提升一个slave为新的master; (6)使其他的slave连接新的master进行复制;

MHA缺点:(豪鹫说了4个,也不知对错,欢迎补充) (1)需要所有机器基于SSH免认证配置,存在一定的安全隐患。 (2)管理节点的监控进程,一旦发生一次主从切换,那么监控进程就会挂掉,需要重新启动,不过这个可以通过结合脚本来检查自启。 (3)切换过程还是会需要一小段秒级的切换时间,并不能真正严格意义上实现无缝切换。 (4)管理节点只对主库进行监控,不过这个也可以通过脚本对其他从节点的状态进行监控。

3、用户投诉说网站访问不了或访问慢,怎么排查问题? 这题目在生产也是经常遇到过,所以相对来说,还是不难回答,最好是回答排查思路以及解决方案,以下仅供参考,这道题目回答得还是比较细的 首先先确定是访问所有网站都慢还是只是单单你负责的网站慢。当然这句话很明显就是废话,既然问到这了,肯定指的是你维护的网站了。。呵呵。。 出现访问网站慢的原因: (1)如果是某个地区访问慢,如果有cdn的话,可能是那个地区的cdn节点出现问题。 (2)网站服务器出口带宽占满了 (3)服务器负载大 (4)网站代码质量问题、可以通过浏览器访问按F12查看哪些元素加载慢,或者代码中SQL语句未优化的问题 (5)数据库服务器瓶颈

优化办法: (1)CDN的问题,联系厂商 (2)流量带宽问题:花钱买带宽 (3)服务器负载问题:通过top等命令去查看占用资源较大的进程,具体进程具体分析 (4)代码问题:这个就需要跟开发协商处理 (5)数据库瓶颈:创建索引,分库分表,读写分离 (6)整体架构优化:水平扩容,添加负载服务器,使用缓存服务器(如redis等),集群高可用等

4、要统计访问网站访问量的前10个IP地址,具体怎么实现? 这个可以用shell或者python结合web服务器日志去统计,这个网上答案一大把,对于运维老咸菜的大伙们也应该不是问题。(用awk结合sort和uniq去实现)

5、在这么多年的运维工作中,给你印象最深的是遇到哪个难题,怎么解决的,你在解决问题中起到什么角色? 6、说下你之前待过两家公司的架构? 7、代码更新上线的流程是怎样的? 8、如果想将业务从阿里云迁移至腾讯云,你的方案是怎样的? 9、你对自己的职业规划是怎样的? 10、打算跳槽的原因? 10、有什么问题要问的吗? A.公司的运维团队是怎样分工的? B.如果我来公司了,我的工作内容? ……

**二轮面:HR面试 1、自我介绍 2、离职的原因? 3、打算跳槽的原因? 4、已经提离职了还是观望,最快可以什么时候到岗? 5、目前薪酬跟薪酬的要求? ……杂七杂八扯扯蛋 **