46 個常見的 DevOps 面試問題和答案 [2023]
已發表: 2023-01-12想知道在下一次 DevOps 面試中要問什麼問題嗎? 從我們方便的指南開始。
DevOps 這個詞是在 2007-2008 年創造的,但現在已經成為軟件工程中最受歡迎的職業之一。 DevOps 是一種文化轉變,涉及開發和運營的各個方面。
這兩個團隊(開發和運營)從規劃和構建到監控和迭代協同工作。 如果您尋求 DevOps 工程師職位,這些是您可能遇到的最常見問題。
什麼是 DevOps?
DevOps 是開發和運營的簡稱。 這種軟件工程實踐將開發和運營團隊聚集在一起,以自動化項目的每個階段。 DevOps 團隊專注於資源管理、溝通和團隊合作。
DevOps 方法的不同階段是什麼
- 持續發展。 這是規劃和編碼階段。
- 持續集成。 這是開發團隊集成不同組件並確保代碼不會中斷的階段。
- 持續測試。 這是預先安排好的自動化測試階段。
- 持續部署。 此階段可確保無障礙開發,不會影響整個應用程序的性能。
- 持續監測。 此階段可確保應用程序的整體功效。
- 持續反饋。 分析最終用戶報告的問題和性能。
- 持續經營。 允許開發人員構建更好的產品版本并快速檢測問題。
DevOps 有什麼好處?
- 更快更好的產品交付
- 更大的可擴展性
- 快速解決問題
- 更好的資源利用
列舉一些 DevOps 工具
- Jenkins 等持續集成工具
- 版本控制,例如 Git
- Maven 等構建工具
- Chef 等配置管理工具
- Docker等容器平台
說出一些 DevOps KPI
- 部署頻率
- 更改音量
- 部署時間
- 部署失敗率
- 時間檢測
- 缺陷逃逸率
DevOps 和敏捷之間的區別
DevOps 是一種文化,它促進參與軟件開發和維護的所有團隊成員之間的協作。
敏捷是一種開發方法,旨在提高團隊的工作效率並根據不斷變化的需求推動發布。
AWS 在 DevOps 中的作用是什麼
AWS 擁有一套靈活的服務,可幫助公司可靠、快速地開發應用程序。 AWS 服務可簡化代碼部署、預置和簡化基礎設施、自動化軟件發布流程以及監控基礎設施性能。
SSH有什麼用?
SSH (Secure Shell) 是一種允許在不同計算機之間建立安全連接的協議。 SSH 有不同的用途,例如提供; 強認證,強加密,保持連接完整性,強連接和安全。
什麼是持續集成?
持續集成允許軟件開發人員將他們的代碼合併到中央存儲庫中。 然後通過自動構建和測試獲取代碼。
什麼是配置管理?
它是一個系統的工程過程,用於在整個生命週期內建立和維護系統/產品的性能以及功能和物理屬性的一致性。
什麼是持續測試?
這是隨著開發的進行而對應用程序進行的預先安排的自動化測試。
什麼是 Git?
這是一個用於源代碼管理的開源和免費工具。 該工具旨在處理小型和大型項目。
提及一些基本的 Git 命令
- 克隆
git clone <https://name-of-the-repository-link>
- Git 分支
git branch <branch-name>
- Git結帳
git checkout <name-of-your-branch>
- git 添加
git add <file>
- Git 提交
git commit -m "commit message"
- 推送
git push <remote> <branch-name>
- git 拉
git pull <remote>
解釋Git merge和Git rebase的區別
Git 合併命令允許開發人員合併不同的 Git 分支,同時各個分支的提交日誌保持不變。
Git rebase 命令允許開發人員將更改從一個分支集成到另一個分支,一旦過程完成,日誌就會更改。
解釋Git fetch和Git pull的區別
Git fetch 告訴 git 從原始文件中檢索/檢查最新的元數據。 但是,它不進行任何文件傳輸,而只是進行檢查。
Git pull 檢查並將更改從遠程存儲庫帶到本地項目。
什麼是合併衝突?
當您合併兩個具有競爭提交的分支時,會發生合併衝突。 合併衝突通常發生在不同的開發人員更改同一行代碼或文件時。
什麼是版本控制,有哪些不同類型?
版本控制(源代碼控制)是跟踪和管理軟件代碼更改的過程。
這些是不同類型的版本控制;
- 集中式——在服務器上有一個單一的“中央”源代碼副本,所有更改都提交到“中央”副本。 Subversion (SVN) 和 Perforce 是集中式版本控制的例子。
- 分佈式 (DVCS) -沒有中央服務器來存儲所有項目的文件。 Git 和 Mercurial 是 DVCS 的例子。
使用版本控制有什麼好處?
- 幫助開發人員保持效率和敏捷性
- 提供項目/文件每次更改的完整日誌
- 提高可追溯性
- 幫助管理合併和分支
- 促進協作
什麼是分支?
分支是指創建主存儲庫的單獨/新版本。 分支允許您在不影響主要分支的情況下處理項目的各個部分。
什麼是分支策略?
合併策略是軟件開發團隊在編寫、合併和部署代碼時採用的方法。 這種方法可確保錯誤和錯誤在與主項目合併之前在分支階段得到修復。
什麼是自動化測試,如何在 DevOps 中實現自動化測試?
自動化測試是一種自動審查和驗證代碼的技術。 進行自動化測試是為了檢查功能(業務邏輯)、代碼風格和用戶體驗的質量標準是否得到滿足。
自動化測試是使用諸如 Selenium 和 Katalon 之類的工具完成的。
什麼是詹金斯文件?
Jenkinsfile 是一個包含 Jenkins 管道定義的文本文件。 Jenkinsfile 被簽入源代碼控制存儲庫。 它的一些用途是; 它允許對管道進行審計跟踪,允許在管道上進行代碼審查和迭代,並在管道中提供單一的真實來源。
解釋 Jenkins 中的架構
Jenkins 採用主從架構。 這意味著有許多“奴隸”為一個“主人”工作。 因此,Jenkins 分佈式構建可以在不同的環境中運行相同的測試,並在主節點上收集和組合結果以進行監控。
頂級的 Jenkins 插件是什麼?
- Jenkins 的 Blue Ocean 插件
- Jenkins 的郵件插件
- 詹金斯的 Git 插件
- Jenkins 的 Jira 插件
- Jenkins 的 Docker 插件
- Jenkins 的 Maven 集成插件
- Jenkins 的 Kubernetes 插件
- Jenkins 的 SonarQube 插件
- 用於 Jenkins 的 Amazon EC2 插件
什麼是硒集成開發環境?
Selenium IDE 是一個為測試用例記錄瀏覽器交互的工具。 Selenium 集成開發環境出錯時可以設置斷點、檢查和暫停變量。
有哪些不同的硒成分?
- 硒集成開發環境
- 硒鋼筋混凝土
- Selenium WebDriver
- 硒網格
Selenium 中有哪些不同類型的測試?
- 端到端測試
- 回歸測試
- 系統測試
- 性能測試
- 兼容性測試
Selenium 中有哪些不同的異常?
- ElementNotSelectableException
- NoAlertPresentException
- 無效選擇器異常
- NoSuchSessionException異常
- StaleElementReferenceException異常
- NoSuchWindowException異常
- NoSuchFrameException
- NoSuchElementException異常
- 超時異常
- 元素不可見異常
WebDriver 中的 driver.close() 和 driver.quit() 是什麼?
driver.close()
命令關閉焦點上的瀏覽器窗口。 如果只有一個瀏覽器打開,它會關閉整個瀏覽器會話。
driver.quit()
命令關閉帶有瀏覽器彈出窗口、選項卡和窗口的整個瀏覽器會話。
什麼是 Dockerfile?
Dockerfile 是一個文本文檔,其中包含用戶可以在命令行上用來組裝圖像的所有命令。
docker鏡像和docker容器的區別
Docker 鏡像是只讀模板,由源代碼、工具、庫、外部依賴項以及任何應用程序在任何操作系統或平台上成功運行所需的其他文件製作而成。
docker 容器是運行 docker 鏡像模板的盒子。
解釋Docker的架構
Docker 遵循客戶端-服務器架構,包括 Docker Client、Docker Host 和 Docker Registry。
Docker 客戶端使用 REST API 和命令與服務器(Docker 守護進程)通信。
Docker 客戶端使用 CLI 來運行這些命令
docker build docker pull docker run
- Docker Host提供了一個執行和運行應用程序的環境。 由 docker 守護進程、存儲、圖像、容器和網絡組成。
- Docker Registry管理和存儲 Docker 鏡像。
支持docker的雲平台
支持 docker 託管的平台有:
- 龜寺
- 谷歌云運行
- A2託管
- 堆棧路徑
- 邋遢.io
- 亞馬遜雲服務器
- 微軟天青
- 主機快板
- 沃爾特
什麼是 Nagios?
Nagios 是一種監控整個 IT 基礎架構以確保業務流程、系統、服務和應用程序正常運行的工具。
Nagios 是如何工作的?
- 監控。 IT 人員配置 Nagios 以監控網絡協議、系統指標、應用程序、網絡基礎設施、服務和服務器。
- 警報。 當關鍵組件出現故障時,Nagios 會發送警報。 警報可以通過短信、自定義代碼或電子郵件發出。
- 回應。 IT 團隊確認警報並採取行動。
- 報導。 生成的報告提供了通知、中斷、警報響應和事件的歷史記錄,供以後查看。
- 保養。 計劃的停機時間可防止在維護期間發送警報。
在 Nagios 中提及一些插件
- 官方 Nagios 插件- 由官方團隊開發和維護
- 自定義插件- 由個人/企業編寫以滿足個人需求
- 社區插件——由 Nagios 社區成員開發
使用 Nagios 解釋虛擬化
Nagios 提供了在各種虛擬化平台上監控各種指標的能力。 Nagios 可以在各種虛擬化平台上運行,例如 Xen、Amazon EC2、VMware 和 Microsoft Virtual PC。
Nagios 如何幫助監控?
Nagios 使用 NRPE、check_mk 或 SNMP 等代理來收集服務器上的統計信息,並在指標高於預定義閾值時發送警報。
Nagios 使用什麼端口號進行監控?
SNMP,端口 161 和 162
什麼是 Nagios 網絡分析器?
Nagios 網絡分析器是一款 sflow 數據分析軟件,允許用戶在中斷業務運營之前主動解決異常行為、中斷和安全威脅。 這個商業級工具提供了對網絡流量和 IT 基礎設施的擴展洞察力。
Nagios 中影響繼承和遞歸的變量
- 名稱- 可以繼承對像變量/屬性的模板“名稱”。
- 使用指定 要從中繼承變量/屬性的模板的對象名稱。
- Register指示模闆對象的名稱是否應該在 Nagios 中“註冊”。
什麼是人偶?
Puppet 是一個用於軟件配置管理和部署的開源工具。
什麼是 Puppet 清單?
Puppet 清單是一個包含 Puppet 配置語言的文件,描述了應該如何配置資源。
什麼是傀儡代碼?
Puppet 代碼是聲明性代碼,這意味著您使用系統的所需狀態而不是到達那裡所需的步驟來描述它。
什麼是廚師?
Chef 是一種配置管理工具,可將基礎架構轉換為代碼。 該工具專注於編寫代碼而不是手動過程。
廚師如何工作?
當系統管理員或開發人員定義要自動化的任務時,Chef 的工作就開始了。 然後使用 Test Kitchen、ChefSpec 和 Foodcritic 等各種工具捕獲和測試食譜和食譜(以特定領域語言編寫的小程序)。
如果食譜和食譜按預期工作,則使用 knife 和 chef 命令行工具將它們部署到 Chef 服務器。 Chef 部署過程具有 Chef 服務器、工作站和節點。 您可以從 3000 多個食譜模板中進行選擇,並根據您的需要對其進行自定義。 然後廚師會處理剩下的工作。
概括
據 Glassdoor 稱,美國 DevOps 工程師的平均年薪為 104281 美元。 儘管 DevOps 是一個新的職業,但我們現在可以看到更多的公司正在招聘這個角色,並發佈各種課程來為專業人員提供必要的技能。 以上是您在 DevOps 面試中可能會遇到的一些問題。
您還可以瀏覽一些不錯的在線課程來學習 DevOps。