DevOps不是一個獨立的工作,事實上它甚至不是一個職位;這是某種跨學科的軟件工程新方法。IT專業人士通常在自己的職業生涯過程中會擔任DevOps中擔任某些職責,而且該職位十分火熱。
DevOps結合了軟件編碼知識與質量保證(QA)技能,還有業務工作流程軟件的持續開發以及部署。未來的開發者必須證明自己擁有足夠的技能與知識來參與和管理DevOps組織。
練習這些在DevOps面試時的問題,以展示自己的才華來爭取這個令人垂涎的職位。
讓我們談談你的教育和經驗
突出強調你對DevOps原理的理解,并向面試官展示你的背景以及如何準備擔任這個角色。
DevOps的職責范圍各不相同,但大多數入門級DevOps角色需要具有計算機科學的學士學位或者相關領域經驗,包括編碼、QA測試以及IT基礎設施組件等。更高級別的DevOps角色可能需要在系統架構與軟件設計上的高級學位。
談及你在虛擬化方面的認證,云計算和具體的編程語言。還有供應商提供的e-learning軟件開發工具,如代碼分析工具或系統管理與自動化工具,可以更完整的展現你的專業知識。
比較DevOps的招聘職位和你的簡歷。大多數入門級DevOps相關職位要求三到五年的代碼開發與測試經驗。DevOps涉及操作和部署,可能會要求至少四年的運營經驗,例如在數據中心或云基礎架構領域的IT系統管理工作。強調自己的系統管理與工作流自動化,配置管理和發布管理經驗。
DevOps依賴于開發、測試與運營團隊之間密切的合作關系,任何科學的管理后臺經驗都是值得在面試中分享的。讓潛在雇主了解你如何讓不同的團隊客服障礙,共同努力,保持嚴格的發布計劃,并適應新的工具與技術。
面試DevOps職位前必須牢記下列信息
敏捷與迭代
持續集成和部署
聊天運營和配置管理
GitHub、QA和發布管理
你的系統背景如何
DevOps專家需要在服務器和系統上具備運營經驗,包括部署能夠支持負載的網絡硬件與架構部署。
一些DevOps工作需要額外的系統知識,包括服務器集群與高并發系統。在這個級別,DevOps工程師需要分析系統可用性并部署升級來提升效率、可擴展性與可用性或者彈性。需要具備堅實的操作系統與支撐技能,如網絡安全、VPN和代理服務器配置。
DevOps依賴于虛擬化進行快速工作負載提供——為新虛擬機提供計算資源以支持下一次部署——所以需要對主要的虛擬化管理平臺有詳細了解。這包括備份、遷移以及生命周期管理策略,以便保護、優化與恢復計算資源。一些環境可能還很重視針對虛擬容器開發的微服務軟件開發。
運營專家必須包括額外的系統管理工具知識,如Microsoft System Center、Puppet、Nagios和Chef。DevOps工作十分重視運營能力,如解決問題、故障處理和分析技能。
分享一些你是如何在節約開銷的同時提升利用率,如服務器整合項目或資源分配與性能監控經驗。
你正在使用哪些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實踐。