DevOps工程師面試必備33問

DevOps面試問題

01 您能告訴我們DevOps和Agile(敏捷)之間的根本區別嗎?

答:儘管DevOps與敏捷方法(這是最流行的SDLC[Software Development Life Cycle]方法之一)有一些相似之處,但兩者在軟件開發方面都是根本不同的方法。以下是兩者之間的各種基本差異:

  • 敏捷方法 敏捷方法適用於敏捷中的開發同時敏捷方法適用於DevOps中的開發和操作。
  • 實踐和流程 敏捷涉及敏捷Scrum和敏捷看板等實踐,而DevOps涉及CD(持續交付),CI(持續集成)和CT(持續測試)等流程。
  • 優先級 敏捷優先考慮及時性,而DevOps優先考慮及時性和質量。
  • 發佈週期 DevOps提供較小的發佈週期並提供即時反饋,而敏捷僅提供較小的發佈週期而沒有立即反饋。
  • 反饋源 敏捷依賴於客戶的反饋,而DevOps涉及到自身(監控工具)的反饋。
  • 工作範圍 對於敏捷,工作範圍僅是敏捷,而對於DevOps,這是敏捷和對自動化的需求。

02 爲什麼我們需要DevOps?

答:如今,很多組織或企業正試圖通過一系列的發佈小的特性傳遞給客戶,而不是發佈大的特性集。這樣做有幾個好處,包括更好的軟件質量和快速的客戶反饋,所有這些好處導致更高的客戶滿意度,這是任何產品開發項目的最重要目標。爲此,公司需要:

  • 增加部署頻率
  • 縮短修復時間
  • 降低新版本的失敗率
  • 萬一新版本崩潰,請有更快的平均恢復時間

DevOps有助於滿足所有這些要求,從而實現無縫的軟件交付。像Amazon,Etsy和Google這樣的成熟組織已採用DevOps方法,從而實現了以前未知的性能水平。通過採用DevOps方法,組織可以在一天之內完成數以萬計的部署。此外,這樣做還可以提供一流的可靠性安全性穩定性

03 使用DevOps有哪些重要的業務和技術優勢?

答:DevOps爲該錶帶來了很多業務和技術優勢。下面列出了一些最重要的參數:

  • 商業利益:

    • 增強的操作環境穩定性
    • 更快地交付功能
    • 更多時間爲產品增值
  • 技術優勢:
    • 持續交付軟件
    • 更快地解決問題
    • 較小的複雜問題

04 您能列舉一些最常用的DevOps工具嗎?

答:以下是一些使用最廣泛的DevOps工具的列表:

  • Ansible/Puppet/chef/saltstack –配置管理和應用程序部署工具
  • Docker –容器化工具
  • Git/Gitlab –版本控制系統(VCS)工具
  • Jenkins –持續集成(CI)工具
  • Nexus - 製品庫管理工具
  • Jira –敏捷的團隊協作工具
  • wiki -文檔管理工具
  • Promtheus –連續監控工具
  • Selenium/jmeter –連續測試(CT)工具

05 Selenium的用途是什麼?

答:selenium用於DevOps中的連續測試。該工具專門從事功能和迴歸形式的測試。

06 您對DevOps中的Puppet有什麼瞭解?

答:這是一個配置管理工具,用於自動執行管理任務。Puppet利用主從結構,其中兩個實體通過加密通道進行通信。系統管理員需要執行許多重複性任務,尤其是安裝和配置服務器。編寫腳本來自動執行此類任務是一種選擇,但是當基礎結構很大時,執行的操作就會變得繁瑣重複。爲此,配置管理是一個不錯的解決方法。

Puppet幫助配置、部署和管理服務器。這不僅使此類冗餘任務變得更加容易,而且節省了總工作時間的很大一部分。成熟的配置管理工具:

  • 持續檢查主機所需的配置是否到位。如果更改了,配置將自動還原
  • 爲每個主機定義不同的配置
  • 對機器進行動態縮放(上下縮放)
  • 提供對所有已配置計算機的控制,以便可以將集中更改自動傳播到所有這些計算機

07 您對DevOps的反模式有什麼瞭解?

答:如果其他組織通常採用的DevOps模式在特定環境下不起作用,而組織仍在繼續使用它,則會導致採用反模式。換句話說,反模式是關於DevOps的神話。一些著名的反模式是:

  • 一個組織需要有一個單獨的DevOps組
  • 敏捷等於DevOps
  • DevOps是一個過程
  • DevOps是開發驅動的發佈管理
  • 由於組織獨特唯一的,因此無法進行DevOps
  • 我們不能做DevOps因爲我們已經很牛了
  • DevOps意味着開發人員管理生產
  • DevOps將解決所有問題
  • 無法在正在進行的DevOps過渡中包含組織的所有方面
  • 在DevOps過渡開始時未定義KPI
  • 通過一個新的DevOps團隊來減少與其他組織之間的隔離

08 DevOps有一個叫做CI的東西。它是什麼,目的是什麼?

答:DevOps中的CI代表持續集成。CI是一種開發實踐,開發人員可以在一天內多次將代碼集成到共享存儲庫中。

  • 開發和測試的持續集成提高了軟件的質量,並減少了交付所需的總時間。
  • 如果檢查代碼的團隊成員遇到編譯失敗,則開發人員將終止構建。如果開發人員不將編譯錯誤引入自己的工作空間中,那麼其他的開發成員就無法與共享源代碼存儲庫進行同步。
  • 這破壞了協作和共享的開發過程。因此,一旦配置項構建中斷,立即識別並糾正問題就很重要。
  • 通常,持續集成(CI)流程包括一組單元、集成和迴歸測試,這些測試在每次編譯成功時運行。如果上述任何一個測試失敗,CI構建就會被認爲是不穩定的(這在敏捷sprint中很常見,因爲開發正在進行中),並且沒有被破壞。

09 我們經常聽到DevOps向左移動。它是什麼?

答:畫在紙上的傳統軟件開發生命週期有左右兩邊。圖的左側包括設計和開發,而右側包括生產階段,壓力測試和用戶接受度。在DevOps中向左移動僅意味着需要在右側執行儘可能多的任務,即通常在應用程序開發過程的結尾發生,並將其納入DevOps方法的早期階段。有幾種方法可以完成DevOps中的操作,最值得注意的是:

  • 在每個敏捷sprint結束時創建可用於生產的文件(製品文件)
  • 在每個版本中都包含靜態代碼分析程序
  • 正確執行DevOps的級別直接取決於儘可能左移的程度。

10 DevOps中的CAMS代表什麼?

答:首字母縮寫CAMS通常用於描述DevOps方法論的核心信條。它代表:

  • 文化 Culture
  • 自動化 Automation
  • 度量 Measurement
  • 分享 Sharing

11 用來評估DevOps成功的幾個KPI是什麼?

答:kpi是關鍵績效指標的簡寫形式。爲了度量DevOps過程的成功,可以使用幾個kpi。其中最流行的有:

  • 應用性能
  • 應用程序的使用和流量
  • 自動測試通過率
  • 可用性
  • 體量的變化
  • 客戶的工單
  • 缺陷逃逸率
  • 部署頻率
  • 部署時間
  • 錯誤率
  • 部署失敗數
  • 負載時間
  • 平均故障檢測時間(MTTD)
  • 平均故障恢復時間(MTTR)

12 您認爲實施DevOps自動化的主要好處是什麼?

答:以下是實現DevOps自動化的主要好處:

  • 從CD方程式中消除人爲錯誤的可能性(核心收益)
  • 隨着任務變得更加可預測和可重複,一旦出現問題,就很容易識別和糾正。因此,它產生了更可靠和健壯的系統
  • 從CI管道中移除瓶頸。這會導致部署頻率增加和失敗的部署數量減少。它們都是重要的DevOps KPI

13 您對容器瞭解什麼?

答:容器是一種輕量級虛擬化形式,有助於在進程之間提供隔離。容器比chroot重,但比管理程序輕。

14 您對版本控制系統(VCS)有什麼瞭解?定義其用途。

答:版本控制系統或VCS是一種能夠記錄一段時間內對一個文件或一組文件所做的更改的系統。Git和Mercurial是兩個最受歡迎的版本控制系統。VCS的重要用途是:

  • 檢查導致問題的最後修改是什麼
  • 比較隨着時間的變化情況
  • 識別誰在什麼時間提出新的問題
  • 將一個或多個文件還原到某個較早的狀態
  • 將整個項目還原到以前的狀態

15 Git是流行的DevOps工具。告訴我們您將如何還原已經推送並公開的提交。

答:有兩種方法可以這樣做:

  1. 通過創建新的提交來撤消已被推送並公開的提交所做的所有更改。執行以下命令:
    git revert
  2. 通過修復或刪除新提交中的錯誤文件,然後將其推送到遠程存儲庫。對文件進行必要的更改後,使用以下命令將其提交到遠程存儲庫:
    git commit -m "commit message"

16 什麼是post mortem meetings?

參考回答:在這個會議上,我們討論出了什麼問題,應該採取什麼步驟,這樣失敗就不會再次發生。事後分析會議並不是要找出問題的癥結所在,而是要防止再次發生類似的工作,和ITIL中的問題管理是相類似的管理方法。並應重新計劃新的設計基礎設施,以便儘可能減少停機時間。如果錯誤我們無法避免,那麼我們應從錯誤中學習,以提交IT整體的質量管理。

17 資產管理和配置管理之間的比較。

答:監視和維護對實體或組有價值的東西的過程稱爲資產管理。配置管理是指控制,識別,計劃和驗證服務中的配置項以支持變更管理的過程。

18 您能否陳述和解釋連續測試的各個關鍵要素?

答:持續測試的各種關鍵要素包括:

  • 高級分析–用於預測和預測未知的未來事件
  • 策略分析–旨在改善測試過程的手段
  • 需求可追溯性–指描述需求以及從需求的起源到部署的整個過程的能力
  • 風險評估–識別可能造成潛在損害的危害和風險因素的方法或過程
  • 服務虛擬化–允許使用虛擬服務代替生產服務。仿真軟件組件以進行簡單測試
  • 測試優化–改善整體測試流程

19 請從開發和基礎架構方面說明DevOps的核心運營。

答:DevOps在開發和基礎架構方面的核心運營是:

  • 應用程序開發–開發能夠滿足所有客戶要求並提供卓越質量水平的產品
  • 代碼覆蓋率–測量在運行自動測試時執行的代碼的塊,線或弧的總數
  • 代碼開發–準備產品開發所需的代碼庫
  • 配置–以最佳方式使用產品
  • 部署–安裝要由最終用戶使用的軟件
  • 編排–安排一些自動化任務
  • 打包–發佈準備好部署時所涉及的活動
  • 供應–確保基礎設施的更改及時地與需要它的代碼一起到達
  • 單元測試–測試單個單元或組件的方法

20 您對DevOps有什麼瞭解?

您的答案必須簡單明瞭。首先介紹一下DevOps在IT行業中的重要性。討論這種方法如何旨在使開發和運營團隊共同努力,以最小的故障率加速軟件產品的交付。包括DevOps如何成爲增值實踐,開發和運維工程師在整個產品或服務生命週期中(從設計階段到部署點)攜手合作。

21 爲什麼最近幾年DevOps變得突出?

在談論DevOps的日益普及之前,請討論當前的行業情況。首先,舉例說明Netflix和Facebook等大型公司如何投資DevOps來自動化和加速應用程序部署,以及這如何幫助他們發展業務。以Facebook爲例,您將指出Facebook的持續部署和代碼所有權模型,以及這些模型如何幫助其擴大規模,同時確保體驗質量。在不影響質量,穩定性和安全性的情況下實現了數百行代碼。

下一個用例應該是Netflix。這家流媒體和點播視頻公司採用完全自動化的流程和系統遵循類似的做法。提及這兩個組織的用戶羣:Facebook有20億用戶,而Netflix將在線內容流傳輸給全球超過1億用戶。

這些都是很好的例子,說明DevOps如何幫助組織確保更高的發佈成功率,減少錯誤修復之間的準備時間,通過自動化簡化並持續交付,以及總體上降低人力成本。

22 哪些是最受歡迎的DevOps工具?您是否有使用這些工具的經驗?

較流行的DevOps工具包括:

  • selenium
  • ansible
  • git/gitlab
  • jenkins
  • docker

23 您是否想要掌握所有這些Devops工具?

徹底描述您有信心的任何工具,其功能以及爲什麼要使用它。例如,如果您具有Git方面的專業知識,則可以告訴採訪者Git是一種分佈式版本控制系統(VCS)工具,該工具可讓用戶跟蹤文件更改並在需要時還原爲特定更改。討論Git的分佈式體系結構如何爲開發人員帶來更多優勢,使開發人員可以在本地進行更改,並可以在其本地Git存儲庫中擁有整個項目歷史記錄,以後可以與其他團隊成員共享。

24 什麼是版本控制?爲什麼要使用VCS?

定義版本控制,並討論該系統如何記錄對一個或多個文件所做的任何更改並將其保存在集中式存儲庫中。VCS工具將幫助您重新調用以前的版本並執行以下操作:

  • 仔細查看一段時間內所做的更改,然後檢查哪些有效,哪些無效。

  • 將特定文件或特定項目還原回舊版本。
  • 檢查由於特定更改而發生的問題或錯誤
  • 使用VCS爲開發人員提供了同時處理特定文件的靈活性,並且所有修改內容以後都可以進行邏輯組合。

25 敏捷和DevOps之間有區別嗎?如果是,請解釋。

作爲一名DevOps工程師,對這樣的面試問題充滿期待。首先描述DevOps與敏捷之間明顯的重疊。儘管DevOps的實現始終與敏捷方法保持同步,但是兩者之間存在明顯的差異。敏捷原則與軟件的無縫生產或開發相關。另一方面,DevOps處理開發工作,然後部署軟件,以確保更快的週轉時間,最小的錯誤和可靠性。

26 爲什麼配置管理過程和工具很重要?

討論正在開發的每個軟件或測試軟件的多個軟件構建,發行,修訂和版本。繼續說明存儲和維護數據的需求,跟蹤開發構建和簡化的故障排除。不要忘了提到可用於實現這些目標的關鍵CM工具。討論諸如Puppet,Ansible和Chef之類的工具如何在多個服務器上自動化軟件部署和配置的過程中提供幫助。

27 Chef如何用作CM工具?

chef被認爲是行業首選的CM工具之一。例如,Facebook將其基礎架構和後端IT遷移到了Chef平臺。解釋Chef如何通過自動化流程來幫助您避免延遲。這些腳本是用Ruby編寫的。它可以與基於雲的平臺集成並配置新系統。它提供了許多用於基礎結構開發的庫,這些庫以後可以部署在軟件中。藉助其集中式管理系統,一臺Chef服務器足以用作部署各種策略的中心。

28 您如何解釋“基礎架構即代碼”(IaC)的概念?

談論IaC是一個好主意,有時將其稱爲可編程基礎結構,在該基礎結構中,與其他任何代碼的感知方式相同。描述傳統的基礎架構管理方法如何退居二線,以及手動配置,過時的工具和自定義腳本的可靠性如何降低。接下來,重點介紹IaC的好處,以及如何使用IaC更快,更安全,更輕鬆地對IT基礎架構進行更改。包括IaC的其他好處,例如將常規的單元測試和集成測試應用於基礎結構配置,以及維護最新的基礎結構文檔。

如果您已經完成了Amazon Web Services(AWS)的認證,並且正在接受諸如AWS認證的DevOps工程師之類的利基角色的面試,那麼您必須準備以下一些AWS DevOps面試問題:

29 AWS在DevOps中的作用是什麼?

在面試中被問到此問題時,請直接說明,AWS是亞馬遜提供的基於雲的服務,可通過無限的計算能力和存儲來確保可擴展性。AWS使IT企業能夠開發和交付複雜的產品,並在雲上部署應用程序。其一些關鍵服務包括Amazon CloudFront,Amazon SimpleDB,Amazon Relational Database Service和Amazon Elastic Computer Cloud。討論各種雲平臺,並強調您過去使用雲基礎架構處理過的任何大數據項目。

30 持續集成的成功因素是什麼?

  • 維護代碼庫
  • 自動化構建
  • 讓構建自我測試
  • 每個人每天將代碼都提交到基線
  • 每次提交(到基線)都應該被構建
  • 保持快速構建
  • 在預發佈環境中進行測試
  • 輕鬆獲取最新交付物
  • 每個人都可以看到最新版本的結果
  • 自動化部署

你如何在我公司實踐DevOps?

參考回答:作爲一名DevOps工程師,我會對DevOps項目管理的管理目標、敏捷交付、持續集成進行管理,並從敏捷項目管理新三角《敏捷項目管理》出發,與團隊一起設定目標,實現簡化的ITIL工作流,維護敏捷的DevOps管理範圍,研究和引入新的技術或框架,通過DevOps 流水線,實現從需求轉化爲工作流從整體工具鏈進行全局優化。

配置管理工具在devops中的作用是什麼?

參考回答: 配置管理工具是指支持完成配置項標識、版本控制、變化控制、審計和狀態統計等任務的工具。 自動化的配置管理工具可以幫助DevOps實現持續流水線的技術支持基礎。使用CM工具,可以幫着管理與存儲關於系統、軟件、測試相關的版本和構建及配置信息,並提供軟件和測試軟件之間的可跟蹤性。成功的DevOps從配置管理開始。

DevOps工程師的職責是什麼?

參考回答:DevOps工程師與敏捷開發團隊緊密合作,站在業務價值視角,拉動IT從業務需求到運營交付,確保通過高質量(JKK)的自動化測試,實現持續集成和持續交付等IT技術功能所需的環境。DevOps工程師必須經常與開發保持聯繫(SRE模式、豐田模式、持續交付模式、協作模式),使環境中所有需要的部分都能無縫地工作,實現高質量的增量迭代。可以擴展說說相關工具。
DevOps工程師面試必備33問
DevOps工程師面試必備33問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章