面试DevOps团队时可能会被到问哪些问题?

640?wx_fmt=jpeg
作者 & 编辑 | 张婵
reddit 上一位网友要给自己的团队招募一位新的 DevOps 成员,向大家询问有哪些问题可以很好地筛选候选人。这些问题你能回答吗?
楼主的问题

Hi 各位,

我们打算给我们的小团队新招一名 DevOps 成员,有什么好的问题/代码挑战可以帮我们过滤掉不合适的候选人?

任务细节:

我们的开发设置需求跟这个类似 (https://magento.stackexchange.com/questions/52991/managing-magento-composer-deployment/53330#53330),但使用 deployer 而不是 Capsitrano。

理想情况下,将 deployer 添加到我们已经使用的 docker-image 中,并且预装了很多有用的工具。

一些简单但关键的问题,例如这个简单的 CSS 问题:

以下 CSS 行之间有什么区别?

T1 T2 {};

T1, T2 {};

T1 > T2 {};

T1 + T2 {};

这个问题帮助筛掉了许多所谓的前端大师。在招 DevOps 成员的时候也一样。

重要提示:示例问题不适用于 DevOps 候选人,这只是我们用来面试前端候选人的问题。我们在寻找面试 DevOps 岗位的问题。

由于 Linux 知识对执行任务很重要,我们也打算问一些类似于“常见的 10 大 Linux 面试题“(https://www.youtube.com/watch?v=l0QGLMwR-lY)这样的问题。

热心回答

回复 1

你对候选人的要求陈述看起来非常直接。这些要求都是针对你的环境的特定技术 / 范例。这会限制搜索范围并且会给你带来麻烦。你需要面试候选人的适应能力和学习能力,需要学习如何找到能够在技术之间轻松切换并理解底层概念的人,而不是只知道具体细节的人。

回复层主

正是如此。

当我面试 DevOps 成员时,这就是我关注的内容(技术内容很少)。我也喜欢问开放式问题,让面试者谈论从事的工作,而不是技术琐事。当你问他们从事的工作时,你可以了解到他们对自己所做的事情的理解程度。如果他们的工作做的不好,就只能在很浅的层面上谈论项目。如果他们可以详细讨论堆栈的多个层次,那么你就知道他们有学习堆栈的能力,可以与其他团队成员进行交流,并考虑系统如何交互。

  1. 在谈论以前的工作时,他们对团队 / 人员的工作有多了解?如果我得到很多诸如“我不知道它是如何工作的,那是别人的责任”这样的回答,就可以判定他们不是好的 DevOps 候选人。与一起工作的其他团队 / 人员沟通以了解他们是如何互动的。

  2. 让他们谈论已经完成的一些项目,看看他们对每个部分从上到下的工作方式知道多少。如果他们只理解项目的一小部分,那么他们不是一个好的 DevOps 候选人。对整个堆栈(从基础架构,代码到部署和配置)谈论的越深入,候选人越强大。这是问题 1 的延伸。

  3. 描述可能由配置漂移引起的问题以及避免它的方法。什么是不可变基础设施?

  4. 为一个简单的项目创建一个 CI / CD 管道(技术自选)。他们可以使用 travis,gitlab,jenkins(只需要看 Jenkinsfile 而不是托管的 Jenkins 实例)等。

  5. 使用 docker-compose 构建和启动一个完整的堆栈应用程序(用至少两种不同的编程语言,一个数据库和一个负载均衡器)。至少使用两个有两个不同私有 IP 范围的网络。如果想要一点额外的挑战,让他们说说加密 / 解密 screts 的方法。

回层主

如果我得到很多诸如“我不知道它如何工作的,那是别人的责任”这样的回答,就可以判定他们不是好的 DevOps 候选人。

我不同意这个观点。在一个真正的大公司中,不可能知道所有事情,有些事情就是应该由别人来处理。

我的意思是,假设你在一家公司的 DevOps 团队工作,有人问你内部数据中心的冷却系统是如何工作的。

你会不会回答“我不知道它是如何工作的,这是别人的责任”?

640?wx_fmt=jpeg

回复 2

通常我在电话面试中听到“给我发送一下公共 ssh 密钥“就 pass 掉这个候选人。我很惊讶有这么多人连这都不会做。

回层主

我是一个系统管理员,在很多招聘进来的工程师上班的第一天我就通过这个问题送走了他们……我同意你的观点。

回层主

是他们无心发了你私钥还是他们不知道你在问什么?

回楼上

两种情况都有。你还有可能收到公共 ADN 私钥。我甚至收到过 gpk 密钥。

最糟的是要求发送 howto 的。这些人缺乏这项工作中最重要的能力:使用搜索引擎。

回楼上

确实如楼上所说,但更多的时候显然是缺乏 PuTTY 以外的任何 ssh 经验。就像,我会正确地得到密钥,但它仍然是.ppk 格式,他们不了解它们之间的差异(或者这是多么容易修复)。

通常,当他们弄清楚一件以前从来没做过的事情时已经过去了 20 分钟。对于 DevOps 这种在 Unix 类后端工具上投入巨大的职位,这样的候选人明显没希望。

回复 3

一个完整的表单如下,但还要就此问一些具体问题。基本的 Unix 工具集和函数技能是任何 DevOps 岗位人员必备的,还有了解进程和线程之间的区别。

  • ls, cd, mv, find, env, strings, man, nc, telnet, ssh, openssl, gzip, rsync, tar, /bin/sh, traceroute

  • DNS,HTTP,SSL(TLS)

  • 对至少一个 sql 数据库引擎 / 特性的基本理解

  • 一些实际的脚本:bash,python,甚至 perl 或 ruby

  • 能调试 socket 连接吗?

特别是对 DevOps:必备经验包括 awscli 经验,了解 IAM 规则集,Hashicorp 工具和一些配置编排(通常会问 Ansible,Puppet 等)。

回复 4

再强调一次... Devops 不是一个角色或一组技术,它是一种理念。

问一下他们解决问题的方法,然后就可以更进一步问一些技术问题。

真正做 DevOps 的人不会怕任何技术或熟练度,但必须有在不同环境下为不同人即决问题的意识。

如果我是面试官我会问这些问题:

  • 当我们即将发布 app 新版本时,有 4 个开发人员要在最终发布到生产环境之前做人工测试。这样版本发布就会变得很慢。告诉我你怎么改善这个问题。

  • 我们需要在应用程序服务器上部署热修补。这是一个 Tomcat 服务器内的 warfile 文件(打个比方,这并不重要)。告诉我如何在停机/不停机的情况下去做,以及分析每种方法的利弊。

  • 我们的应用程序在每次发布新版本后速度都会变慢,我们应该做些什么检查来分析原因?如果遇到其中一个问题,你如何解决?

  • 版本控制系统是什么?你知道 / 使用过哪些版本控制系统?什么是 pull request?如何防止合并冲突?

  • 基础设施即代码(IaC) 是什么?它的优点是什么?说出使用 IAC 的一些产品(OSS 或商业产品)。

  • 什么是持续集成,持续交付和持续部署?其中会使用到的技术 / 产品 / 方法有哪些?

  • 什么是管道?为什么需要管道?

  • 谈谈虚拟机和容器之间的差异。

如果候选人知道这些概念,你可以接着问如在 jenkins 中执行 X 或者在 git 中执行 Y 或者在 kubernetes 中执行 Z.

回层主

说的好。

Devops 不是一个角色或一组技术,它是一种理念。

明白了,所有团队都应该参与其中,我们需要具备良好系统管理和 docker 技能的人,这样开发人员就不需要管这部分的流程了。

层主回复

是的,所有的团队都应该参与其中。做 DevOps 的人是技术推动者和帮手,因此需要了解人员,他们的工作,数据流,触发什么流程以及如何交付软件,然后围绕工具和自动化为各种人员提供更轻松便捷的东西。

始终遵循以下经验法则:人员,流程和技术。

重要的是开发者应该知道 DevOps 做了什么,为什么这么做。你希望公司各部门之间能展开合作,共享知识并相互帮助。 做 DevOps 的人只是让他们的生活更轻松的中心人物。

回复层主

当我们即将发布 app 新版本时,有 4 个开发人员要在最终发布到生产环境之前做人工测试。这个版本发布就会变得很慢。告诉我你怎么改善这个问题。

Docker。

我们需要在应用程序服务器上部署热修补。这是一个 Tomcat 服务器内的 warfile 文件(打个比方,这并不重要)。告诉我如何在停机/不停机的情况下去做,以及分析每种方法的利弊。

Docker。

版本控制系统是什么?你知道 / 使用过哪些版本控制系统?什么是 pull request?如何防止合并冲突?

git 管理的 Dockerfile

基础设施即代码(IaC) 是什么?它的优点是什么?说出使用 IAC 的一些产品(OSS 或商业产品)。

gitlab 中的 Dockerfile

什么是持续集成,持续交付和持续部署?其中会使用到的技术 / 产品 / 方法有哪些?

Kubernetes 与 gitlab 集成

谈谈虚拟机和容器之间的差异。

一个是 Docker,另一个不是。

我赢了吗? (显然 /s)

(注意后面的 /s)

回复 5

问题似乎非常具体。我从来没有编辑或使用过任何 CSS。我的大部分工作都是通过 ansile 或 cloudformation 实现自动化。

回层主

这是前端开发人员面试问题,不是 DevOps 面试问题。

如果有人在 DevOps 面试中问我 CSS 问题,我直接走人。

回复 6

如果我是 DevOps 面试官我会问:

  • 解释以下从开发到生产环境部署变更的过程。

  • 你会如何自动缩放一个应用程序?

  • ingress 和 egress 流量可能涉及哪些成本?

  • 架构在云中运行的服务时应该如何设计?

  • JSON,yaml 和 XML 有什么区别? 每个写出一个例子。

  • 什么是 CI / CD? 在做 CI/CD 时可以选择哪些工具?

  • 解释对象存储和传统文件系统之间的差异。

回复 7

我上个月刚刚面试了 DevOps 岗位,面试涉及到代码。 我被要求使用 Java 实现具有 SNI 支持的反向代理。 可以使用高级库来(例如 Undertow,Embedded Jetty 等)或更低级的 XNIO 等。我认为这是一种很好的方法,可以检验我的代码质量是否良好,以及对 SSL 等 DevOps 概念的基本理解。

回层主

使用 Java 实现

如果我在 DevOps 面试中看到这个直接拍屁股走人。他们是想要一个做运维的开发,而不是要去做自动化。

回层主

SSL 不是 DevOps 的概念。SSL 是一项已使用了 20 多年的安全协议。

层主回复

当然,但我无法想象一个做 DevOps 的人不知道 SSL。

回层主

你是认真的?我怀疑 Java 开发都不能轻松完成,更不要说大多数做 DevOps 的人了。他们应该问如何在 AWS 上保护 Java 应用程序。

楼主更新答复

谢谢你们所有的好建议。 很多人提到了开放式 / 宏观性问题的重要性。

我收集了一些好的问题:

讲述一下你拯救生产环境的经历。你是如何发现问题的? 是怎么解决这个问题的?你做了什么来确保这种问题不再发生?

你曾经参与过的最糟糕的项目是什么? 这个项目最后是成功还是失败了?你在这个项目中负责的是什么工作?哪里出了问题?如果重做这个项目你会怎么做?

绘制出你当前运行的系统。对你绘制出的这个架构你怎么评价?

你在面试 DevOps 岗位时遇到过什么问题?如果你是面试官你又会问什么问题?


活动推荐

目前运维的方法有很多痛点,无论是异常检测,故障发现,瓶颈分析,自愈等工作都需要有大量的人工参与。随着公司越做越大,运维的场景也将会变得越来越复杂。那么仅仅依靠人工经验的运维工作将会变得捉襟见肘,所以就必然会走向基于机器学习算法的智能运维(AIOps)。来 ArchSummit 全球架构师峰会上,和我们一起关注 AIOps 的现状和未来发展。

640?wx_fmt=png

智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值