50 个最热门 DevOps 面试问题及答案 (PDF)
以下是 DevOps 面试问题和答案,可以帮助新手和有经验的应聘者获得理想的工作。
面向应届毕业生的 DevOps 面试问题和答案
1)解释一下什么是 DevOps?
它是IT领域的一个新兴名词,是一种强调软件开发人员和部署(运营)团队协作和沟通的实践,着眼于更快的软件产品交付,降低发布的失败率。
2)请提及 DevOps 背后的关键方面或原则是什么?
DevOps 背后的关键方面或原则是
- 基础架构即代码
- 持续部署
- 省时提效
- 监控
- 安全性
3)DevOps 在应用程序开发和基础设施方面的核心操作是什么?
DevOps 的核心操作是
应用开发
- 代码构建
- 代码覆盖率
- 单元测试
- 包装
- 部署
基础设施
- 供应
- 配置
- 编曲配置
- 部署
4)解释“基础设施代码”在 AWS 中是如何处理或执行的?
在 AWS 中,
- 基础设施代码将采用简单的 JSON 格式
- 此 JSON 代码将被组织到名为模板的文件中
- 此模板可以部署在 AWS DevOps 上,然后作为堆栈进行管理
- Later CloudFormation 服务将在堆栈中执行创建、删除、更新等操作
5)解释哪种脚本语言对于 DevOps 工程师来说最重要?
对于 DevOps 工程师来说,更简单的脚本语言会更好。 Python 似乎很受欢迎。
6)解释一下 DevOps 对开发人员有何帮助?
DevOps的 可以帮助开发人员快速修复错误并实现新功能。它还有助于团队成员之间更清晰的沟通。
7)列出一些流行的 DevOps 工具?
一些流行的 DevOps 工具包括
- 詹金斯
- Nagios
- monit的
- ELK(Elasticsearch, Logstash、基巴纳)
- 詹金斯
- Docker
- Ansible
- 混帐
8) 请提及您在什么情况下使用过 SSH?
我曾使用 SSH 登录远程计算机并在命令行上工作。除此之外,我还使用它进入系统,以便在不安全的网络上的两个不受信任的主机之间建立安全的加密通信。
9)解释如何处理修订(版本)控制?
我处理修订控制的方法是将代码发布到 SourceForge 或 GitHub 上,以便每个人都可以查看。此外,我将发布上次修订的检查表,以确保解决所有未解决的问题。
10)Http 请求有哪些类型?
Http 请求的类型包括
- 的GET
- 校长
- PUT
- 解决方案&帖子
- 补丁
- 删除
- 跟踪
- 建立联系
- 配置
11)解释一下如果 Linux 构建服务器突然开始变慢您会检查什么?
如果 Linux 构建服务器突然开始变慢,你需要检查以下三件事
应用程序级别故障排除 | RAM 相关问题、磁盘 I/O 读写问题、磁盘空间相关问题等。 |
系统级故障排除 | 检查应用程序日志文件或应用程序服务器日志文件、系统性能问题、Web 服务器日志 – 检查 HTTP、tomcat lo、jboss 或 WebLogic 日志,查看应用程序服务器响应/接收时间是否是导致应用程序运行缓慢、内存泄漏的问题 |
依赖服务故障排除 | 防病毒相关问题、防火墙相关问题、网络问题、SMTP 服务器响应时间问题等。 |
12)DevOps 的关键组件是什么?
这里有一些重要的 DevOps 生命周期阶段:
- 持续发展
- 持续整合
- 连续测试
- 持续部署
- 持续监控
- 持续反馈
- 持续 Opera系统蒸发散
13)列举几个用于 DevOps 实施的云平台
用于 DevOps 实施的流行云计算平台有:
- Google Cloud
- Amazon Web服务
- Microsoft Azure
14)使用版本控制系统的一些好处
- 版本控制系统允许团队成员随时自由地处理任何文件。
- 所有过去的版本和变体都紧密地包装在 VCS 内部。
- 分布式 VCS 可帮助您存储项目的完整历史记录,因此如果中央服务器出现故障,您可以使用团队成员的本地 Git 存储库。
- 允许您查看文件内容的具体更改
15)解释 Git Bisect
Git bisect 帮助您使用二分搜索法找到引入错误的提交。
16)构建是什么?
构建是一种将源代码放在一起以检查其是否作为一个整体运行的方法。在构建创建过程中,源代码将经过编译、检查、测试和部署。
17)什么是 Puppet?
木偶 是一款实用的项目管理工具。它可以帮助您自动执行管理任务。
18)解释双因素身份验证
双因素身份验证是一种安全方法,其中用户提供两种来自不同类别的身份验证方式。
19)解释“Canary 发布'。
金丝雀发布是一种降低将新版本软件引入生产环境的风险的模式。它通过以受控的方式将其提供给部分用户来实现。然后再将其提供给整个用户集。
20)哪些类型的测试对于确保新服务投入生产很重要?
您需要进行持续的测试以确保新服务已准备好投入生产。
面向有经验的 DevOps 面试问题和答案
21)什么是 Vagrant?
vagrant 是一个可以创建和管理用于测试和开发软件的虚拟化环境的工具。
22)DNS 中的 PTR 有什么用途?
指针记录(也称为 (PTR))用于反向 DNS 查找。
23)什么是 Chef?
它是一个强大的自动化平台,可将基础设施转换为代码。在此工具中,您可以编写用于自动化流程的脚本。
24)实施DevOps的前提条件是什么?
以下是 DevOps 实施的有用先决条件:
- 至少一个版本控制软件
- 团队成员之间进行适当的沟通
- 自动化测试
- 自动化部署
25)说出一些应遵循的 DevOps 成功最佳实践。
以下是 DevOps 实施的基本最佳实践:
- 交付速度是指将任何任务投入生产环境所需的时间。
- 跟踪各种缺陷中发现的缺陷数量
- 测量生产环境发生故障时恢复所需的实际时间或平均时间非常重要。
- 客户报告的错误数量也会影响应用程序的质量。
26)解释 SubGIt 工具
SubGit 可帮助您将 SVN 迁移到 Git。它还允许您构建本地或远程 Subversion 存储库的可写 Git 镜像。
27)说出一些重要的网络监控工具
一些最突出的网络监控工具是:
- Splunk的
- Icinga 2
- Wireshark
- Nagios
- 开放网管系统
28)你的显卡是否可以运行 Unity 你怎么知道的?
当您使用命令时
/usr/lib/Linux/unity_support_test-p
它将给出详细的输出 Unity的要求,如果满足,那么您的显卡就可以运行Unity。
29)解释如何在 Ubuntu?
启用启动声音
- 单击控制装置,然后单击 启动应用程序
- 在 启动应用程序偏好设置 窗口中,单击 添加 添加条目
- 然后在名称、命令和注释等注释框中填写信息
/usr/bin/canberra-gtk-play—id= "desktop-login"—description= "play login sound"
- 完成后注销然后登录
你也可以用快捷键打开 Ctrl+Alt+T
.
30)打开 Ubuntu 特定目录中的终端?
打开一个 Ubuntu 终端中的特定目录,您可以使用自定义键盘快捷键。
为此,在新自定义键盘的命令字段中,输入基因组 - 终端 - 工作 - 目录 = /path/to/dir。
31)解释如何获取当前屏幕的当前颜色 Ubuntu 桌面?
您可以在 Gimp(图像编辑器)中打开背景图像,然后使用滴管工具选择特定点的颜色。它会为您提供该点颜色的 RGB 值。
32)解释如何在 Ubuntu?
要在桌面上创建启动器 Ubuntu 您可以使用
ALT+F2 然后输入“gnome-desktop-item-edit –create-new~/desktop”,它将启动旧的 GUI 对话框并在您的桌面上创建一个启动器
33)解释一下什么是 Memcached?
Memcached 是一个免费的开源高性能分布式内存对象缓存系统。Memcached 的主要目标是提高数据的响应时间,否则这些数据可以从其他来源或数据库恢复或构建。它用于避免需要操作 SQL数据库 或重复从另一个源获取并发请求的数据。
Memcached 可用于
- 社交网络->个人资料缓存
- 内容聚合-> HTML/页面缓存
- 广告定位 -> Cookie/配置文件跟踪
- 关系->会话缓存
- 电子商务 -> 会话和 HTML 缓存
- 基于位置的服务->数据库查询扩展
- 游戏和娱乐->会话缓存
Memcache 有助于
- 加快申请流程
- 它决定了什么可以存储,什么不可以存储
- 减少对数据库的检索请求次数
- 减少 I/O(输入/输出)访问(硬盘)
Memcached 的缺点是
- 它不是一个持久数据存储
- 不是数据库
- 它不是特定于应用程序的
- 无法缓存大对象
34)请提及 Memcached 的一些重要功能?
Memcached 的重要功能包括
- CAS 代币: CAS 令牌附加到从缓存中检索的对象。您可以使用该令牌保存更新的对象。
- 回调: 它简化了代码
- 获取延迟: 它减少了脚本等待服务器返回结果的延迟时间
- 二进制协议: 您可以在较新的客户端中使用二进制协议,而不是 ASCII
- 二进制: 以前,客户端总是习惯对具有复杂数据的值进行序列化,但使用 Memcached,您可以使用 igbinary 选项。
针对 5+ 经验的 DevOps 面试问题及答案
35) 解释是否可以在多个项目之间共享一个 Memcache 实例?
是的,可以在多个项目之间共享一个 Memcache 实例。Memcache 是一个内存存储空间,您可以在一台或多台服务器上运行 Memcache。您还可以配置客户端以与一组特定的实例通信。因此,您可以在同一台主机上运行两个不同的 Memcache 进程,但它们是完全独立的。除非您已对数据进行分区,否则就需要知道从哪个实例获取数据或将数据放入哪个实例中。
36) 您有多个 Memcache 服务器,其中一个 Memcache 服务器发生故障,并且其中有您的数据,它会尝试从那台故障服务器获取关键数据吗?
故障服务器中的数据不会被删除,但有自动故障功能,您可以为多个节点配置此功能。任何套接字或 Memcached 服务器级错误都可以触发故障转移,但添加现有密钥等标准客户端错误不会触发故障转移。
37)解释如何最大限度地减少 Memcached 服务器中断?
- 当一个实例发生故障时,其中几个实例也会发生故障,当客户端发出请求时重新加载丢失的数据时,这会给数据库服务器带来更大的负载。为了避免这种情况,如果您的代码已编写为尽量减少缓存拥塞,那么它将产生最小的影响
- 另一种方法是使用丢失的机器 IP 地址在新机器上启动 Memcached 实例
- 该代码是减少服务器中断的另一种选择,因为它使您可以自由地以最少的工作量更改 Memcached 服务器列表
- 设置超时值是某些 Memcached 客户端为应对 Memcached 服务器中断而实施的另一个选项。当您的 Memcached 服务器发生故障时,客户端将继续尝试发送请求,直到达到超时限制
38)解释当数据发生变化时如何更新 Memcached?
当数据发生变化时,您可以通过以下方式更新 Memcached
- 主动清除缓存: 插入或更新时清除缓存
- 重置缓存: 它与第一种方法类似,但不是仅仅删除键并等待下一次数据请求来刷新缓存,而是在插入或更新后重置值。
39)解释什么是“狗堆效应”?如何防止这种效应?
Dogpile 效应是指缓存过期时,网站会被客户端同时发出的多个请求所影响。使用信号量锁可以防止这种现象。在这个系统中,当值过期时,第一个进程会获取锁并开始生成新值。
40)解释一下不应使用 Memcached 的原因?
- Memcached 常见的误用是将其用作数据存储,而不是缓存
- 永远不要将 Memcached 用作运行应用程序所需信息的唯一来源。数据也应始终通过其他来源提供
- Memcached 只是一个键或值存储,无法对数据执行查询或对内容进行迭代以提取信息
- Memcached 不提供任何形式的安全保护,无论是加密还是身份验证
41)当服务器关闭时,Memcached 中存储的数据是否仍然可用?
Memcached 中存储的数据不具有持久性,因此如果服务器关闭或重新启动,则 Memcached 中存储的所有数据都会被删除。
42)请说出 Memcache 和 Memcached 之间的区别?
- 内存缓存: 它是一个扩展,允许您使用方便的面向对象 (OOP) 和过程接口。它旨在减少动态 Web 应用程序中的数据库负载。
- 记忆快取: 它是一个使用 libmemcached 提供与 Memcached 服务器通信的 API 库。它用于通过减轻数据库负载来增加动态 Web 应用程序。它是最新的 API。
43)解释蓝绿部署模式
蓝/绿配色模式解决了自动部署过程中面临的最重要的挑战。在蓝/绿部署方法中,您需要确保两个相同的生产环境。但是,在任何给定时间点,其中只有一个是 LIVE。LIVE 环境称为蓝色环境。
当团队准备发布下一个版本的软件时,他们会在称为绿色环境的环境中进行最后阶段的测试。验证后,流量将被路由到绿色环境。
44)容器有哪些?
容器是一种轻量级虚拟化技术。它们提供进程间的隔离。
45)对于 DevOps 来说,事后分析会议是什么?
事后分析会议的目的是讨论出了什么问题以及需要采取哪些步骤来避免失败。
46)构建小型云的最简单方法是什么?
VMfres 是从虚拟到 IaaS 云的最有效选择之一 Box 很快就能创建虚拟机。但是,如果您想要轻量级 PaaS,那么 Dokku 是一个不错的选择,因为 bash 脚本可以在 Dokku 容器之外成为 PaaS。
47)说出两种用于 docker 网络的工具。
对于 docker 网络,您可以使用 Kubernetes 和 Docker swarm。
48)列举一些实施 DevOps 的领域
DevOps 用于生产、IT 运营、生产反馈及其软件开发。
49)什么是“CBD”?
CBD 或基于组件的开发是一种独特的产品开发方法。在这种方法中,开发人员总是寻找现有的定义明确、经过测试和验证的组件来组合和组装成产品,而不是从头开始开发。
50)参考 DevOps 解释结对编程
结对编程是极限编程规则的一种工程实践。在这种方法中,两个程序员在同一个系统上、在同一个设计/算法/代码上工作。
一名程序员充当“司机”。另一名程序员充当“观察员”,持续监控项目进度以发现问题。角色可以在任何时间点互换,无需事先通知。
51)解释弹性测试
确保故障后恢复且不丢失数据和功能的测试称为弹性测试。
52)说出三个重要的 DevOps KPI
三个最常见的 DevOps KPI 是:
- 平均故障恢复
- 部署频率
- 部署失败的百分比
这些面试问题也会对你的口试有帮助