30个DevOps面试问题和答案

更新时间:2023-04-25 11:39:31 阅读: 评论:0


2023年4月25日发(作者:整蛊短信)

30DevOps⾯试问题和答案

如果您正在寻找 devOps ⼯作,那么您正在做出良好的职业决策,因为它现在是⾼薪且需求量很⼤的⼯作。在本⽂中,我们将介绍您可能

期望⾯试官提出的 DevOps ⾯试问题。问题很多,我们不可能⼀⼀列出,但是阅读本⽂后,您应该对等待您的问题以及您应该准备的内容

有更好的了解。

基本问题

1) 开发运维!你怎么能⽤你的话来定义它?

它在软件开发⼈员和 IT 运营/⽹络运营⼯程师之间进⾏⾼效的⽇常协作,以⽣成⼯作系统或发布软件。

devOps 实施通常与敏捷⽅法保持⼀致,其中将⼯作软件部署到⽣产通常是最⾼优先级。在敏捷实施中,重点是⼈⽽不是流程,因此

DevOps ⼯程师必须愿意与敏捷开发团队密切合作,以确保他们拥有⽀持⾃动化测试、持续集成和持续交付等功能所需的环境。在没有

DevOps 的传统实施中,运营团队通常与开发⼈员隔离,公主童话故事 通常在系统运营团队将开发⼈员视为客户的⼀般服务⽔平协议下的帮助台模型下⼯

作。这是⼀个经过验证的模型,显然动作词 可以很好地⼯作,但在 DevOps 环境中,

2) 为什么我们需要 DevOps ?

公司现在⾯临着交付更多、更快和更好的应⽤程序的需求,以满⾜有意识的⽤户⽇益紧迫的需求,以缩短“上市时间”。Devops 通常有助

于快速部署。

3) 什么是敏捷开发和 Scrum?

敏捷开发⽤作瀑布式开发实践的替代⽅案。在敏捷中,开发过程更加迭代和增量,在开发的每个阶段都有更多的测试和反馈,⽽不是瀑布的

最后⼀个阶段。

Scrum ⽤于使⽤迭代和增量实践来管理复杂的软件和产品开发。Scrum 具有三个⾓⾊,即产品负责⼈、Scrum Master 和团队。

4) 我们可以将 DevOps 视为⼀种敏捷⽅法吗?

当然!DevOps 是⼀种通过⼀系列良好实践协调和同步开发和⽣产开始的运动。它的出现是由业务需求的深刻变化推动的,他们希望加快变

化以更贴近业务和客户的需求。

5) DevOps ⼯程师在敏捷开发⽅⾯的职责是什么?

DevOps ⼯程师与敏捷开发团队密切合作,以确保他们拥有⽀持⾃动化测试、持续集成和持续交付等功能所需的环境。DevOps ⼯程师必

须与开发⼈员保持持续联系,并使环境的所有必需部分⽆缝⼯作。

技术问题

6) 什么是容器?

容器是轻量级虚拟化的⼀种形式,⽐ chroot 重,但⽐虚拟机管理程序轻。它们在使⽤与主机相同的内核时提供进程之间的隔离,并在内核

中提供 cgroups 功能。但容器格式之间存在差异,有些格式提供更多类似 VM 的体验,⽽另⼀些则仅将应⽤程序容器化。

LXC 容器最像虚拟机,重量最重,⽽ Docker 过去重量更轻,最初是为单个应⽤程序容器设计的。但在最近的版本中,Docker 引⼊了整

机容器化功能,因此现在 Docker 可以双向使⽤。还有来⾃ CoreOS 的 rkt 和来⾃ Canonical 的 LXD,它建⽴在 LXC 之上。

7) 什么是 Kubernetes?解释

它是由 Google 制造的⽤于管理容器的⼤规模可扩展⼯具。它在内部⽤于⼤型部署,因此它可能是容器⽣产使⽤的最佳选择。它通过重述⾮

响应式容器来⽀持⾃我修复,它以占⽤更少资源的⽅式打包容器并具有许多其他出⾊的功能。

8) CI(持续集成)服务器的功能是什么?

CI 服务器功能是持续集成不同开发⼈员所做的所有更改并提交到存储库并检查编译错误。它需要每天多次构建代码,最好是在每次提交之

后,这样它就可以检测到哪个提交造成了破坏,如果发⽣破坏。

注意:其他可⽤和流⾏的 CI ⼯具是 Jenkins、TeamCity、CircleCI、Hudson、Buildbot 等

9) 什么是持续交付?

它是在 CI(持续集成)服务器构建后⽴即交付⽤于测试的软件的做法吗?它需要⼤量使⽤版本控制系统,以便开发⼈员和测试⼈员始终可

以使⽤。

10)什么是 Vagrant,它的⽤途是什么?

Vagrant 是⼀种可以创建和管理⽤于测试和开发软件的虚拟化(或容器化)环境的⼯具。起初,Vagrant 使⽤ virtualbox 作为虚拟环境的

管理程序,但现在它也⽀持 KVM。

11) 你曾经使⽤过任何脚本语⾔吗?

就脚本语⾔⽽⾔,越简单越好。事实上,语⾔本⾝并不像理解设计模式和开发范例(如过程式、⾯向对象或函数式编程)那么重要。

⽬前,有⼏种脚本语⾔可⽤,因此出现了⼀个问题:最适合 DevOps ⽅法的语⾔是什么?简单来说,这取决于项⽬的上下⽂和所使⽤的⼯

具,例如 Ansible 是否使⽤了其在 Python ⽅⾯的良好知识,以及它是否适⽤于 Chef 是否使⽤ Ruby。

12) 配置管理⼯具在 devops 中的作⽤是什么?

⾃动化在服务器配置管理中起着⾄关重要的作⽤。为此,我们使⽤ CM ⼯具,它们存储有关软件和测试件的版本和构建的信息,并提供软

件和测试件之间的可追溯性。

13) CM ⼯具的⽤途是什么?您使⽤的是哪⼀种?

配置管理⼯具的⽬的是在⼤量服务器上⾃动部署和配置软件。⼤多数 CM ⼯具通常使⽤代理架构,这意味着每台被管理的机器都需要安装

代理。我最喜欢的⼯具是使⽤⽆代理架构的⼯具——Ansible。它只需要 SSH 和 Python。如果使⽤原始模块,甚⾄不需要 Python,因为

它可以运⾏原始 bash 命令。其他可⽤和流⾏的 CM ⼯具是 Puppet、Chef、SaltStack。

14) 什么是 OpenStack?

OpenStack 通常被称为云操作系统,这与事实相差不远。它是部署 IaaS 的安徽自驾游攻略 完整环境,让您可以创建类似于 AWS 的⾃⼰的云。它是⾼度

模块化的,由许多⼦项⽬组成,因此您可以选择所需的功能。OpenStack 发⾏版可从 Red Hat、Mirantis、HPE、Oracle、Canonical

和许多其他公司获得。它是完全开源的项⽬,但⼀些供应商制作了专有发⾏版。

15) 对云平台进⾏分类?

云计算软件可分为软件即服务或 SaaS、基础设施即服务或 IaaS 和平台即服务或 PaaS。

SaaS 是在远程服务器上通过⽹络运⾏的软件,只有⽤户界⾯暴露给⽤户,通常在 Web 浏览器中。例如 。

基础设施即服务是⼀种云环境,它将 VM 公开给⽤户以⽤作整个操作系统或容器,您可以在其中安装任何您想在服务器上安装的东西。例

如 OpenStack、AWS、Eucalyptus。

PaaS 允许⽤户在预安装的平台上部署⾃⼰的应⽤程序,通常是应⽤程序服务器框架和开发⼈员⼯具套件。这⽅⾯的例⼦是

OpenShHeroku。

16) 构建⼩型云的最简单⽅法是什么?

VMfest 是⽴即从 VirtualBox 虚拟机创建 IaaS 云的选项之⼀。如果你想要⼀个轻量级的 PaaS,可以使⽤ Dokku,它基本上是⼀个

bash 脚本,它使 PaaS 脱离了 Dokku 容器。

17) 什么是 AWS(亚马逊⽹络服务)?有机会在亚马逊⼯具上⼯作吗?

AWS 提供了⼀套灵活的服务,旨在使公司能够使⽤ AWS 和 DevOps 实践以更快的速度和可靠性创建和交付产品。这些服务简化了调试

和基础设施管理、应⽤程序代码部署、⾃动化软件发布过程以及应⽤程序和基础设施性能的监控。Amazon 使⽤了 AWS

CodeCommit、AWS CodeDeploy、AWS CodePipeline 等⼯具,这些⼯具有助于简化开发运营。

18) 什么是 EC2?

Amazon EC2 Container Service (ECS) 是⼀种⾼度可扩展的容器管理服务和⾼性能,它⽀持 Docker 容器并允许您在由 Amazon EC2

实例管理的集群上轻松运⾏应⽤程序。

EC2服务离不开Amazon Machine Image-AMI的概念。May 确实是⼀个将被执⾏的虚拟机的形象。EC2 基于 XEN 虚拟化,这就是为什

么将 XEN 服务器迁移到 EC2 ⾮常容易的原因。

19) 你发现使⽤ NoSQL 数据库优于 RDBMS 有什么优势吗?

典型的 Web 应⽤程序是使⽤三层架构构建的。为了承载负载,只需在负载平衡器后⾯添加更多 Web 服务器以⽀持更多⽤户。横向扩展的

能⼒是云计算领域的⼀个关键原则,在其中可以轻松添加或删除 VM 实例以满⾜需求变得越来越重要。

但是,在数据层⽅⾯,关系数据库(RDBMS)不允许通向简单的规模,也没有提供灵活的数据模型。管理更多⽤户意味着添加更多服务

器,⼤型服务器⾮常复杂,拥有者和成本⾼得不成⽐例,这与低成本硬件、“商品硬件”、云中的架构形成鲜明对⽐。组织开始发现现有或

新应⽤程序的关系数据库存在性能问题。尤其是随着⽤户数量的增加,他们意识到需要更快、更灵活的基础。现在是开始评估和采⽤

NoSQL 数据库的时候了,就像在他们的 Web 应⽤程序中⼀样。

20) NoSQL 的主要 SQL 迁移困难是什么?

根据模式在关系数据库中的每条记录 - 具有固定数量的字段(列),每个字段(列)具有指定的对象和数据类型。每条记录都是⼀样的。数

据在⼏个表中进⾏了⾮规范化。优点是数据库中的重复数据较少。缺点是模式中的更改意味着执⾏多个“更改表”,这需要昂贵的同时锁定

多个表以确保更改不会使数据库处于不⼀致状态。

另⼀⽅⾯,对于数据库数据,每个⽂档都可以具有与其他⽂档完全不同的结构。不需要对数据库进⾏额外的管理来管理⽅案中的更改。

21) NoSQL 数据库⽂档有什么好处?

⽂档数据库的主要优点如下:

灵活的数据模型数据可以在没有定义模式的情况下插⼊,插⼊的数据格式可以随时更改,提供极⼤的灵活性,最终为业务带来显着的敏

捷性。

⼀致、⾼性能的⾼级 NoSQL 数据库技术正在将缓存数据透明地放⼊系统内存中;对开发⼈员和负责运营的团队完全透明的⾏为。写景作文600

⼀些易于扩展的 NoSQL 数据库⾃动在服务器之间传播数据,不需要应⽤程序参与。可以在不中断应⽤程序的情况下添加和删除服务

器,数据和 I/O 分布在多个服务器上。

22) Git 相对于 CVS 的主要优势是什么?

最⼤的优势是 Git 是分布式的,⽽ CVS 是中⼼化的。CVS 中的更改是针对每个⽂件的,⽽ Git 中的更改(提交)总是指整个项⽬。Git 提

供的⼯具⽐ CVS 多得多。

23) 容器和虚拟机之间的区别?

每个 VM 实例化都需要启动⼀个完整的操作系统。虚拟机占⽤⼤量系统资源。这很快就会增加⼤量的 RAM 和 CPU 周期。容器主机使⽤

linux 内核的进程和⽂件系统隔离特性。

24) 什么是CoreOS,有什么替代品?

CoreOS 是⽤于运⾏容器的精简 Linux 发⾏版,主要具有⾃⼰的 rkt 格式,但也⽀持其他格式。它最初基于 ChromeOS 并⽀持

Docker。替代⽅案是 canonical 的 ubuntu snappy 或 red hat 企业 linux atomic 主机。当然,Containers 也可以运⾏在常规的 Linux

系统上。

25) 什么是 Kickstart?

这是⼀种通过⾃动⽅式安装基于 Red Hat 的系统的⽅法。在⼿动安装过程中,Anaconda 安装程序会创建⽂件 ,然后

可以使⽤ system-config-kickstart ⼯具在多个系统上⾃动安装相同的配置。

26) 什么是⽹络监控⼯具?列举⼏个

例如,Nagios、Icinga 2、OpenNMS、Splunk 和 Wireshark。这些⼯具⽤于监控⽹络流量、⽹络质量并在⽹络问题出现之前检测它们。

在列出的那些中,只有 Splu戒指保龄球 nk 是专有的,其他是开源的。

27) Juju 是什么?

Juju 是主要⽤于 ubuntu 的编排⼯具,⽤于在 Ubuntu 系统上进⾏管理、配置和配置。它最初是⽤ Python 编写的,后来⽤ Go 重写了。

28) 给我⼀个你将如何处理项⽬的例⼦?

作为⼀名 DevOps ⼯程师,我将展⽰对 DevOps 项⽬管理策略的清晰理解,并与团队合作设定⽬标、简化⼯作流程、维护范围、研究和引

⼊新⼯具或框架、将需求转化为⼯作流程并跟进。我会求助于 千寻图片 CI、发布管理和其他⼯具来保持跨学科项⽬的正常进⾏。

29) 什么是⼫检会议?

这是⼀个会议,我们讨论出了什么问题以及应该采取哪些步骤,以使失败不再发⽣。事后分析会议不是要找出应该受到指责的⼈,⽽是要防

⽌再次发⽣中断并计划重新设计汽车油漆快速修补 基础设施,以便最⼤限度地减少停机时间。这是关于从错误中学习。

30)你对⽆服务器模型了解多少?

⽆服务器是指对开发⼈员隐藏服务器存在的模型。这意味着您不再需要处理容量、部署、扩展和容错以及操作系统。它将从根本上减少维护

⼯作,并允许开发⼈员快速专注于开发代码。

⽰例是 Amazon AWS Lambda 和 Auth0 ⽆服务平台。

Devops ⽰例:使⽤ Ansible 部署应⽤程序

Ansible 是⼀个轻量级、可扩展的解决⽅案,⽤于⾃动化您的应⽤程序配置。Ansible 除了 Python 和 SSH 之外没有其他依赖项。它不需

要在远程主机上设置任何代理,运⾏后也不会留下任何痕迹。它允许您通过创建简单的基于 YAML 的剧本来显着简化我们的操作。它有利

于配置⾃动化、部署和编排。

Ansible 的组件

Playbooks: Ansible playbooks 是⼀种以脚本⽅式向远程计算机发送命令的⽅法。您可以通过将脚本传递给⼀个或多个系统来配置整个

复杂环境,⽽不是单独使⽤ Ansible 命令从命令⾏远程配置计算机。

Ansible playbook 以 YAML 数据序列化格式编写。如果您不知道什么是数据序列化格式,请将其视为⼀种将编程数据结构(列表、数

组、字典等)转换为可以轻松存储到磁盘的格式的⽅法。然后可以使⽤该⽂件在以后重新创建结构。JSON 是另⼀种流⾏的数据序列化格

式,但 YAML 更容易阅读。

让我们看⼀个允许我们在多个主机中安装 Web 应⽤程序 (nginx) 的基本剧本:

hosts: webrvers

tasks:

- name: Installs nginx web rver

apt: pkg=nginx state=installed update_cache=true

notify:

- start nginx

handlers:

- name: start nginx

rvice: name=nginx state=started

hosts ⽂件:(默认在 /etc/ansible/hosts 下)这是 Ansible Inventory ⽂件,它存储主机及其到主机组(⽹络服务器、数据库等)的映

[webrvers]

10.0.15.22

# example of tting a host inventory by IP address.

# also demonstrates how to t per-host variables.

[repository_rvers]

example-repository #通过主机名设置主机的⽰例。需要在 /etc/hosts # 或 DNS 中进⾏本地查找。

[数据库服务器]

db01

SSH 密钥:对于第⼀次运⾏,我们需要告诉 ansible SSH 和 Sudo 密码,因为常见的⾓⾊之⼀是配置⽆密码 sudo,并部署 SSH 密钥。

因此在这种情况下,ansible 可以在远程节点(主机)中执⾏ playbook 的命令并部署 Web 应⽤程序 nginx。

结论大学原文

这些是你在⾯试中可能会遇到的⼀些问题,但是在学习 DevOps 概念时,你绝不应该只专注于那些阅读所有与 Linux 和开源相关的东西,

并尝试任何对你有⽤的软件。感谢您的阅读。


本文发布于:2023-04-25 11:39:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/513817.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:撇的写法
标签:OpenNMS
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图