六個問題搞定DevOps Interview
準備回答這些問題,能夠在面試時突出展示自己廣泛的經驗、對工具的廣泛知識以及關於精通DevOps。
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實踐。