當前位置: 妍妍網 > 碼農

DevOps與CI/CD應知必會的面試問題匯總~

2024-01-31碼農

關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux Python 網路通訊、網路安全 等學習資料!

前言

大家好,這裏是 浩道Linux ,主要給大家分享 L inux P ython 網路通訊、網路安全等 相關的IT知識平台。

今天浩道跟大家分享面試過程中常見的DevOps與CI/CD應知必會的面試問題匯總~

文章來源: https://w ww.cnblogs.com/xuelong3/p/12587932.html

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

    1. 透過修復或刪除新送出中的錯誤檔,然後將其推播到遠端儲存庫。對檔進行必要的更改後,使用以下命令將其送出到遠端儲存庫:

    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模式、豐田模式、持續交付模式、協作模式),使環境中所有需要的部份都能無縫地工作,實作高品質的增量叠代。可以擴充套件說說相關工具。

    更多精彩

    關註公眾號 浩道Linux

    浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 網路安全 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。

    喜歡的話,記得 點「贊」 「在看」