2019 DevOps 必備面試題——DevOps 理念篇


原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3
原文作者:Saurabh Kulshrestha
翻譯君:CODING 戴維奧普斯

圖片

你是一位 DevOps 工程師還是想進入 DevOps 領域的新手?如果是,那么你已經把握住了未來趨勢。在本文中,我列出了幾十個在雇佣 DevOps 工程師時,面試官可能會問到的問題以供參考。

理解 DevOps 的關鍵點在於它不僅僅是一種技術集合,而是一種思維方式、一種文化。DevOps 需要一種文化轉變——將運維與開發相結合,並需要一個相關聯的技術工具鏈來促進協作變革。由於 DevOps 理念仍處於非常初級的階段,因此 DevOps 的應用以及適應和協作所需的帶寬因團隊而異。但是,你可以開發 DevOps 技能組合,提升自我,成為任何類型的團隊都需要的理想候選人。

成為一名 DevOps 工程師有哪些要求?

在尋找能勝任 DevOps 工程師的人選時,團隊會有一套清晰的技能需求。其中最重要的是:

  • 熟悉基礎架構自動化工具,如 Chef,Puppet,Ansible,SaltStack 或 Windows PowerShell DSC。
  • 熟練掌握 Ruby,Python,PHP 或 Java 等語言。
  • 幫助你跨團隊和角色進行溝通和協作的人際關系技巧。

為了組織下面的問題,我把自己放在了你的位置上,本文中的大多數答案都是以你的角度來寫的——即一個有潛力的 DevOps 專家。

一般的 DevOps 相關面試問題

這類基礎問題是與任何特定 DevOps 階段無關的問題,旨在測試你對 DevOps 的理解程度,而不是關注特定的工具或階段。

Q1.DevOps 和敏捷的根本區別

下表中列出了兩者之間的差異。

圖片

Q2.DevOps 需要什么

我認為這個答案應該從解釋市場總體趨勢開始。現在許多公司都在通過嘗試向客戶快速發布小的功能點,以取代發布大的功能組。這樣做有許多優點,比如能快速收到客戶反饋、提高軟件質量等,從而大幅提升客戶滿意度。為實現這一目標,公司必須:

  1. 增加部署頻率
  2. 降低新版本的故障率
  3. 縮短交付時間
  4. 新版本崩潰時更快的平均恢復時間

DevOps 滿足所有這些需求,並有助於實現無縫的軟件交付。你可以舉出像 Etsy、Google 和亞馬遜這樣的公司的例子,這些公司已經采用 DevOps 達到了甚至五年前都無法想象的性能水平。他們每天都在進行數十、數百甚至數千次代碼部署,同時提供世界級的穩定性、可靠性和安全性。

如果我必須測試你對 DevOps 的了解程度,那么你應該知道敏捷(Agile)和 DevOps 之間的區別。下一個問題就是針對這一點的。

Q3.DevOps 與敏捷/SDLC 有何不同?

我建議你按照以下說明進行操作:
敏捷是一套關於如何實現生產即開發軟件的價值觀和原則。舉個例子:如果你有一些想法,並且希望將這些想法轉化為可用的軟件,那么你可以使用敏捷價值觀和原則作為實現此目的的方法。但是,該軟件可能只適用於開發人員的筆記本電腦或測試環境,你希望以一種安全簡單的方式,快速、輕松、可復用地將該軟件移植到生產基礎架構中。要做到這一點,你需要 DevOps 工具和技術。

總而言之,敏捷軟件開發方法側重於軟件的開發,DevOps 則負責以最安全可靠的方式開發和部署軟件。

現在請記住,你在之前的回答中包含了 DevOps 工具,因此請准備好回答一些與此相關的問題。

Q4.哪些是最頂尖的 DevOps 工具?你使用過哪些工具?

下面介紹了一些最受歡迎的 DevOps 工具:

  • Git:版本控制系統工具
  • Jenkins:持續集成工具
  • Selenium:持續測試工具
  • Puppet、Chef、Ansible:配置管理和部署工具
  • Nagios:持續監控工具
  • Docker:容器化工具

如果有需要你也可以提及其他工具,但請確保在你的回答中包含上述工具。

接下來的回答有兩種可能:

  1. 如果你掌握上述所有工具,那么你可以說自己已經使用過所有這些工具來開發高質量的軟件,並能輕松、頻繁和可靠地部署這些軟件。
  2. 如果你只對上述某些工具有經驗,那么請提及這些工具,並說自己對這些工具有專業性,同時對其余工具進行一些概述。

Q5.所有這些工具如何協同工作?

下面給出了一個通用的邏輯流程,在這個流程中所有內容都將自動進行無縫交付。但是此流程也會因不同組織的不同需求而導致一些差異。

  1. 開發人員開發代碼,源代碼由 Git 等版本控制系統工具管理。
  2. 開發人員將此代碼提交到 Git,並且對代碼所做的任何更改都將提交到此代碼倉庫。
  3. Jenkins 通過 Git 插件從倉庫中提取此代碼,並使用 Ant 或 Maven 等工具構建它。
  4. 配置管理工具(如 Puppet)部署和提供測試環境,然后 Jenkins 在使用 Selenium 等工具進行測試的測試環境上發布此代碼。
  5. 代碼測試結束后,Jenkins 就會將其發送到生產服務器上進行部署(甚至生產服務器也由 Puppet 等工具進行配置和維護)。
  6. 部署后,Nagios 等工具會進行持續監控。
  7. Docker 容器提供測試環境來測試構建功能。

圖片

Q6.DevOps 有哪些優勢?

對於這個答案,你可以利用你過去的經驗,解釋 DevOps 是如何幫助你完成之前的工作。如果沒有任何此類經驗,那么你可以提及以下優勢。

技術優勢:
持續的軟件交付
修復不太復雜的問題
更快地解決問題

商業優勢:
更快速地提供新功能
更穩定的操作環境
更多可用於提升價值的時間(而不是修復/維護)

Q7.DevOps 幫助我們實現的最重要的事情是什么?

據我所知,DevOps 幫助我們實現的最重要的事是盡可能快地將更改投入生產,同時最大限度地保證軟件質量和合規性。這是 DevOps 的主要目標。

你也可以提及 DevOps 的許多其他積極影響,例如團隊之間更清晰的溝通和更好的工作關系——即運維團隊和開發團隊共同合作,通過提供高質量的軟件提升客戶滿意度。

Q8.用一個工業/現實生活中的使用案例來解釋 DevOps

有許多行業正在應用 DevOps,所以你可以舉出任意案例,也可以參考下面的例子:
Etsy 是一個 P2P 電商網站,專注於手工或古董物品,以及獨特的工廠制造的物品。Etsy 在緩慢且痛苦的網站更新中掙扎,這些更新經常導致網站崩潰,影響了數百萬通過在線市場銷售商品的 Etsy 用戶的使用,並且很有可能將商品推向競爭對手。

在新技術管理團隊的幫助下,Etsy 從每周進行兩次四小時全站點部署的瀑布模型,轉變為更敏捷的模式。如今它擁有完全自動化的部署管道,據報道,其持續交付實踐每天可以進行 50 多次更少中斷的部署。

Q9.解釋與分享在之前的工作中,你在軟件開發和技術運維方面的理解和專業知識

這個回答主要是分享你過去的工作經驗,並試着解釋你在以前工作中的靈活性。可以參考以下示例:
DevOps 工程師幾乎總在業務關鍵在線環境中全天候工作。我能夠適應隨叫隨到的工作,並且承擔生產系統的維護責任;我成功自動化了支持持續軟件部署的流程;我有使用公有/私有雲、Chef 或 Puppet 等工具、使用 Python 和 PHP 等工具編寫腳本和實現自動化方面的經驗,並且具有敏捷相關的背景。

Q10.DevOps 的反模式有哪些?

一般來說通常你的研發組織中遵循了某種模式,但如果其他人普遍采用的模式對你的組織不起作用,並且你繼續盲目地遵循它,那么你實際上是在采用反模式。一些關於 DevOps 的錯誤認知包括:

  • DevOps 是一個過程
  • 敏捷就是 DevOps?
  • 我們需要一個單獨的 DevOps 小組
  • DevOps 將解決我們所有的問題
  • DevOps 意味着由開發人員來管理生產
  • DevOps 是開發驅動的發布管理
  • DevOps 不是開發驅動的
  • DevOps 不是 IT 業務驅動的
  • 我們不能應用 DevOps - 我們比較特別
  • 我們不能應用 DevOps - 我們找錯人了

點擊使用 CODING,體驗 DevOps 全工具鏈敏捷研發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM