• 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 全工具链敏捷研发

  • 相关阅读:
    ZOJ 3332 Strange Country II
    ZOJ 3331 Process the Tasks(双塔DP)
    ZOJ 3326 An Awful Problem(模拟)
    HDU 1796 How many integers can you find(容斥原理)
    HDU 4059 The Boss on Mars(容斥原理)
    HDU 4135 Co-prime(容斥原理)
    HDU 5677 ztr loves substring(回文串加多重背包)
    CodeForces 668B Little Artem and Dance
    CodeForces 667A Pouring Rain
    Java实现 LeetCode 764 最大加号标志(暴力递推)
  • 原文地址:https://www.cnblogs.com/codingdevops/p/11446808.html
Copyright © 2020-2023  润新知