31 個 DevOps 常見面試題
1. 什麼是 DevOps?
簡而言之,DevOps 意味著組織中開發 (Dev) 和運維 (Ops) 團隊之間的協作,透過持續整合和持續交付,為使用者提供更好的產品。因此,它可以降低軟體開發和運維團隊之間的風險,有助於提高交付速度,增強企業的市場競爭力。
2. 什麼是持續整合?
持續整合 (CI) 是一個開發過程,每天多次將程式碼整合到共享儲存庫中。藉助自動化測試,CI 幫助允許團隊及早識別錯誤、輕鬆定位問題,提高了軟體質量並縮短了交付時間。
3. 什麼是持續交付?
持續交付 (CD) 與持續整合相整合,以向使用者順利交付產品。它旨在確保程式碼可以安全地部署到生產環境中。在 CD 環境中,無論是大型系統還是複雜的應用程式,新版本都可以立即按需執行,功能齊全,而且只需要極少的人工干預。
4. 什麼是持續部署?
持續部署進一步推進了持續交付,其中程式碼被構建、部署到生產環境、還可以自動測試並在發生錯誤時快速回滾。具體來說,每個更改都會直接部署到生產環境中,無需額外的人工干預。
5. 什麼是持續測試?
持續測試是軟體交付流水線的一部分。在 CI/CD 工作流中,構建往往以小批次進行。因此,為每次構建,手動執行測試用例會非常耗時。持續測試藉助自動化手段,儘早、逐步和充分地執行測試,從而減輕手動工作的負擔。這逐漸成為 DevOps 文化的關鍵。
6. 什麼是版本控制?
版本控制(或原始碼控制)是一個軟體工具系統,能夠記錄和檢查程式碼隨時間的所有變化。版本控制能夠跟蹤每個程式碼開發,允許開發人員在出現任何錯誤時回滾,還可以與以前的版本進行比較,來最終確定最佳版本。
7. 什麼是 Git?
Git 是一個版本控制系統。早期出現的版本控制系統有:SVN、CVS等,它們是集中式版本控制系統,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同合作的開發人員都透過客戶端連線到這臺伺服器,取出最新的檔案或者提交更新。
而Git 是分散式版本控制系統,沒有中央伺服器的概念,我們使用相關的客戶端提取的不只是最新的檔案,而是把程式碼倉庫完整地映象下來,相當於每個人的電腦都是一個完整的版本庫,這樣的話,任何一處協同工作的伺服器出現故障,都可以用任何一個本地倉庫恢復。
8. DevOps 如何使團隊受益?
如今,組織正試圖透過其強大的部署系統,將產品快速交付給使用者,以跟上各種競爭對手的步伐。
這就是 DevOps 出現的地方。DevOps 能夠為整個軟體開發流水線提供敏捷性和靈活性,快速將產品交付給使用者。
9. DevOps 對開發人員有什麼幫助
如果沒有 DevOps,開發團隊會從頭開始進行新程式碼開發,構建,等待運維團隊進行部署。然後,等待反饋。如果有錯誤,他們將不得不返回並重新修復它。團隊之間所需的溝通是無法估量的。
DevOps 將開發人員的任務縮減為僅編寫程式碼,藉助CI/CD 流水線接管其餘任務,包括整合和自動化。DevOps 還使所有團隊成員都可以訪問流程,從而使團隊協作中的溝通更加透明。
10. 為什麼 DevOps 最近在軟體交付中越來越受歡迎?
DevOps 近年來流行的主要原因是它允許組織簡化所有軟體流程並將其轉化為商業價值。
隨著技術的快速創新,DevOps 和敏捷方法被廣泛採用以促進動態運維,而不是落後於其他人。Facebook、Google 和 Netflix 的成就證明了 DevOps 在持續部署方法中的應用,沒有任何中斷。
11. CI/CD 的好處是什麼?
CI 和 CD 將所有程式碼更改整合到一個共享儲存庫中並自動化操作。CI/CD 是現代開發環境的支柱,產品可以根據客戶期望快速、高效和自動地更新。
簡而言之,精心設計的 CI/CD 流水線幫助企業從更快的釋出和可靠性中,獲得極大的客戶滿意度,同時減少程式碼更改和缺陷。
12. 持續交付有哪些好處?
團隊過去常常透過手動方式釋出程式碼,來實現產品的迭代。但是,有時新版本意味著具有特定業務目標的促銷策略。
CD 使 IT 專業人員能夠自動執行重複性和乏味的任務,在確保合規性和安全實踐的同時,幫助團隊節省了時間。
13. 持續部署有哪些好處?
透過評估拉取請求並將它們組合到主分支,持續部署為開發人員提供了對流水線末端產品的的關注。它允許企業快速部署、驗證新功能,並在測試自動化完成後立即做出響應。
有了持續部署流水線,一旦客戶提交質量問題,團隊就可以輕鬆處理新版本的錯誤,因為每個版本都是小批次交付的。
14. 典型的 DevOps 工作流程
DevOps 工作流程可以分為 4 個階段:
-
版本控制:儲存和管理不同版本的原始碼。 -
持續整合:該階段使開發人員能夠在進行單元測試和整合測試之前,構建元件、組裝和驗證它們。 -
持續交付:持續整合的下一步是,使釋出和測試過程完全自動化。目標是快速、可持續地釋出更新軟體。 -
持續部署:在每個應用程式滿足所有測試要求後,它會自動部署到生產環境中,以進行更小、更頻繁的釋出,無需任何人工干預。
15. DevOps 的核心操作是什麼?
DevOps 的核心操作包括:
-
軟體開發: -
構建程式碼 -
程式碼覆蓋率 -
單元測試 -
打包 -
部署 -
基礎設施: -
預置 -
配置 -
編排 -
部署
16. 團隊在實施 DevOps 之前需要考慮哪些預防措施?
DevOps流程在實施之前應該採取一些預防措施,否則可能會降低組織的生產力:
-
DevOps 不是僅僅應用新工具、建立一個新的“部門”,實際上,DevOps 是一種不斷髮展的文化,其中開發和運維團隊基於某個框架,共同協作處理整個應用程式生命週期。 -
企業有必要為其 DevOps 實踐,構想出戰略願景。DevOps 計劃會顯著改變開發和運維團隊之間的協作,因此,如果從一開始就按照明確的指導方針制定清晰的DevOps 路線圖,就可以消除有歧義的溝通。 -
成功應用 DevOps 後,應在整個組織中推廣持續學習和改進的文化。不斷總結系統中可能存在的故障和問題,將其儲存為團隊的經驗教訓,以防止這些錯誤重複發生。
17. SCM 團隊在 DevOps 中扮演什麼角色?
軟體配置管理 (SCM) 負責在軟體開發生命週期中,系統地組織和管理變更的過程。
在 DevOps 中,SCM也是基於基礎設施即程式碼的理論,它在簡化開發人員的任務方面發揮著關鍵作用,因為他們可以自動儲存每個配置過程的記錄,這些記錄現在以機器可讀的形式自動複製和系統化。
18. 質量保證 (QA) 團隊在 DevOps 中扮演什麼角色?
由於 DevOps 文化在創新組織中很容易被接受,因此 QA 團隊在當今的自動化世界中的作用似乎較小。
然而,接受 DevOps 並不意味著 QA 職責的結束,而是意味著 QA 正在不同的工作環境中擔任不同的角色,需要不同的專業知識。因此,他們當前的戰略角色是構建強大的軟體測試基礎設施,同時跟上不斷變化的趨勢。
在 DevOps 方法中,QA 將與開發和運維團隊的職責聯絡在一起,以確保持續交付的穩定性。
19. DevOps 使用了哪些工具?描述你使用任何這些工具的經驗。
在 DevOps 環境中,不同的工具能夠支援產品開發的不同階段。DevOps 最常用的工具可以分為 6 個關鍵階段:
-
持續開發:Git、SVN、Mercurial、CVS、Jira -
持續整合:Jenkins、Bamboo、Hudson -
持續交付:Nexus、Archiva、Tomcat -
持續部署:Puppet、Chef、Docker -
持續監控:Splunk、ELK Stack、Nagios -
持續測試:Selenium,Katalon Studio
20. DevOps 中如何管理變更?
變更管理計劃需要透過 DevOps 來實施,可以將變更集中到一個平臺,簡化管理過程中的變更、問題和事件。然後,透過透明的標準,確保組織內部資訊交換的協作和準確性。
21. CI/CD 的一些核心元件是什麼?
儲存庫管理工具作為版本控制系統起著關鍵作用,以確保 CI/CD流程的穩定,開發團隊可以在構建軟體的同時管理每一個更改。
在版本控制系統中,在一個專案中工作的不同開發人員進行開發,修復,而不會對所有團隊成員造成任何干擾。
持續測試和自動化測試是形成完整的CI/CD生態系統的兩種重要測試型別。自動化測試可以應用於產品開發的所有階段(包括單元、整合和系統測試),以執行包括效能、可用性、負載、壓力和安全在內的所有過程。
22. CI/CD 的一些常見做法是什麼?
-
發展 DevOps 文化。 -
持續整合。 -
在每個環境中平等地實施。 -
失敗後能夠再次繼續你的流水線。 -
版本控制。 -
記錄你的持續交付實踐。 -
保障 CD 流水線暢通無阻。
23. 實施 DevOps會發生什麼?
採用DevOps後,將會重塑軟體開發文化,包括工作流程、組織結構到基礎設施。因此,公司應該準備好應對執行 DevOps 產生的重大變化。
24. 常見的 CI/CD 工具有哪些?
-
Visual Studio:可以將成熟的 DevOps 系統與敏捷開發、原始碼控制、自動化測試和部署,以及監控相整合。 -
TeamCity:是一個構建管理和持續整合的伺服器,它還支援統計測試覆蓋率。 -
Jenkins:一個開源 CI 伺服器,使開發和運維團隊能夠可靠地構建、測試和部署軟體。它還可以與各種儀表板外掛相關聯。 -
GitLab:可以為使用者提供高效的持續整合和部署,還支援輕鬆定製。GitLab 透過更快的程式碼傳送、錯誤識別和功能恢復來幫助 CI/CD 團隊縮短開發週期。 -
Bamboo:是一個持續整合伺服器,可用於自動化管理產品的釋出,還可以記錄所有部署資訊,並在整個持續交付流水線中實時提醒錯誤。
25. 高效的持續整合工作流程是什麼樣的
包括以下關鍵步驟:
-
將專案的原始碼合併到一個儲存庫中並進行維護。 -
自動化構建和整合。 -
自檢。 -
定期更新對基線的更改 -
將所有提交新增到基線 -
快速構建 -
可以在準生產環境中執行測試 -
輕鬆獲取最新的可交付成果 -
可以輕鬆地監控構建結果 -
自動化部署
26. 敏捷和 DevOps 之間的主要區別是什麼?
簡而言之,DevOps 與 Agile 相結合,可以更快地將軟體功能部署到生產環境中。敏捷促進了在軟體開發方面的協作,以及在複雜流程中高效地進行小型的快速釋出。DevOps 是一種將開發和運維團隊在溝通、整合和協作中聚集在一起的實踐。
敏捷和 DevOps 相輔相成,形成了一個無縫的產品開發生命週期:敏捷原則構建並推動產品的創新,而 DevOps 應用工具來管理敏捷產品的交付。
27. 持續整合、持續交付和持續部署之間有什麼區別?
持續整合 (CI) 是一種每天多次將所有開發人員的所有程式碼合併到中央儲存庫的實踐。這意味著自動測試新程式碼並快速檢測和修復錯誤。
持續交付使 CI 更進一步,確保軟體隨時準備好進入生產環境。因此,CI 可以被視為持續交付必不可少的,它是 CI/CD 流水線的一個重要部分。
公司無需手動操作即可使用持續部署。每次程式碼透過測試後,都會自動釋出到生產環境中。
持續整合、持續交付和持續部署是 DevOps 實施的關鍵階段。
28. 持續交付和持續部署之間有哪些根本區別?
持續交付監控中央儲存庫分支中發生的程式碼更改,這些更改將為部署做好準備,同時允許開發人員決定何時交付新的更改或功能。
其次,持續部署能夠確保所有更新和錯誤修復從測試階段自動部署到生產環境,無需人工干預。
29、持續整合和持續交付有什麼區別?
持續整合可以確保軟體元件之間的緊密關聯,有助於程式碼提交得更頻繁,並且可以連線多個開發人員的程式碼。
持續交付是 CI/CD 流水線中的進一步的步驟。程式碼不斷合併到共享儲存庫中,然後不斷進行測試。一旦程式碼構建完成,就會進行測試,以便提前檢測到儘可能多的錯誤。
30. DevOps 和持續交付有什麼區別?
DevOps 是一種組織正規化,它能夠在開發和運維團隊之間實現高效的協作和溝通。
同時,持續交付被認為是 DevOps 實施軟體部署的最佳實踐,有助於增強應用新版本的可靠性。
DevOps 的主要目標是有效地整合 Dev 和 Ops 角色,消除所有孤島,並實現你自己在持續交付中獨立的業務目標。藉助持續交付加強協作並簡化了組織的統一產品開發週期。
31. 敏捷、精益 IT 和 DevOps 之間有什麼區別?
敏捷旨在最佳化軟體開發、構建持續交付、最小化反饋迴圈並在軟體開發生命週期 (SDLC) 中促進團隊協作。
精益 IT 是精益原則的延伸,用於簡化產品開發週期。精益強調消除冗餘工作流程以最大化整個產品的價值。
與此同時,DevOps 打破了軟體開發過程中 Dev 和 Ops 團隊之間的壁壘。它旨在實現自動化工具和 IT 專業人員之間有效合作,建立更簡單的自動化流程。
連結:https://dzone.com/articles/top-devops-interview-questions
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013542/viewspace-2924259/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 常見12個python面試題整理Python面試題
- 常見 React 面試題React面試題
- mybatis常見面試題MyBatis面試題
- spring常見面試題Spring面試題
- SpringMVC常見面試題SpringMVC面試題
- Docker常見面試題Docker面試題
- vue 常見面試題Vue面試題
- Spring常見面試題!Spring面試題
- Dubbo常見面試題面試題
- 前端常見面試題前端面試題
- ajax常見面試題面試題
- String常見面試題面試題
- Hadoop常見面試題Hadoop面試題
- Golang常見面試題Golang面試題
- Mysql 常見面試題MySql面試題
- Redis 常見面試題Redis面試題
- Redis常見面試題Redis面試題
- 【面試】面試常見問題整理面試
- 【Java面試】JSP常見面試題!JavaJS面試題
- 【Java面試】Servlet常見面試題!JavaServlet面試題
- 【Java面試】 Javascript常見面試題!JavaScript面試題
- 四個常見的Linux面試問題Linux面試
- 效能測試常見面試題面試題
- 求職面試常見問題:Python常見面試題全解析附答案求職Python面試題
- 【Java面試】Java常見IO面試題!Java面試題
- Vue常見的面試題Vue面試題
- 常見面試題 - URL 解析面試題
- Vue常見面試題整理Vue面試題
- mysql面試常見題目MySql面試
- Redis面試常見問題Redis面試
- 集合常見的面試題面試題
- HashMap常見面試題整理HashMap面試題
- 【硬核】Dubbo常見面試題面試題
- 常見面試SQL問題面試SQL
- Java常見的面試題Java面試題
- Spring 常見面試問題Spring面試
- SSM框架常見面試題SSM框架面試題
- 常見的JVM 面試題JVM面試題