秋招基本结束,关于运维的面经!
作为一名渣硕,找工作陆陆续续从今年的三月份开始断断续续的刷一些题,看基础到八月份的猛攻阶段,到此,算是得到了一个不错的收获,也拿到了几个offer,算是对自己的一个交代了。
首先,找工作的方向,运维研发或是运维,所以面经方向主要是针对运维或者运维研发
一.介绍岗位
面试的时候很多面试官都会问,你为什么会选择这个方向?你对这个方向了解有多少?有没有看过相关方面的书籍等。在此,粘一段SRE Google运维解密书中的一段话:
SRE团队要承担以下几类职责:可用性改进、延迟优化、性能优化,效率优化,变更管理,监控,紧急事务处理以及容量规划与管理。
贴几个有代表性的公司对于这个岗位的要求:
1.网易游戏(运维工程师SRE)
您可以:
- 通过编写脚本、工具和平台,提升运维自动化水平,高效的完成业务在大规模集群上的部署、升级、扩容、缩容等,促进游戏的快速迭代,让玩家及时的体验到更好的游戏品质;
- 研究和优化服务器部署架构,包括操作系统选用、内核定制,系统优化,提高系统的运行效率,结合合理的容量规划,承载数百款游戏的流畅运转;
- 监控网络游戏业务的运行状况,及时处理游戏运行中出现的故障,保障网易游戏的正常服务。;
- 配合优化运维规范、工作流程、应急预案等,确保任何突发情况都能高效响应;
- 面向海量业务数据,挖掘潜在问题,以及高价值的优化点,辅助运营决策,提升网易游戏的服务质量;
- 深入参与到虚拟化、云计算、大数据、DevOps等多个方向,成长为运维领域专家,树立行业标杆。
我们希望您具备以下条件:
- 熟悉Linux系统以及工具命令等使用,熟悉主流开源软件的配置及调优,有底层基础技术研发经历的优先;
- 熟悉至少一种程序设计语言,有Shell、Python等脚本编程语言经验者优先;
- 对计算机硬件设备、网络设备有一定了解,熟悉TCP/IP以及具有丰富的网络知识;
- 具有很强的问题解决能力,重视流程规范,有很好的技术敏感度,在开源社区活跃并有积极贡献者优先;
- 计算机或相关专业,本科及以上学历。
2.百度(运维研发工程师)
工作职责:
-负责百度搜索引擎、核心商业平台、大规模分布式系统及各类在线服务的可靠、稳定、高效运行
-参与产品架构设计及自动化系统的实现,满足严格的质量与效率要求
-设计、开发端到端的解决方案,包括网站访问、持续交付、容量评估、故障分析、配置管理、流量分配、性能调优等
-探索运维自动化和智能化的技术和方向
职责要求:
-对分布式集群、架构、开源技术有火一样的热情
-深入理解Linux操作系统、体系结构
-至少精通一门开发语言,如C/Python/Shell/Perl等
-有良好的编程基础和debug能力,熟悉网络知识及典型协议原理
-良好的逻辑思维和分析能力,热衷于解决问题、追求极致
-强烈的责任心、进取心和团队合作精神
-geek精神,乐于更新知识、快速学习和跨学科跨领域解决问题
3.美团(SRE工程师)
岗位职责:
在这里,你将参与以下工作:1. 维护:处理日常运维需求,包括运维变更、资源管理、服务管理、故障响应等; 2. 开发:开发匹配的自动化工具提升运维效率; 3. 运营:收集和分析线上系统的各种运营数据,找到系统风险点,推进改进项目。
工作要求:
1. 本科或以上学历,计算机相关专业;
2. 精通或熟练掌握至少一种编程语言(Python、Java、Ruby、Go、Shell、Php等),并有相关的项目经验;
3. 熟悉Linux下基本的命令行工具,熟悉Linux系统的使用和管理;
4. 了解操作系统相关知识,熟悉TCP/IP、HTTP等协议;
5. 了解关系型数据库的基本原理,熟练使用MySQL/Oracle/Sql Server等中的一种;
6. 具有良好的团队合作意识,强烈的责任感,优秀的表达和沟通能力。
7. 加分项:
1. 提供技术blog者; 2. 开源项目贡献者,github等社区活跃者。
摘取了三个公司对于运维或者运维研发要求的岗位工作要求,来划重点,首先,会一门编程语言是必须的,现在的运维更讲究自动化的运维,所以开发经验也是要有的,并不是说一点开发都没有,然后数据库、网络、操作系统、Linux系统等这些计算机基础也都是必须的,所以其实运维并没有像普遍所说的,修电脑,并没有那么简单!
二.准备工作
1.技术实力的积累
技术的基本功绝对不是靠恶补几天或者是什么21天速成这些,真正的实力是一步步积累起来的,每一步的踏实积累学习,遇到问题的不断突破解决,都是你的实力。
主要说运维,从工作要求来看,首先linux系统熟悉是必须的,网络数据库操作系统的掌握也是必须的,一门开发语言,学习的同时也要注意整理,防止之后会忘记,好记星比不上烂笔头的,温故还知新了!当然并不是要做到所有的都会,但是一定是有一个是很很擅长的,这样才是你的优势,不然你要拿什么脱颖而出!
2.各种内推信息渠道或者工作信息的获取
找工作绝不是靠自己闷头苦干的,因为可能大批的内推或者是一些招聘信息都是有时间要求的,错过了就是错过一个机会,所以,多去找一些求职网站或者内推公众号,或者抱紧学长学姐的大腿,及时多探一些信息,不要机会白白错过!当然,不要什么都瞎投,要有自己的方向,可能内推的时候还好,但是真正到九月招聘季的时候,公司无比之多,不可能所有的都跑遍!
推荐几个靠谱的找工作微信公众号工作网站:
内推军,各大公司内推方式基本都会每天发送,在678月黄金内推时期,如果过了,那么其实直接可以避免去挤校招大军了,当然如果没过,也可多一次面试的机会!
牛客网,一个非常非常好的网站,强推荐,良心网站!
面试指南针,会有一些面经求职攻略汇总。
招聘信息汇总,校招日历
海投网,校招期间会有各个宣讲会的信息公布
梧桐果,针对校招应届生的求职网站
等等各种,只要你有心,都会找到的!
3.简历的制作
一份好的简历,是你求职给面试官展现的第一份资料,所以重要性就不言而喻了,简历怎么写的资料太多了,花点心思自己找找总会有的。
我自己觉的几个重要的点:简洁有干货,投其所好,想象着你是面试官,拿一份你这样的简历,会不会想面你;简历上所写的技术项目要做到都能掌握,甚至可以延伸,不要随便瞎写,自己都说不清,如何指望面试官会录用你!
三.资料整理
以下是自己对这个岗位所需要的一些知识点做的一个简单总结,当然肯定不可能涉及到方方面面,大家可以做参考
1.Linux系统
- 基本命令(系统性能信息的各种查看命令、可能会继续向下延伸:比如实时CPU负载的获取、网卡流量的抓包获取等,建议有多详细整理多详细。防火墙,文件查看,各种常用命令,请参考鸟哥基础等等。);
- 开机启动过程,run level各个级别的意思;
- 文件系统区别;
- shell脚本对于日志文件获取有用信息的处理;
- shell中常使用参数的意义;
- Awk、sed等工具的使用;
- 软链接、硬链接;
- 常见的运维相关知识;
2.网络
TCP和UDP常见的:
- tcp和udp的区别
- tcp保证可靠的传输机制
- tcp的拥塞控制流量控制,拥塞控制中的四个算法
- 三次握手四次挥手,以及其中各个状态的转换
- 为什么是三次和四次
- SYN攻击以及解决办法
- Time_wait等待的意义
- 回退N帧协议
HTTP常见的:
- 常见状态码
- 长连接短连接
- Get和Post的区别
- http版本的区别
- 格式
- DNS的解析过程
- DNS中的字段
- 如果DNS解析出现错误,解决的思路是什么?DNS的工作原理是什么?
常见的其他问题:
- Ping和traceroute的工作原理
- 路由和交换机的区别
- 路由协议OSPF、BGP的区别(这个一般很少问,除非你说你懂网络协议)
- 输入网址后,背后发生了什么?
- B/S和C/S的区别
3.操作系统
进程和线程的区别:
- 进程的切换方式?在进程处于就绪态时还会有发生哪些事情?进程的状态
- 线程与线程同步的方式有哪些
- 进程的通信方式有哪些
- 操作系统的常见进程调度算法
死锁的四个条件,解决与避免的方法
IO模型以及同步异步阻塞非阻塞的区别
分页和分段有什么区别
数据从内存写到磁盘上发生的过程,具体行为是什么
4.数据库
事务:
- ACID性质,其中各个性质的含义
- 隔离级别
- 脏读、丢失修改、不可重复读
常见的SQL语句(内外联结)
数据库的锁机制
索引、视图
Mysql常见的引擎及区别
Mysql的四种日志的意义
数据库的备份等
Mysql的优化
Mysql的复制
5.Python
- 深拷贝和浅拷贝
- 闭包、装饰器
- 迭代器、生成器
- 多线程
- 内存管理
- 垃圾回收机制
- *args,**kwargs
- 语法规则的掌握
- 如果你是想纯靠python做笔试题的话。多用python刷一刷常见算法,牛客网上有很多。
6.运维相关的
Docker
高可用。负载均衡
Nginx、lvs、keepalived、监控、cdn等很多,这些有擅长的点,也不用做到全会,视自己情况定。
7.数据结构
常见的查找排序算法
图、树、链表等各种知识点
刷牛客题吧
四.面经整理
陆陆续续的也面了很多家,PO一些部分公司的面经吧:
1.实习的360面
- 自我介绍
- 对运维研发的看法
- Linux在一个文本下有一列的IP地址,如何统计每个ip地址出现的次数
- netstat命令,问的是如何查看8080端口的链接数
- 何时会处于time_wait状态
- Hadoop、Mapreduce
- 由于是第一次面试,没准备过,所以肯定挂了
2.亚马逊的实习面(三轮),不是合适的岗,面试过程中已经表现的很强烈不想去,所以肯定没过!
一面电话面:
网络方面:
网络的路由协议有哪些?
如果有一个中小型企业,需要配置网络,你会怎样去给设计路由协议?
各个常见协议的端口号
有一个三层交换机,如何配置能够使不同部门访问不同的网络
需求是让一部分人去访问网,另一部分人不可以!有什么方法可以设置
ping协议原理
如果发现网络中出现网卡的问题,如何去定位到具体的设备,以及找到具体的端口流量,如何去处理,在telnet不到的情况下,如何找到具体的某个端口?怎样知道这个交换机上哪个端口流量大,如何处理?
如果定位到了Ip地址,如何得到mac地址和端口,arp协议
两地网络断了,如何用一条命令排查?Traceroute
如果HttP的80端口开启,是不是会有一个默认的网页出来?
项目方面:
当时做这个的原因是什么?数据从哪来的?主要分析什么?你主要干的什么?
hadoop主要是用来存储的,怎么做数据分析,它在数据处理上的优势是什么?当初选hadoop的理由是什么?有没有和其他的系统做一个比较?为什么选择这个
Linux:
- 因为简历上写了使用的是centos6.5,就自然的过渡到了安装系统的环节
- centos6.5在本机上是如何安装的,用什么方式安装的?(KVM、VMware)
- 安装linux系统内核默认是放在了哪里,哪个文件下?是/boot下的一个什么文件
- Grub2引导,系统启动的第一个进程号是什么?Init
- Linux系统启动的引导过程具体得详细了解
- 系统默认开机启动某个服务的命令或者是哪个文件,在哪个文件下设置的,iptables
- 自己写了个脚本,需要开机自启动,需要怎么设置,把这个脚本放在哪里,rc.local文件
- 系统启动自动挂载设置是在哪个文件?
- LVM逻辑卷设置的过程
- Mirror镜像卷的作用,镜像卷是什么?
- 调带卷是什么?
- Raid0 Raid1是什么?具体的用途?Raid1的利用率是百分之几?RAID0和RAID1的主要原则和利用场景,真正用它们的目的是什么?
- 文件系统与系统分区的关系
- 系统内核的查看命令
- 查看系统中查看使用进程的命令
- 网卡的配置文件
- 计算机的硬件组成
- 云的理解
英语
- 对于外企,准备些口语的常问问题,比如兴趣爱好,工作这些,不至于到时候什么都回答不上来,脑子里连个英文单词都蹦不出来!等等一些常见的口语问题
- 对于未来的规划
- 对工作的一些展望什么的
二面三面一起视频面:
- 系统启动过程,runlevel级别
- 修复故障思想
- windows蓝屏如何处理等
英语对话
二面三面具体问的想不起来,总之也是围绕着常见的问
这个岗是硬件方面的运维
3.百度(内推)
tcp和udp的区别
tcp里边拥塞控制慢启动的原理,滑动窗口默认值?
OSI七层
进程和线程的区别
产生死锁的四个必要条件和解决办法
进程是如何切换的?在进程处于就绪态时还会有发生哪些事情?进程的状态
Linux:
查看Linux系统的一些命令
可以看到cpu的所有的命令,尽量说
ps结果从哪调用
文件系统
Python
设计题
海量IP数据的存储,两个文件,合到一起,去掉重复的,怎么设计?
其他的都是在聊做的项目,项目涉及的知识点的拓展等,拓展到数据库索引上,最后挂在深挖索引数据库这里。
4.美团(内推)
linux方面
top命令,top命令下可以看到哪些东西
统计出一个文件中第一列的ip地址,awk,uniq,sort
查看网络端口的状态,看进程
常用的打包工具命令
查看网卡的流量,通过这个网卡的流量
查看系统的性能方面的命令
linux操作系统启动的过程,每一步可能涉及到的系统文件具体是什么文件,然后网卡、路由配置等等这些常见的系统配置文件
网络就是动态路由的理解
网络
http协议get和post的区别
TCP和udp协议的区别,各自的应用场景
数据库
事务的特性、事务是什么,事务的持续性是指什么
在数据库方面,建表时,除了简单的create语句建表,后面还有没有交什么别的参数?
mysql常见引擎的区别
慢查询日志
有没有做过一些对数据库的优化
Python
装饰器
写程序
其余一面或者二面剩下的都是在聊项目
项目的背景
项目完成后可以实现的结果,可以应用到的实现场景和价值什么
项目中哪些自己做的东西能够体现出自己的技能
和别人是如何合作的
项目中自己完成了什么?
项目中的思想框架、技术、运用的技术的拓展等各种深挖
光荣的挂在了一个前台框架的深挖上
5.商汤科技(四轮,第一轮电话,后三轮视频面试)
第一轮:
基础
Linux
查看系统版本命令,查看系统内核命令,查看CPU系统负载,查看磁盘情况,查看io情况,内存情况,端口状态等各种常见的系统性能查看信息
重定向,错误输出,正确输出,全部输出
将命令打到后台运行的命令,nohup
Mysql
常见的引擎,Innodb引擎的特点和MyIsam的好处
事务四种的隔离级别
Mysql是单进程还是多进程的数据库
Shell
$?(命令回传码),若前一个命令执行的结果
写脚本最前边那个一行是啥
与面试官的聊天中得到了一些对项目的建议,看书的建议,论坛的建议什么的
第二轮:
网卡收到数据后发生的一系列过程
输入网址会发生什么
TCP、UDP的区别
Send()函数网络编程python有返回值,能说明发送成功吗?
十进制与二进制的转换
NTP协议
搭建了哪些服务
单例模式
编程题,处理字串问题
find命令
Mv rename命令
sed替换命令
喜欢的书,喜欢做的事,平常的生活规划
喜欢什么样的公司
还有一个智力求解问题
第三轮:
由于第三轮的面试官是第一轮面的
所以基础没怎么问
直接敲代码
敲了三道题
第四轮:
如果挂,绝对是挂在第四轮上
分布式系统的理解
分布式数据库的理解
分布式存储为什么存奇数份,不存偶数份
敲二叉树和快排
6.拼多多(学霸批)
笔试>一面>二面>hr面
一面
首先,自我介绍
简历上的两个项目,详细介绍一下(项目发起的原因,有没有什么实用价值?)
顺着项目问,hadoop的相关运维了解哪些?
对运维的理解,为什么会选择运维?
最熟悉的负载均衡架构是什么?
如果DNS解析出现错误,解决的思路是什么?DNS的工作原理是什么?
tcpdump抓到的包如何分析?
Docker的基本工作原理?
对运维的哪一个方向有兴趣?
二面
自我介绍
项目了解
apache和nginx的区别
nginx的用途。以及和lvs的区别
7.盖娅互娱(校招)
盖娅的运维研发笔试题基本都是python,比较注重python
8.招银科技(三轮)等待通知
笔试>两轮技术面>Hr面
一面,花式问大数据,现场做sql语句题
二面,花式问项目
三面,花式了解你
9.搜狗(内推)
搜狗在和面试官聊了四十多分钟的项目后,只出了一道题,
处理url中域名数据,要统计出域名出现的前10,而且数据是10万行以上,域名长度不固定,手写程序,必须是程序,不需要说原理,直接写代码,然后当场跪!
10.网易游戏,刚面了二面
网易游戏的运维笔试题,是所有运维笔试题中,最接近运维的,很有水平的笔试题
电话面,两个技术官
首先在项目上做了拓展和延伸问
然后是网络的基础BGP,OSPF,TCP、UDP,协议端口等
Linux基础
还有问到笔试题中的大题等
基本也是项目+基础
11.链家
一面:
拿着现场笔试题问,讲思路
写shell处理nginx日志,qvs,各种绕在提取qvs里,什么15分钟前,当前,前10等一系列问题里
快排
编译原理,问有没有学过,没学过就没问
常见linux性能分析工具,罗列出所有能想到的
其他的就是项目了解
数据库了解
二面:
直接问编译原理的状态机,好吧,直接挂在了这里
12.百度(三轮)正式校招
百度校招的三轮面试官,真的是超级nice,可能之前背到一定程度,运气来了,遇到了最擅长的一个部分,网络,所以基本很顺利,具体问了什么就不详细写了,基础其实大部分之前都有涉及过,还有一些更深的
比如进程的父进程子进程,僵尸进程,孤儿进程,调度等
DNS更深的数据传输过程
还有项目里的原理各种深问等
还有一些拓展性的技术问题的深问等
基本一轮面试都会将近了50分钟,所以问的也很多!
百度的面试官真的都很Nice,包括秋招内推的,很有大厂的风范!
所以基本知道百度过了的时候,后面的好几个公司都没有去面试了,基本就定了,太累,需要休养生息了!
自己建的运维互帮群里,其他小伙伴们的一些面经,群里的小伙伴们都是贼棒啊,底下是我没面的
小米:
小米一面(40min)
自我介绍
对进程的理解,什么是进程,有哪些状态,进程什么时候会阻塞,阻塞挂起可以直接到运行态吗?进程和线程的区别,什么是死锁,什么情况下会产生死锁。linux进程调度算法有哪些。
grep/sed/awk介绍下区别
如何根据某个文件第五列进行排序
如何查看进程的运行状态,top可以看到哪些东西,load average是什么意思
tcp三次握手流程,四次挥手流程,为什么有closewait这个状态,timewait状态影响如何解决,tcp和udp的区别,如何理解tcp是流式传输
提交一个form到后台使用get和post有什么区别
常用的http方法还有哪些
你常用哪些数据结构,二分查找原理是什么,时间复杂度?没学过没关系,你猜猜
你有哪些疑问,有哪些要问我的
小米二面(40min)
求职意向
现在求职的进度
学校学的哪些课程,擅长哪些,有没有学过数据结构和算法
用python写过哪些东西,代码量多少,有没有用过其他语言,什么是局部变量和全局变量
有没有写过socket,如何实现的聊天室程序,说出大致思路,如何维护客户端的状态
写过的爬虫程序多少行代码,抓了多少条数据,数据如何保存的
现在要做个DNS的操作平台,要求可以使用HTTP CURD操作BIND的解析记录,说出实现思路,什么是restfull API,底层对记录如何操作
从1-n个整数组成的数据集,如何统计这些整数中出现的0-9每个数字出现的次数
对操作系统了解多少,分段和分页,如何线程安全,常用的IPC机制,CPU什么时候会从用户态切换到内核态,列举出常见的系统调用
linux如何配置路由,iptables操作,服务器如何运行VRRP
为什么不做网络工程师
1.dns端口,协议
2Python和shell script的区别,你觉得哪个好用
3用BIOS配置过什么
4keepalived用什么协议做心跳检测
5 24位掩码的ip主机位多少个
6路由协议有哪些
7问了些关于实习经历和项目的问题
8兴趣爱好
9为啥投小米
金山云:
自我介绍
1.lvm
2.raid类型0和1的区别
3.Apache与Nginx区别,平时用的哪个多
4.项目中遇到的问题及解决办法
5.正向***与反向区别
6.hostrame.ip,路由的设定在哪个文件
7.正则表达式
8.查找IP查找当前且录下的txt结尾这件
并删除
9.shell写过什么什么
10.Python写过什么
11.MySQL查询语言nosql查询语言
mongodb),主从架构区别
12.兴趣爱好
13.开机启动流程init六个类型
14.装过系统吗
五.笔试方面
如何过互联网的笔试题?
好好刷 牛 客
笔试题如果可以得话,有些有价值的题最好能记下来,比如网易游戏的运维题,三七互娱的运维题这些基本都是纯运维相关的,很有价值
六.题外话
还有一段话,我觉得真的很棒,也是我导师跟我们说的,很幸运,研究生期间,遇到一位良师,这段话是乔布斯说的:
“你在向前展望的时候不可能将这些片断串连起来;你只能在回顾的时候将点点滴滴串连起来。所以你必须相信这些片断会在你未来的某一天串连起来。你必须要相信某些东西:你的勇气、目的、生命、因缘。这个过程从来没有令我失望,只是让我的生命更加地与众不同而已。”
你永远不知道你的面试官将会问你什么,也许是你平常解决的一个难点,也许是你平常注意到的一个细节,所以,有些知识不要觉得是无用功,也不要不去在乎一个没有解决的小难点,也许它真的会是你的一个转折点!