专栏名称: 牛客网
程序员必备求职神器,刷真题,练算法,看面经,得内推。点击查看: http://www.nowcoder.com/
目录
相关文章推荐
国际旅游岛商报  ·  0比1,遭绝杀!U20国足止步亚洲杯八强 ·  8 小时前  
温州晚报  ·  巨头宣布:永不合作! ·  14 小时前  
天都新闻  ·  祝贺!中国男篮主场100:58战胜日本男篮 ... ·  2 天前  
天都新闻  ·  祝贺!中国男篮主场100:58战胜日本男篮 ... ·  2 天前  
体坛周报  ·  话题 | 尤文出局,莫塔全责 ·  2 天前  
体坛周报  ·  话题 | 尤文出局,莫塔全责 ·  2 天前  
51好读  ›  专栏  ›  牛客网

运维工程师养成实录:从确立目标到收获offer

牛客网  · 简书  ·  · 2018-01-16 11:59

正文

作为一名渣硕,找工作陆陆续续从今年的三月份开始断断续续的刷一些题,看基础到八月份的猛攻阶段,到此,算是得到了一个不错的收获,也拿到了几个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解析出现错误,解决的思路是什么?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七层

HTTP协议的了解?1.0和2.0版本的区别?HTTP的状态码的了解

操作系统:

进程和线程的区别

产生死锁的四个必要条件和解决办法

进程是如何切换的?在进程处于就绪态时还会有发生哪些事情?进程的状态

Linux:

查看Linux系统的一些命令

可以看到cpu的所有的命令,尽量说

ps结果从哪调用

du和df显示不一致,为什么?

vfs,ext2,ext3,ext4的区别

文件系统

Python:

深拷贝和浅拷贝的区别

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的基本工作原理?

对运维的哪一个方向有兴趣?

二面

自我介绍

项目了解

TCP、UDP区别

apache和nginx的区别

nginx的用途。以及和lvs的区别

其余时间也都是在聊项目

已过


7.盖娅互娱(校招)

盖娅的运维研发笔试题基本都是python,比较注重python

面试基本也都在聊项目

已过


8.招银科技(三轮)等待通知

笔试>两轮技术面>Hr面







请到「今天看啥」查看全文