2019 DevOps 必备面试题——DevOps 理念篇

原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原文作者:Saurabh Kulshrestha
翻译君:CODING 戴维奥普斯

你是一位 DevOps 工程师还是想进入 DevOps 领域的新手?如果是,那么你已经把握住了未来趋势。在本文中,我列出了几十个在雇佣 DevOps 工程师时,面试官可能会问到的问题以供参考。

理解 DevOps 的关键点在于它不仅仅是一种技术集合,而是一种思维方式、一种文化。DevOps 需要一种文化转变——将运维与开发相结合,并需要一个相关联的技术工具链来促进协作变革。由于 DevOps 理念仍处于非常初级的阶段,因此 DevOps 的应用以及适应和协作所需的带宽因团队而异。但是,你可以开发 DevOps 技能组合,提升自我,成为任何类型的团队都需要的理想候选人。

成为一名 DevOps 工程师有哪些要求?

在寻找能胜任 DevOps 工程师的人选时,团队会有一套清晰的技能需求。其中最重要的是:

  • 熟悉基础架构自动化工具,如 Chef,Puppet,Ansible,SaltStack 或 Windows PowerShell DSC。
  • 熟练掌握 Ruby,Python,PHP 或 Java 等语言。
  • 帮助你跨团队和角色进行沟通和协作的人际关系技巧。

为了组织下面的问题,我把自己放在了你的位置上,本文中的大多数答案都是以你的角度来写的——即一个有潜力的 DevOps 专家。

一般的 DevOps 相关面试问题

这类基础问题是与任何特定 DevOps 阶段无关的问题,旨在测试你对 DevOps 的理解程度,而不是关注特定的工具或阶段。

Q1.DevOps 和敏捷的根本区别

下表中列出了两者之间的差异。

Q2.DevOps 需要什么

我认为这个答案应该从解释市场总体趋势开始。现在许多公司都在通过尝试向客户快速发布小的功能点,以取代发布大的功能组。这样做有许多优点,比如能快速收到客户反馈、提高软件质量等,从而大幅提升客户满意度。为实现这一目标,公司必须:

  1. 增加部署频率
  2. 降低新版本的故障率
  3. 缩短交付时间
  4. 新版本崩溃时更快的平均恢复时间

DevOps 满足所有这些需求,并有助于实现无缝的软件交付。你可以举出像 Etsy、Google 和亚马逊这样的公司的例子,这些公司已经采用 DevOps 达到了甚至五年前都无法想象的性能水平。他们每天都在进行数十、数百甚至数千次代码部署,同时提供世界级的稳定性、可靠性和安全性。

如果我必须测试你对 DevOps 的了解程度,那么你应该知道敏捷(Agile)和 DevOps 之间的区别。下一个问题就是针对这一点的。

Q3.DevOps 与敏捷/SDLC 有何不同?

我建议你按照以下说明进行操作:
敏捷是一套关于如何实现生产即开发软件的价值观和原则。举个例子:如果你有一些想法,并且希望将这些想法转化为可用的软件,那么你可以使用敏捷价值观和原则作为实现此目的的方法。但是,该软件可能只适用于开发人员的笔记本电脑或测试环境,你希望以一种安全简单的方式,快速、轻松、可复用地将该软件移植到生产基础架构中。要做到这一点,你需要 DevOps 工具和技术。

总而言之,敏捷软件开发方法侧重于软件的开发,DevOps 则负责以最安全可靠的方式开发和部署软件。

现在请记住,你在之前的回答中包含了 DevOps 工具,因此请准备好回答一些与此相关的问题。

Q4.哪些是最顶尖的 DevOps 工具?你使用过哪些工具?

下面介绍了一些最受欢迎的 DevOps 工具:

  • Git:版本控制系统工具
  • Jenkins:持续集成工具
  • Selenium:持续测试工具
  • Puppet、Chef、Ansible:配置管理和部署工具
  • Nagios:持续监控工具
  • Docker:容器化工具

如果有需要你也可以提及其他工具,但请确保在你的回答中包含上述工具。

接下来的回答有两种可能:

  1. 如果你掌握上述所有工具,那么你可以说自己已经使用过所有这些工具来开发高质量的软件,并能轻松、频繁和可靠地部署这些软件。
  2. 如果你只对上述某些工具有经验,那么请提及这些工具,并说自己对这些工具有专业性,同时对其余工具进行一些概述。

Q5.所有这些工具如何协同工作?

下面给出了一个通用的逻辑流程,在这个流程中所有内容都将自动进行无缝交付。但是此流程也会因不同组织的不同需求而导致一些差异。

  1. 开发人员开发代码,源代码由 Git 等版本控制系统工具管理。
  2. 开发人员将此代码提交到 Git,并且对代码所做的任何更改都将提交到此代码仓库。
  3. Jenkins 通过 Git 插件从仓库中提取此代码,并使用 Ant 或 Maven 等工具构建它。
  4. 配置管理工具(如 Puppet)部署和提供测试环境,然后 Jenkins 在使用 Selenium 等工具进行测试的测试环境上发布此代码。
  5. 代码测试结束后,Jenkins 就会将其发送到生产服务器上进行部署(甚至生产服务器也由 Puppet 等工具进行配置和维护)。
  6. 部署后,Nagios 等工具会进行持续监控。
  7. Docker 容器提供测试环境来测试构建功能。

Q6.DevOps 有哪些优势?

对于这个答案,你可以利用你过去的经验,解释 DevOps 是如何帮助你完成之前的工作。如果没有任何此类经验,那么你可以提及以下优势。

技术优势:
持续的软件交付
修复不太复杂的问题
更快地解决问题

商业优势:
更快速地提供新功能
更稳定的操作环境
更多可用于提升价值的时间(而不是修复/维护)

Q7.DevOps 帮助我们实现的最重要的事情是什么?

据我所知,DevOps 帮助我们实现的最重要的事是尽可能快地将更改投入生产,同时最大限度地保证软件质量和合规性。这是 DevOps 的主要目标。

你也可以提及 DevOps 的许多其他积极影响,例如团队之间更清晰的沟通和更好的工作关系——即运维团队和开发团队共同合作,通过提供高质量的软件提升客户满意度。

Q8.用一个工业/现实生活中的使用案例来解释 DevOps

有许多行业正在应用 DevOps,所以你可以举出任意案例,也可以参考下面的例子:
Etsy 是一个 P2P 电商网站,专注于手工或古董物品,以及独特的工厂制造的物品。Etsy 在缓慢且痛苦的网站更新中挣扎,这些更新经常导致网站崩溃,影响了数百万通过在线市场销售商品的 Etsy 用户的使用,并且很有可能将商品推向竞争对手。

在新技术管理团队的帮助下,Etsy 从每周进行两次四小时全站点部署的瀑布模型,转变为更敏捷的模式。如今它拥有完全自动化的部署管道,据报道,其持续交付实践每天可以进行 50 多次更少中断的部署。

Q9.解释与分享在之前的工作中,你在软件开发和技术运维方面的理解和专业知识

这个回答主要是分享你过去的工作经验,并试着解释你在以前工作中的灵活性。可以参考以下示例:
DevOps 工程师几乎总在业务关键在线环境中全天候工作。我能够适应随叫随到的工作,并且承担生产系统的维护责任;我成功自动化了支持持续软件部署的流程;我有使用公有/私有云、Chef 或 Puppet 等工具、使用 Python 和 PHP 等工具编写脚本和实现自动化方面的经验,并且具有敏捷相关的背景。

Q10.DevOps 的反模式有哪些?

一般来说通常你的研发组织中遵循了某种模式,但如果其他人普遍采用的模式对你的组织不起作用,并且你继续盲目地遵循它,那么你实际上是在采用反模式。一些关于 DevOps 的错误认知包括:

  • DevOps 是一个过程
  • 敏捷就是 DevOps?
  • 我们需要一个单独的 DevOps 小组
  • DevOps 将解决我们所有的问题
  • DevOps 意味着由开发人员来管理生产
  • DevOps 是开发驱动的发布管理
  • DevOps 不是开发驱动的
  • DevOps 不是 IT 业务驱动的
  • 我们不能应用 DevOps - 我们比较特别
  • 我们不能应用 DevOps - 我们找错人了

点击使用 CODING,体验 DevOps 全工具链敏捷研发

原文地址:https://www.cnblogs.com/codingdevops/p/11446808.html

时间: 2024-11-09 01:50:25

2019 DevOps 必备面试题——DevOps 理念篇的相关文章

2019 DevOps 必备面试题——容器化和虚拟化

原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3 原文作者:Saurabh Kulshrestha 翻译君:CODING 戴维奥普斯 让我们看看你对容器和虚拟机的了解程度. Q1. 什么是容器? 容器提供了从开发人员的笔记本电脑到测试环境.从类生产环境到生产环境一致的运行环境. 接下来给出容器的定义,容器由一个完整的运行环境组成:将一个应用程序,以及它所有的依赖项.库和其他二进制文件,以及运行它所需的配

【转】BAT及各大互联网公司2014前端笔试面试题:JavaScript篇

原文转自:http://blog.jobbole.com/78738/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正. 前面几题是会很基础,越下越有深度. 附上第二篇:BAT及各大互联网公司2014前端笔试面试题–Html,Css篇 前面几题是会很基础,越下越有深度. 初级Javascript: 1.Jav

前端面试题(JS篇)

原题地址:http://handyxuefeng.blog.163.com/blog/static/454521722013111714040259/ 好吧,最近打算换工作,所以关注比较多的是面试题,这套还不错,留下~~ 1.JS相关问题: 解释下事件代理(基础题) 解释下 JavaScript 中 this 是如何工作的(始终指向调用当前函数的对象) 解释下原型继承的原理. AMD vs. CommonJS? 什么是哈希表? 解释下为什么接下来这段代码不是 IIFE(立即调用的函数表达式):f

(转)BAT及各大互联网公司2014前端笔试面试题--Html,Css篇

BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正. 前面几题是会很基础,越下越有深度. 附上第一篇:BAT及各大互联网公司2014前端笔试面试题--JavaScript篇 Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什

2014年软考程序员-笔试-考前练习试题【汇总篇】

51CTO学院,在软考备考季特别整理了"2014年软考程序员-常考知识点复习笔记[汇总篇]",帮助各位学院顺利过关!更多软件水平考试辅导及试题,请关注51CTO学院-软考分类吧! 2014年软考程序员笔试考前练习试题汇总 1 2014年软考程序员笔试考前练习试题(1) 查看详情 2 2014年软考程序员笔试考前练习试题(2) 查看详情 3 2014年软考程序员笔试考前练习试题(3) 查看详情 4 2014年软考程序员笔试考前练习试题(4) 查看详情 5 2014年软考程序员笔试考前练习

《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》

DevOps实践:驭DevOps之力强化技术栈并优化IT运行 主旨 这本书并非坐而论道,而是介绍了DevOps全流程中的许多实践,以及相应工具的运用.虽然随着时代的推移,工具将来可能会过时,但是这些实践的应用和相应的方法是不会过时的,所以对于其中各种实践必要性和相关方法的讲解,是特别值得注意的.作者认为一切皆代码,所以各个章节是围绕代码的生命周期展开的,提到了这些环节的实践: 管理代码 构建代码 测试代码 部署代码 监控代码 DevOps和持续交付简介 DevOps的由来 Patrick Deb

【每日3分钟技术干货 | 面试题+答案 | Redis篇(一)】

1. Redis 是什么?**都有哪些使用场景?** 我们先来理解经典的CAP理论: 一致性:是指从数据层面来看的一致性. 可用性:是指从系统层面的可用性. 容错性:是指从网络层面的的容错性. 数据库逐渐从关系数据库向不同领域不同层次分化.随着读多写少场景的出现,导致需要读取数据的时间变慢,为了提升性能,出现了数据库缓存技术,对数据库的读取进行分离.web2.0时代,网民的生产力大增,存储总量也在增加,目前还是读多写少模式,原有的缓存技术显然不能满足写的压力,所以,出现了分库分表,实现读写分离.

【每日3分钟技术干货 | 面试题+答案 | MyBatis篇(一)】

1. MyBatis 中 #{}和 ${}的区别是什么? #{}是预编译处理,${}是字符替换.在使用 #{}时,MyBatis 会将 SQL 中的 #{}替换成"?",配合 PreparedStatement 的 set 方法赋值,这样可以有效的防止 SQL 注入,保证程序的运行安全. 2. MyBatis 有几种分页方式? 分页方式:逻辑分页和物理分页. 逻辑分页:使用 MyBatis 自带的 RowBounds 进行分页,它是一次性查询很多数据,然后在数据中再进行检索. 物理分页

【每日3分钟技术干货 | 面试题+答案 | Zookeeper篇(一)】

1. zookeeper 是什么? zookeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. 2. zookeeper 都有哪些功能? 集群管理:监控节点存活状态.运行请求等. 主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zookeeper