最终DevOps工程师面试指南-要求和准备的内容





我在学校开始建立人脉,并且从事金钱工作已有16年以上。我在大公司和小公司都有很多工作,然后我开了自己的公司并定期雇用自己的人。多年的经验和丰富的经验使我和其他许多人发展了面试的直觉。



这是没有明确算法的时候。您只需要与一个人交谈并自己了解一些东西。您问应聘者在上一份工作中做了什么,就紧紧抓住这个话题-现在您正在讨论与同事大致相同水平的工程主题。如果对话进行得很顺利并且这个人喜欢,那么一切都很好。



这种直觉很难从书本和课本中学到,它本身是有经验的。与她一起,出现诸如“我不在乎一般知识方面的特定知识,寻求信息,理解的能力,我们会一起工作”之类的短语,等等。



但是有时候,为了不失去控制力,您仍然需要提醒自己,工程师应该具备哪些知识,以及什么样的问题才能尽可能客观地评估您人生中第一次遇到的人。




首先,我快速浏览所有简历



在浏览答复时,我会注意关键字和工作地点。我总是读求职信-在这个阶段有很多申请人被淘汰。我正在发布工作职位以找到一名DevOps工程师,我得到了python开发人员,golang开发人员或当前的快递公司的响应,他们“非常感兴趣并且想尝试”。



过去的简历表明了在政府机构工作的经历,这符合“俄罗斯联邦中央银行第一类管理人员”的精神。所有这些有关“信息系统管理”的冗长故事,我毫不犹豫地删掉了。对过去工作的描述越不礼貌和官僚主义,这种申请者除了Windows和使用图形界面的备份外,一生中什么都看不到的机会就越大。



在快速选择简历时,该规则会有所帮助:我遇到的技术越多越好。如果某人的简历上写有MySQL,Linux,Postgres,Apache等,那么机会就很大。这个人至少听说过技术,而且知道,甚至可能自己与他们一起工作。但说实话-您可以在履历表上写下任何内容。



在面试时,我要做的第一件事是检查数据库



当我成为一个脆弱的老人时,我将被愚蠢地殴打,我将开始在不认识网的每个人的后背上用棍子砸打它!这是任何工程师必备的。我们生活在一个网络中一切都会发生的世界。即使在封闭的公共部门中,也有局部轮廓。那里有一个开发人员,他编写一些代理服务或编写一个可与​​API一起使用的服务,并且对API一无所知。



我不需要任何专业知识,也不需要为我配置MPLS。但是什么是子网掩码,什么是IP地址-在21世纪,所有IT专家都应该知道。我不知道当一个人不了解127.0.0.1是什么时,他的脑袋里正在发生什么。他坐在本地计算机上,他的服务在虚拟机上运行。该服务具有端点127.0.0.1,即与数据库的连接。出于无知,我们的英雄干了同样的事情。结果是:“我无法连接到基座。” 当然,该死,它没有连接!



如果一个人拥有CCNA证书,那么即使他没有通过它,也没有亲身收到它,而是准备好了-这个事实对我来说足够了。




例如,这是一个标准的CCNA难题,用于了解网络的工作方式



有两个来自不同网络的交换机,它们之间有一个路由器。计算机A希望将数据发送到计算机B。



此时会发生什么?
: «, , , . , , MAC- , . , , . , ».






然后,我询问OSI模型的所有层



有人听说过生成树协议吗?关于根协议,关于IP层?好吧,这一切如何运作?他了解路由如何发生吗?好吧,大量而言:路由表,动态路由协议,TCP传输层。等等等等。



我想听听TCP和UDP之间的区别。一个好的专家会回答我为什么关键系统(例如,域名系统)使用该协议而没有保证的消息传递(UDP)。



答案很简单-这样可以更快。安排TCP会话时,您可以在那里发送UDP数据包3次,然后将其接收回来。而且没有开销。



我问有关DNS的问题



录音类型是什么?我的对话者是否知道MX记录是什么,spf的工作方式或DKIM的工作方式。



是的,这种知识可能对工作没有帮助。但是,对我来说重要的是要知道一个人是否了解技术的本质,是否对阅读技术感兴趣。他是否将一些记录添加到DNS和google中,什么是spf记录,或者他不是吗?



现在在所有地方都使用HTTP协议,我对此提出疑问。



我首先问有关http 1.0、1.1和第二版本之间差异的标准问题。我对什么是标题以及为什么需要它们感兴趣。Web服务器如何理解它收到的是对特定虚拟主机的请求,而不是其他任何主机的请求。我总是问几个有关Nginx的问题。



然后,我平稳地将注意力转移到TLS协议



SSL \ TLS如何工作?工程师至少需要在基本层次上理解这一点-有一个根证书颁发机构,他在证书上签名,并且该证书在某个地方使用。



在TLS中,我通常对建立连接的过程感兴趣。为什么我们需要私钥和公钥以及它们如何交互?如果一个人摸索着,那么我会问一个棘手的问题:一个IP-shnik上可以有几种不同的证书吗?



剧透下的答案
, TLS-, HTTP-, - , HTTP-, . Nginx , , . TLS-, , TLS-. . , IP- SSL.



转向Linux和BASH



您需要了解所有Unix,所有类似Unix的系统。您需要能够使用Shell和Bash,了解基本命令。ls,mkdir等



好吧,如果候选人可以用BASH编写一些脚本,这意味着他试图以某种方式使这个故事自动化。



在Linux上,我将问您如何用其他行替换文件中的行。或者如何使用BASH在Nginx中解析一些access.log。一个人谈论awk,关于cat,关于sort,关于有助于快速工作的所有事情。



到处都有文本文件,您需要正确使用它们。如果申请人愿意将其复制到Excel并在其中执行某些操作,那么我会感到尴尬。



然后,您需要弄清楚虚拟化的情况。



常规虚拟化,通过管理程序进行虚拟化。如果候选人开始谈论半虚拟化,则意味着他知道一些东西。



我的主要问题是:容器虚拟化和普通虚拟机管理程序虚拟化之间有什么区别?如果一个人比较哪个更好,哪个更坏,应该在哪里使用,那是件好事。



前进到容器



找出您与之交谈的人是否曾与Docker合作过?他是否编译了图像,编写了Docker文件,使用了Docker compose并进行了部署。为什么根本需要这些容器,它们如何工作?我们的申请人是否提出了Swarm或Kubernetes容器编排系统?您可以提出很多问题,但主要的目的是了解该人是否用自己的双手用容器完成了工作?



询问CI / CD部署



我对很多事情感兴趣:他如何设置自动部署,他如何设置持续集成?如何组装应用程序,他是否使用代码分析系统(PVS-Studio,SonarQube)。他如何编写测试,或如何集成开发人员编写的测试。



它对这些程序集进行某种集成测试吗?接下来他收集到什么?它会以某种方式累加到artfects中吗,还是打包到docker容器中并推送到注册表?让他告诉您他用来设置CI / CD流程的系统。它可以是GitLab CI,Circle CI和某些云解决方案。也许Jenkins,好吧,您不应该忘记PowerShell中的自写脚本。



告诉我一个人如何部署,我会理解一切。可以使用Kubernetes中的Helm,Ansible,脚本或其他自写的东西来部署它。



关于配置管理系统



我们最常说Ansible。因为大多数人都认识他。那么,为什么我们需要角色,如何加密和存储机密数据,如何将密码上传到Git存储库?诸如此类的东西。



了解编写代码的能力



为了理解服务如何交互,为什么需要API,身份验证协议,授权,理解开发很重要。候选人自己写点东西真好。甚至Python或Shell中的基本脚本对我来说也足够了。重要的不是代码,而是该人要解决的任务,要实现的任务。



需要编码来支持基础结构,编写用于备份的本地脚本,自定义监视以从容地提取指标。在工作中经常会发生某些任务根本没有标准解决方案的情况。



最后的面试问题是关于数据库存储的



SQL,NoSQL-有什么区别,您使用了什么?与我接触PostgreSQL的人更多,而与MySQL接触的次数更少。我问有关索引的问题,申请人是否可以设置副本,是否可以在表之间或仅在数据之间设置逻辑复制。在这种情况下,他将监视什么?如何加快基地建设?






顺便说一句,这是一个好问题。假设基座现在位于磁盘上并停靠在磁盘上。它无法做任何事情-没有人会购买服务器。您如何使其现在更快地工作?



只是...
: fsync, , . Linux , , . , , . , . . . , .





总结一下 -



  • 网路
  • API级别
  • 传输层TCP \ UDP
  • DNS和HTTP协议
  • 的Linux
  • 容器和虚拟机管理程序虚拟化
  • CI / CD
  • 配置管理系统
  • 货柜
  • 数据库


所有这些使您可以完整地描绘一个人。



我名单上最关键的是基础知识。如果您不知道基础,是时候完成社会保障了。



如果某人无法回答我什么是子网掩码,或者不理解为什么HTTP中需要标头,那么在大多数情况下,这样的申请人会在我的笔记本中得到最胖的减号。您是否想知道您戳过鼠标光标的所有这些东西是如何工作的?



与仅仅机械地重复学到的知识而不是弄清楚一切如何工作的人一起工作非常困难。如果不了解Docker,那么如果初学者了解HTTP,TLS和网络是什么,就可以轻松解决。



但最后,最重要的一点是-不需要整个列表即可在真实的采访中关注它。雇用人员之前,您必须先仔细阅读此列表。



如果一切顺利,请致电应聘者面试,并问他一个问题-您在工作中最大的失败是什么,您如何解决它,以及从错误中得出什么结论。



当一个人有话要说时,这样的社会保障会议将像两位啤酒工程师之间的友好对话一样进行。



好吧,按照传统,我邀请您加入购物车社区-我们会定期分析所有这些主题以及许多对访谈和工作都有用的主题。



All Articles