DevOps面试题及答案(PDF)
以下是面向初级和有经验的候选人的DevOps面试问题及答案,助您获得心仪的工作。
面向初级DevOps工程师的面试题
1) 请解释什么是DevOps?
这是IT领域一个新兴的术语,它是一种强调软件开发者和运维团队之间协作与沟通的实践。它专注于更快地交付软件产品并降低发布失败率。
2) 请说明DevOps背后的关键方面或原则是什么?
DevOps背后的关键方面或原则是
- 基础设施即代码
- 持续部署
- 自动化
- 监控
- 安全性
3) DevOps在应用程序开发和基础设施方面的核心操作是什么?
DevOps的核心操作是
应用程序开发
- 代码构建
- 代码覆盖率
- 单元测试
- 打包
- 部署
基础设施
- 配置
- 配置
- 编排
- 部署
4) 请解释在AWS中“基础设施即代码”是如何被处理或执行的?
在AWS中,
- 基础设施的代码将采用简单的JSON格式
- 这些JSON代码将被组织成称为模板的文件
- 这些模板可以部署到AWS DevOps中,然后作为堆栈进行管理
- 之后,CloudFormation服务将负责堆栈中的创建、删除、更新等操作
5) 请说明哪种脚本语言对DevOps工程师最重要?
一种更简单的脚本语言对DevOps工程师来说会更好。Python似乎非常流行。
6) 请解释DevOps如何帮助开发人员?
DevOps可以帮助开发人员快速修复bug和实现新功能。它也有助于团队成员之间更清晰的沟通。
7) 列出一些流行的DevOps工具?
一些流行的DevOps工具有
- Jenkins
- Nagios
- Monit
- ELK(Elasticsearch, Logstash, Kibana)
- Jenkins
- Docker
- Ansible
- Git
8) 请说明您在什么情况下使用过SSH?
我使用SSH登录到远程机器并在命令行上工作。除此之外,我还使用它来隧道连接系统,以便在不安全的网络上两个不受信任的主机之间实现安全的加密通信。
9) 请解释您将如何处理修订(版本)控制?
我处理版本控制的方法是将代码发布到SourceForge或GitHub上,以便所有人都可以查看。另外,我还会发布上次修订的清单,以确保解决任何未解决的问题。
10) HTTP请求有哪些类型?
HTTP请求的类型有
- GET
- HEAD
- PUT
- POST
- PATCH
- DELETE
- TRACE
- CONNECT
- OPTIONS
11) 请解释如果Linux构建服务器突然变慢,您会检查什么?
如果Linux构建服务器突然变慢,您需要检查以下三件事
应用层故障排除 | 与RAM相关的问题、磁盘I/O读写问题、磁盘空间相关问题等。 |
系统级故障排除 | 检查应用程序日志文件或应用程序服务器日志文件、系统性能问题、Web服务器日志——检查HTTP、Tomcat日志、jboss或WebLogic日志,以查看应用程序服务器的响应/接收时间是否是导致缓慢的原因,应用程序内存泄漏 |
依赖服务故障排除 | 防病毒相关问题、防火墙相关问题、网络问题、SMTP服务器响应时间问题等。 |
12) DevOps的关键组成部分是什么?
以下是一些重要的DevOps生命周期阶段
- 持续开发
- 持续集成
- 持续测试
- 持续部署
- 持续监控
- 持续反馈
- 持续运维
13) 请命名几个用于DevOps实施的云平台
用于DevOps实施的流行云计算平台有
- Google Cloud
- 亚马逊网络服务 (AWS)
- Microsoft Azure
14) 请说出使用版本控制系统的几个好处
- 版本控制系统允许团队成员随时在任何文件上自由工作。
- 所有过去的版本和变体都紧密地打包在VCS中。
- 像分布式VCS这样的系统可以存储项目的完整历史记录,因此在中央服务器发生故障时,您可以使用您团队成员的本地Git存储库。
- 允许您查看文件中具体发生了哪些更改
15) 请解释Git Bisect
Git bisect通过二分查找帮助您找到引入错误的提交。
16) 什么是构建?
构建是一种将源代码组合起来以检查其是否作为一个单元工作的过程。在构建创建过程中,源代码将经过编译、检查、测试和部署。
17) 什么是Puppet?
Puppet是一个有用的项目管理工具。它可以帮助您自动化管理任务。
18) 请解释双因素认证
双因素认证是一种安全方法,用户需要提供两个不同类别的身份验证方式。
19) 请解释“金丝雀发布”一词。
金丝雀发布是一种将新版本软件引入生产环境的风险降低的模式。它通过以受控的方式将其提供给一小部分用户来实现。在将其提供给所有用户之前。
20) 哪些类型的测试对于确保新服务已准备好投入生产很重要?
您需要进行持续测试,以确保新服务已准备好投入生产。
面向有经验的DevOps工程师的面试题
21) 什么是Vagrant?
Vagrant是一个用于创建和管理虚拟化环境以进行软件测试和开发的工具。
22) DNS中使用PTR有什么作用?
指针记录(PTR)用于反向DNS查找。
23) 什么是Chef?
它是一个强大的自动化平台,可以将基础设施转化为代码。在此工具中,您可以编写用于自动化流程的脚本。
24) 实施DevOps的先决条件是什么?
以下是DevOps实施的有用先决条件
- 至少一种版本控制软件
- 团队成员之间的良好沟通
- 自动化测试
- 自动化部署
25) 请说出一些应遵循的DevOps成功最佳实践。
以下是DevOps实施的关键最佳实践
- 交付速度是指将任何任务投入生产环境所需的时间。
- 跟踪在各种情况下发现的缺陷数量
- 衡量实际的平均恢复时间(生产环境发生故障时)非常重要。
- 客户报告的bug数量也会影响应用程序的质量。
26) 请解释SubGit工具
SubGit帮助您将SVN迁移到Git。它还允许您构建本地或远程Subversion存储库的可写Git镜像。
27) 请说出一些重要的网络监控工具
一些最著名的网络监控工具是
- Splunk
- Icinga 2
- Wireshark
- Nagios
- OpenNMS
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中打开特定目录,您可以使用自定义键盘快捷键。
为此,在新自定义键盘的命令字段中,输入genome – terminal – – working – directory = /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 Tokens: CAS token会附加到从缓存中检索的对象。您可以使用该token来保存更新的对象。
- Callbacks: 它简化了代码。
- getDelayed: 它减少了脚本等待服务器响应结果的时间。
- Binary protocol: 您可以使用二进制协议代替ASCII与较新的客户端通信。
- Igbinary: 以前,客户端总是使用复杂数据进行值序列化,但使用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效应?如何防止这种效应?
Dogpile效应是指缓存过期时,网站受到客户端同时发出的多个请求的打击。这种效应可以通过使用信号量锁来防止。在此系统中,当值过期时,第一个进程会获取锁并开始生成新值。
40) 请解释Memcached不应如何使用?
- Memcached的常见误用是将其用作数据存储,而不是缓存。
- 切勿将Memcached用作运行应用程序所需信息的唯一来源。数据应始终通过其他来源提供。
- Memcached只是一个键值存储,无法对数据执行查询或迭代内容以提取信息。
- Memcached在加密或身份验证方面不提供任何形式的安全。
41) 当服务器关机时,Memcached中存储的数据是否仍然可用?
Memcached中存储的数据不是持久化的,所以如果服务器关机或重启,那么存储在Memcached中的所有数据都会被删除。
42) 请说明Memcache和Memcached之间的区别?
- Memcache:它是一个扩展,允许您通过方便的面向对象(OOP)和过程接口进行工作。它旨在减少动态Web应用程序中的数据库负载。
- Memcached:它是一个使用libmemcached库提供与Memcached服务器通信API的扩展。它用于通过减轻数据库负载来提高动态Web应用程序的性能。这是最新的API。
43) 请解释蓝绿部署模式
蓝绿部署模式解决了自动部署过程中面临的最重要的挑战。在蓝绿部署方法中,您需要确保两个完全相同的生产环境。然而,任何时候只有一个是活动的。活动环境称为蓝环境。
当团队准备好下一个软件版本时,他们会在称为绿环境的环境中进行最终阶段的测试。验证后,流量将路由到绿环境。
44) 什么是容器?
容器是一种轻量级虚拟化。它们在进程之间提供隔离。
45) 关于DevOps,什么是事后复盘会议?
事后复盘会议是为了讨论哪里出了问题以及需要采取哪些步骤来避免故障。
46) 构建小型云的最简单方法是什么?
VMfres是从Virtual Box VMs快速创建IaaS云最有效的方法之一。但是,如果您想要轻量级的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是
- 平均故障恢复时间
- 部署频率
- 失败的部署百分比
这些面试问题也将有助于您的口试