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

原文地址:medium.com/edureka/dev…
原文做者:Saurabh Kulshrestha
翻譯君:CODING 戴維奧普斯ios

圖片

你是一位 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 達到了甚至五年前都沒法想象的性能水平。他們天天都在進行數10、數百甚至數千次代碼部署,同時提供世界級的穩定性、可靠性和安全性。網站

若是我必須測試你對 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 全工具鏈敏捷研發

相關文章
相關標籤/搜索