DevOps不是一个独立的工作,事实上它甚至不是一个职位;这是某种跨学科的软件工程新方法。IT专业人士通常在自己的职业生涯过程中会担任DevOps中担任某些职责,而且该职位十分火热。
DevOps结合了软件编码知识与质量保证(QA)技能,还有业务工作流程软件的持续开发以及部署。未来的开发者必须证明自己拥有足够的技能与知识来参与和管理DevOps组织。
练习这些在DevOps面试时的问题,以展示自己的才华来争取这个令人垂涎的职位。
突出强调你对DevOps原理的理解,并向面试官展示你的背景以及如何准备担任这个角色。
DevOps的职责范围各不相同,但大多数入门级DevOps角色需要具有计算机科学的学士学位或者相关领域经验,包括编码、QA测试以及IT基础设施组件等。更高级别的DevOps角色可能需要在系统架构与软件设计上的高级学位。
谈及你在虚拟化方面的认证,云计算和具体的编程语言。还有供应商提供的e-learning软件开发工具,如代码分析工具或系统管理与自动化工具,可以更完整的展现你的专业知识。
比较DevOps的招聘职位和你的简历。大多数入门级DevOps相关职位要求三到五年的代码开发与测试经验。DevOps涉及操作和部署,可能会要求至少四年的运营经验,例如在数据中心或云基础架构领域的IT系统管理工作。强调自己的系统管理与工作流自动化,配置管理和发布管理经验。
DevOps依赖于开发、测试与运营团队之间密切的合作关系,任何科学的管理后台经验都是值得在面试中分享的。让潜在雇主了解你如何让不同的团队客服障碍,共同努力,保持严格的发布计划,并适应新的工具与技术。
敏捷与迭代
持续集成和部署
聊天运营和配置管理
GitHub、QA和发布管理
你的系统背景如何
DevOps专家需要在服务器和系统上具备运营经验,包括部署能够支持负载的网络硬件与架构部署。
一些DevOps工作需要额外的系统知识,包括服务器集群与高并发系统。在这个级别,DevOps工程师需要分析系统可用性并部署升级来提升效率、可扩展性与可用性或者弹性。需要具备坚实的操作系统与支撑技能,如网络安全、VPN和代理服务器配置。
DevOps依赖于虚拟化进行快速工作负载提供——为新虚拟机提供计算资源以支持下一次部署——所以需要对主要的虚拟化管理平台有详细了解。这包括备份、迁移以及生命周期管理策略,以便保护、优化与恢复计算资源。一些环境可能还很重视针对虚拟容器开发的微服务软件开发。
运营专家必须包括额外的系统管理工具知识,如Microsoft System Center、Puppet、Nagios和Chef。DevOps工作十分重视运营能力,如解决问题、故障处理和分析技能。
分享一些你是如何在节约开销的同时提升利用率,如服务器整合项目或资源分配与性能监控经验。
DevOps涉及到编码、测试、部署与加固等环节。工具是否合适取决于团队规模以及组织专业化程度。
软件配置管理和版本/发布(版本控制)巩固,包括Apache Subversion、Mercurial、Fossil等等,可以完善文档变更请求。当软件变更时,开发者可以更容易遵循公司的最佳实践与策略。
持续集成(CI)工具如Rational Build Forge、Jenkins和Semaphore能整合所有开发者的工作代码拷贝到一个集中版本。这些工具适用于更大型的团队,其中的开发者们同时工作于相同的代码库上。
QA专家使用代码分析工具来测试软件的错误、安全和性能。如果你已经使用过HP的Fortify Static Code Analyzer,可以说说它是如何发现代码语言中潜在的安全风险。同样可以聊聊 GrammaTech的CodeSonar工具,如何使用它来定位内存泄漏、缓存欠载以及其他C/C++和Java代码的检查。
你需要掌握主语言命令——Ruby、C#、.NET、Perl、Python、Java、PHP、Windows PowerShell——并且能够在相关的操作系统环境下使用——Windows、Linux和Unix。
预计下一阶段的DevOps面试问题将问及你在云服务上的经验,可能涉及到DevOps的迭代、IT集成经验。
许多DevOps专家需要拥有与主要云服务提供商,如亚马逊网络服务(AWS)弹性计算云和谷歌云平台的经验。分析你身边使用云平台的知识、提供新实例、编写新的软件以及通过云提供商的API或软件开发工具包来配置集群扩展计算能力,管理工作负载生命周期等。
这是一个讨论如何用基于容器的云来替代传统虚拟机的好时机。基于事件的云如AWS Lambda提供另外一种软件开发方法,对有经验的DevOps候选者来说是个福音。
强调对第三方工具的全面了解能把DevOps带到云项目。专注于使用云,而不是刚上市的一次性成功项目或任务。
在面试时,谈及自己在处理大数据时的经验,以及如何采用云基础设施架构提高它的扩展性,以处理复杂的计算任务。
强调自己置身于DevOps项目管理的问题中。框架化的围绕解决复杂的业务问题来讨论DevOps管理。
作为一名具有管理责任的专家,必须证明自己对DevOps项目管理策略有着清醒地认识。讨论你如何与团队制定目标、简化工作流程、维护范围(防止蠕变),研究和推出新工具或框架,转换需求到工作流并跟进。包括如何配置管理与发布管理,还有采用其他工具来跟踪项目。
高级的DevOps角色,如首席DevOps工程师,需要更多商业头脑和人际交往能力。分享你如何解决纠纷与团队冲突的经验。
这个DevOps面试问题可以真正提升你从“合格”到“理想人选”。
DevOps是如此的多元化与包容,它很少以编码、测试和系统结束。一个DevOps项目可能依赖于类似SQL或NoSQL的数据库平台,数据结构服务器如Redis或者配置与事件跟踪系统,如Redmine。
web应用程序是现代企业必备的,说明自己有Web服务器,如Microsoft Internet Information Services、Apache Tomcat 或其他Web服务器的应用背景。
遵循标准化方法来进行软件开发的组织都会寻找熟悉敏捷应用程序生命周期管理的技术人才与工具。
而且DevOps角色的职位描述通常还十分注重熟悉业务,在监管行业还会要求候选人熟悉ITIL实践。