46 个常见的 DevOps 面试问题和答案 [2023]
已发表: 2023-01-12想知道在下一次 DevOps 面试中要问什么问题吗? 从我们方便的指南开始。
DevOps 这个词是在 2007-2008 年创造的,但现在已经成为软件工程中最受欢迎的职业之一。 DevOps 是一种文化转变,涉及开发和运营的各个方面。
这两个团队(开发和运营)从规划和构建到监控和迭代协同工作。 如果您寻求 DevOps 工程师职位,这些是您可能遇到的最常见问题。
什么是 DevOps?
DevOps 是开发和运营的简称。 这种软件工程实践将开发和运营团队聚集在一起,以自动化项目的每个阶段。 DevOps 团队专注于资源管理、沟通和团队合作。
DevOps 方法的不同阶段是什么
- 持续发展。 这是计划和编码阶段。
- 持续集成。 这是开发团队集成不同组件并确保代码不会中断的阶段。
- 持续测试。 这是预先安排好的自动化测试阶段。
- 持续部署。 此阶段可确保无障碍开发,不会影响整个应用程序的性能。
- 持续监测。 此阶段可确保应用程序的整体功效。
- 持续反馈。 分析最终用户报告的问题和性能。
- 持续经营。 允许开发人员构建更好的产品版本并快速检测问题。
DevOps 有什么好处?
- 更快更好的产品交付
- 更大的可扩展性
- 快速解决问题
- 更好的资源利用
列举一些 DevOps 工具
- Jenkins 等持续集成工具
- 版本控制,例如 Git
- Maven 等构建工具
- Chef 等配置管理工具
- Docker等容器平台
说出一些 DevOps KPI
- 部署频率
- 更改音量
- 部署时间
- 部署失败率
- 时间检测
- 缺陷逃逸率
DevOps 和敏捷之间的区别
DevOps 是一种文化,它促进参与软件开发和维护的所有团队成员之间的协作。
敏捷是一种开发方法,旨在提高团队的工作效率并根据不断变化的需求推动发布。
AWS 在 DevOps 中的作用是什么
AWS 拥有一套灵活的服务,可帮助公司可靠、快速地开发应用程序。 AWS 服务可简化代码部署、预置和简化基础设施、自动化软件发布流程以及监控基础设施性能。
SSH有什么用?
SSH (Secure Shell) 是一种允许在不同计算机之间建立安全连接的协议。 SSH 有不同的用途,例如提供; 强认证,强加密,保持连接完整性,强连接和安全。
什么是持续集成?
持续集成允许软件开发人员将他们的代码合并到中央存储库中。 然后通过自动构建和测试获取代码。
什么是配置管理?
它是一个系统的工程过程,用于在整个生命周期内建立和维护系统/产品的性能以及功能和物理属性的一致性。
什么是持续测试?
这是随着开发的进行而对应用程序进行的预先安排的自动化测试。
什么是 Git?
这是一个用于源代码管理的开源和免费工具。 该工具旨在处理小型和大型项目。
提及一些基本的 Git 命令
- 克隆
git clone <https://name-of-the-repository-link>
- Git 分支
git branch <branch-name>
- Git结帐
git checkout <name-of-your-branch>
- git 添加
git add <file>
- Git 提交
git commit -m "commit message"
- 推送
git push <remote> <branch-name>
- git 拉
git pull <remote>
解释Git merge和Git rebase的区别
Git 合并命令允许开发人员合并不同的 Git 分支,同时各个分支的提交日志保持不变。
Git rebase 命令允许开发人员将更改从一个分支集成到另一个分支,一旦过程完成,日志就会更改。
解释Git fetch和Git pull的区别
Git fetch 告诉 git 从原始文件中检索/检查最新的元数据。 但是,它不进行任何文件传输,而只是进行检查。
Git pull 检查并将更改从远程存储库带到本地项目。
什么是合并冲突?
当您合并两个具有竞争提交的分支时,会发生合并冲突。 合并冲突通常发生在不同的开发人员更改同一行代码或文件时。
什么是版本控制,有哪些不同类型?
版本控制(源代码控制)是跟踪和管理软件代码更改的过程。
这些是不同类型的版本控制;
- 集中式——在服务器上有一个单一的“中央”源代码副本,所有更改都提交到“中央”副本。 Subversion (SVN) 和 Perforce 是集中式版本控制的例子。
- 分布式 (DVCS) -没有中央服务器来存储所有项目的文件。 Git 和 Mercurial 是 DVCS 的例子。
使用版本控制有什么好处?
- 帮助开发人员保持效率和敏捷性
- 提供项目/文件每次更改的完整日志
- 提高可追溯性
- 帮助管理合并和分支
- 促进协作
什么是分支?
分支是指创建主存储库的单独/新版本。 分支允许您在不影响主要分支的情况下处理项目的各个部分。
什么是分支策略?
合并策略是软件开发团队在编写、合并和部署代码时采用的方法。 这种方法可确保错误和错误在与主项目合并之前在分支阶段得到修复。
什么是自动化测试,如何在 DevOps 中实现自动化测试?
自动化测试是一种自动审查和验证代码的技术。 进行自动化测试是为了检查功能(业务逻辑)、代码风格和用户体验的质量标准是否得到满足。
自动化测试是使用诸如 Selenium 和 Katalon 之类的工具完成的。
什么是詹金斯文件?
Jenkinsfile 是一个包含 Jenkins 管道定义的文本文件。 Jenkinsfile 被签入源代码控制存储库。 它的一些用途是; 它允许对管道进行审计跟踪,允许在管道上进行代码审查和迭代,并在管道中提供单一的真实来源。
解释 Jenkins 中的架构
Jenkins 采用主从架构。 这意味着有许多“奴隶”为一个“主人”工作。 因此,Jenkins 分布式构建可以在不同的环境中运行相同的测试,并在主节点上收集和组合结果以进行监控。
顶级的 Jenkins 插件是什么?
- Jenkins 的 Blue Ocean 插件
- Jenkins 的邮件插件
- 詹金斯的 Git 插件
- Jenkins 的 Jira 插件
- Jenkins 的 Docker 插件
- Jenkins 的 Maven 集成插件
- Jenkins 的 Kubernetes 插件
- Jenkins 的 SonarQube 插件
- 用于 Jenkins 的 Amazon EC2 插件
什么是硒集成开发环境?
Selenium IDE 是一个为测试用例记录浏览器交互的工具。 Selenium 集成开发环境出错时可以设置断点、检查和暂停变量。
有哪些不同的硒成分?
- 硒集成开发环境
- 硒钢筋混凝土
- Selenium WebDriver
- 硒网格
Selenium 中有哪些不同类型的测试?
- 端到端测试
- 回归测试
- 系统测试
- 性能测试
- 兼容性测试
Selenium 中有哪些不同的异常?
- ElementNotSelectableException
- NoAlertPresentException
- 无效选择器异常
- NoSuchSessionException异常
- StaleElementReferenceException异常
- NoSuchWindowException异常
- NoSuchFrameException
- NoSuchElementException异常
- 超时异常
- 元素不可见异常
WebDriver 中的 driver.close() 和 driver.quit() 是什么?
driver.close()
命令关闭焦点上的浏览器窗口。 如果只有一个浏览器打开,它会关闭整个浏览器会话。
driver.quit()
命令关闭带有浏览器弹出窗口、选项卡和窗口的整个浏览器会话。
什么是 Dockerfile?
Dockerfile 是一个文本文档,其中包含用户可以在命令行上用来组装图像的所有命令。
docker镜像和docker容器的区别
Docker 镜像是只读模板,由源代码、工具、库、外部依赖项以及任何应用程序在任何操作系统或平台上成功运行所需的其他文件制作而成。
docker 容器是运行 docker 镜像模板的盒子。
解释Docker的架构
Docker 遵循客户端-服务器架构,包括 Docker Client、Docker Host 和 Docker Registry。
Docker 客户端使用 REST API 和命令与服务器(Docker 守护进程)通信。
Docker 客户端使用 CLI 来运行这些命令
docker build docker pull docker run
- Docker Host提供了一个执行和运行应用程序的环境。 由 docker 守护进程、存储、图像、容器和网络组成。
- Docker Registry管理和存储 Docker 镜像。
支持docker的云平台
支持 docker 托管的平台有:
- 龟寺
- 谷歌云运行
- A2托管
- 堆栈路径
- 邋遢.io
- 亚马逊云服务器
- 微软天青
- 主机快板
- 沃尔特
什么是 Nagios?
Nagios 是一种监控整个 IT 基础架构以确保业务流程、系统、服务和应用程序正常运行的工具。
Nagios 是如何工作的?
- 监控。 IT 人员配置 Nagios 以监控网络协议、系统指标、应用程序、网络基础设施、服务和服务器。
- 警报。 当关键组件出现故障时,Nagios 会发送警报。 警报可以通过短信、自定义代码或电子邮件发出。
- 回应。 IT 团队确认警报并采取行动。
- 报道。 生成的报告提供了通知、中断、警报响应和事件的历史记录,供以后查看。
- 保养。 计划的停机时间可防止在维护期间发送警报。
在 Nagios 中提及一些插件
- 官方 Nagios 插件- 由官方团队开发和维护
- 自定义插件- 由个人/企业编写以满足个人需求
- 社区插件——由 Nagios 社区成员开发
使用 Nagios 解释虚拟化
Nagios 提供了在各种虚拟化平台上监控各种指标的能力。 Nagios 可以在各种虚拟化平台上运行,例如 Xen、Amazon EC2、VMware 和 Microsoft Virtual PC。
Nagios 如何帮助监控?
Nagios 使用 NRPE、check_mk 或 SNMP 等代理来收集服务器上的统计信息,并在指标高于预定义阈值时发送警报。
Nagios 使用什么端口号进行监控?
SNMP,端口 161 和 162
什么是 Nagios 网络分析器?
Nagios 网络分析器是一款 sflow 数据分析软件,允许用户在中断业务运营之前主动解决异常行为、中断和安全威胁。 这个商业级工具提供了对网络流量和 IT 基础设施的扩展洞察力。
Nagios 中影响继承和递归的变量
- 名称- 可以继承对象变量/属性的模板“名称”。
- 使用指定 要从中继承变量/属性的模板的对象名称。
- Register指示模板对象的名称是否应该在 Nagios 中“注册”。
什么是人偶?
Puppet 是一个用于软件配置管理和部署的开源工具。
什么是 Puppet 清单?
Puppet 清单是一个包含 Puppet 配置语言的文件,描述了应该如何配置资源。
什么是傀儡代码?
Puppet 代码是声明性代码,这意味着您使用系统的所需状态而不是到达那里所需的步骤来描述它。
什么是厨师?
Chef 是一种配置管理工具,可将基础架构转换为代码。 该工具专注于编写代码而不是手动过程。
厨师如何工作?
当系统管理员或开发人员定义要自动化的任务时,Chef 的工作就开始了。 然后使用 Test Kitchen、ChefSpec 和 Foodcritic 等各种工具捕获和测试食谱和食谱(以特定领域语言编写的小程序)。
如果食谱和食谱按预期工作,则使用 knife 和 chef 命令行工具将它们部署到 Chef 服务器。 Chef 部署过程具有 Chef 服务器、工作站和节点。 您可以从 3000 多个食谱模板中进行选择,并根据您的需要对其进行自定义。 然后厨师会处理剩下的工作。
概括
据 Glassdoor 称,美国 DevOps 工程师的平均年薪为 104281 美元。 尽管 DevOps 是一个新的职业,但我们现在可以看到更多的公司正在招聘这个角色,并发布各种课程来为专业人员提供必要的技能。 以上是您在 DevOps 面试中可能会遇到的一些问题。
您还可以浏览一些不错的在线课程来学习 DevOps。