美文网首页云计算Linux首页投稿(暂停使用,暂停投稿)程序员
运维工程师养成实录:从确立目标到收获offer

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

作者: 6b440373157d | 来源:发表于2018-01-16 11:59 被阅读430次

    作为一名渣硕,找工作陆陆续续从今年的三月份开始断断续续的刷一些题,看基础到八月份的猛攻阶段,到此,算是得到了一个不错的收获,也拿到了几个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面 

    一面,花式问大数据,现场做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.装过系统吗 

    五.笔试方面

    如何过互联网的笔试题? 

    好好刷 牛 客 

    笔试题如果可以得话,有些有价值的题最好能记下来,比如网易游戏的运维题,三七互娱的运维题这些基本都是纯运维相关的,很有价值 

    六.题外话

    还有一段话,我觉得真的很棒,也是我导师跟我们说的,很幸运,研究生期间,遇到一位良师,这段话是乔布斯说的: 

     “你在向前展望的时候不可能将这些片断串连起来;你只能在回顾的时候将点点滴滴串连起来。所以你必须相信这些片断会在你未来的某一天串连起来。你必须要相信某些东西:你的勇气、目的、生命、因缘。这个过程从来没有令我失望,只是让我的生命更加地与众不同而已。” 

    你永远不知道你的面试官将会问你什么,也许是你平常解决的一个难点,也许是你平常注意到的一个细节,所以,有些知识不要觉得是无用功,也不要不去在乎一个没有解决的小难点,也许它真的会是你的一个转折点!

    本文来源于牛客网

    作者:傻妞妞-MM

    相关文章

      网友评论

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

      本文链接:https://www.haomeiwen.com/subject/bghsoxtx.html