DevOps面试问题
轉載自? ?DevOps面試問題
DevOps是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協(xié)作與整合。下面為大家分享DevOps系列的面試問題
持續(xù)整合問題
問題一:持續(xù)集成是什么意思??
我將建議您通過給出持續(xù)集成(CI)的小定義來開始這個答案。這是一種開發(fā)實踐,要求開發(fā)人員每天多次將代碼集成到共享存儲庫中。然后通過自動構建驗證每個簽入,允許團隊盡早發(fā)現(xiàn)問題。 我建議您解釋一下如何在以前的工作中實施它。您可以參考下面給出的示例:
?
在上圖中:
開發(fā)人員將代碼簽入其私有工作區(qū)。 完成后,他們將更改提交到共享存儲庫(版本控制存儲庫)。 CI服務器監(jiān)視存儲庫并在發(fā)生更改時檢出更改。 然后,CI服務器將提取這些更改并構建系統(tǒng),并運行單元和集成測試。 CI服務器現(xiàn)在將通知團隊成功構建。 如果構建或測試失敗,CI服務器將向團隊發(fā)出警報。 該團隊將盡早解決問題。 這個過程不斷重復。
?
問題二:為什么需要開發(fā)和測試的持續(xù)集成?
對于這個問題,您應該關注持續(xù)集成的需求。我的建議是在你的答案中提到以下解釋: 開發(fā)和測試的持續(xù)集成通過在完成所有開發(fā)之后替換傳統(tǒng)的測試實踐來提高軟件質量,并減少交付時間。它允許開發(fā)團隊盡早檢測和定位問題,因為開發(fā)人員需要每天多次(更頻繁地)將代碼集成到共享存儲庫中。然后自動測試每個登記入住。
?
問題三:持續(xù)集成的成功因素是什么??
在這里,您必須提到持續(xù)集成的要求。您可以在答案中包含以下幾點:
維護代碼存儲庫 自動化構建 使構建自我測試 每個人每天承諾到基線 應該構建每個提交(到基線) 保持快速構建 在生產環(huán)境的克隆中進行測試 讓您輕松獲得最新的可交付成果 每個人都可以看到最新版本的結果?
?
問題四:解釋如何將Jenkins從一臺服務器移動或復制到另一臺服務器??
我將通過將jobs目錄從舊服務器復制到新服務器來完成此任務。有多種方法可以做到這一點; 你可以:
只需復制相應的作業(yè)目錄,即可將作業(yè)從一個Jenkins安裝移動到另一個。 通過使用其他名稱克隆作業(yè)目錄來制作現(xiàn)有作業(yè)的副本。 通過重命名目錄來重命名現(xiàn)有作業(yè)。請注意,如果更改作業(yè)名稱,則需要更改嘗試調用重命名作業(yè)的任何其他作業(yè)。
?
問題五:解釋如何在Jenkins中創(chuàng)建備份和復制文件??
要創(chuàng)建備份,您需要做的就是定期備份JENKINS_HOME目錄。這包含所有構建作業(yè)配置,從屬節(jié)點配置和構建歷史記錄。要創(chuàng)建Jenkins設置的備份,只需復制此目錄即可。您還可以復制作業(yè)目錄以克隆或復制作業(yè)或重命名目錄。
?
問題六:解釋如何設置Jenkins工作??
首先提一下如何創(chuàng)建Jenkins的工作。轉到Jenkins首頁,選擇“New Job”,然后選擇“Build a free-style software project”。 然后你可以告訴這個自由式工作的元素:
可選的SCM,例如源代碼所在的CVS或Subversion。 用于控制Jenkins何時執(zhí)行構建的可選觸發(fā)器。 某種構建腳本,用于執(zhí)行實際工作的構建(ant,maven,shell腳本,批處理文件等)。 從構建中收集信息的可選步驟,例如歸檔工件和/或記錄javadoc和測試結果。 使用構建結果通知其他人/系統(tǒng)的可選步驟,例如發(fā)送電子郵件,IM,更新問題跟蹤器等。
?
問題七:你如何保護Jenkins??
我保證Jenkins的方式如下所述。如果您有任何其他方式,請在下面的評論部分中提及:
確保Jenkins與我公司的用戶目錄與適當?shù)牟寮伞?確保啟用矩陣/項目矩陣以微調訪問。 使用自定義版本控制腳本自動化在Jenkins中設置權限/特權的過程。 限制對Jenkins數(shù)據(jù)/文件夾的物理訪問。 定期對其進行安全審核。
?
持續(xù)測試面試問題
問題一:什么是連續(xù)測試??
我將建議您遵循下面提到的解釋: 持續(xù)測試是執(zhí)行自動化測試的過程,作為軟件交付管道的一部分,以獲得與最新構建相關的業(yè)務風險的即時反饋。通過這種方式,每個構建都會持續(xù)測試,允許開發(fā)團隊獲得快速反饋,以便他們可以防止這些問題進入軟件交付生命周期的下一階段。這大大加快了開發(fā)人員的工作流程,因為無需手動重建項目并在進行更改后重新運行所有測試。
?
問題二:什么是自動化測試?
自動化測試或測試自動化是自動化手動過程以測試被測應用程序/系統(tǒng)的過程。 自動化測試涉及使用單獨的測試工具,使您可以創(chuàng)建可以重復執(zhí)行的測試腳本,而不需要任何手動干預。
?
問題三:自動化測試有哪些好處??
我列舉了自動化測試的一些優(yōu)點。在您的答案中包含這些內容,您可以添加自己的經驗,了解Continuous Testing如何提供幫助:
支持執(zhí)行重復的測試用例 有助于測試大型測試矩陣 啟用并行執(zhí)行 鼓勵無人看管的執(zhí)行 提高準確性,從而減少人為產生的錯誤 節(jié)省時間和金錢
?
問題四:如何在DevOps生命周期中自動化測試?
我在下面提到了一個通用流程,您可以參考: 在DevOps中,開發(fā)人員需要將源代碼中的所有更改提交到共享存儲庫。像Jenkins這樣的持續(xù)集成工具每次在代碼中進行更改時都會從此共享存儲庫中提取代碼,并將其部署到Selenium等工具進行的連續(xù)測試中,如下圖所示。 通過這種方式,與傳統(tǒng)方法不同,代碼中的任何更改都會不斷進行測試。
?
?
問題五:為什么持續(xù)測試對DevOps很重要?
您可以通過說“連續(xù)測試允許立即測試代碼中的任何更改來回答這個問題。這避免了在周期結束時進行“大爆炸”測試所產生的問題,例如發(fā)布延遲和質量問題。通過這種方式,持續(xù)測試可以促進更頻繁和更好的質量發(fā)布。
?
問題六:連續(xù)測試工具的關鍵要素是什么??
連續(xù)測試的關鍵要素是:
風險評估:它涵蓋風險緩解任務,技術債務,質量評估和測試覆蓋范圍優(yōu)化,以確保構建準備好向下一階段發(fā)展。
策略分析:確保所有流程符合組織不斷發(fā)展的業(yè)務和合規(guī)性要求。?
可追溯性:確保滿足真正的要求,不需要返工。對象評估用于確定哪些需求存在風險,按預期工作或需要進一步驗證。?
高級分析:它在靜態(tài)代碼分析,變更影響分析和范圍評估/優(yōu)先級劃分等領域使用自動化,以便首先防止缺陷并在每次迭代中完成更多任務。?
測試優(yōu)化:它確保測試產生準確的結果并提供可操作的結果。方面包括測試數(shù)據(jù)管理,測試優(yōu)化管理和測試維護?
服務虛擬化:它確保訪問真實的測試環(huán)境。服務可視化使您能夠訪問所需測試階段的虛擬表單,從而縮短測試環(huán)境設置和可用性的浪費時間。
?
問題七:您熟悉哪種測試工具以及該工具的優(yōu)點是什么??
這里提到您使用的測試工具,并相應地構建您的答案。我在下面提到了一個例子: 我曾在Selenium上工作以確保高質量和更頻繁的發(fā)布。
Selenium的一些優(yōu)點是:
它是免費和開源的 它擁有龐大的用戶群和幫助社區(qū) 它具有跨瀏覽器兼容性(Firefox,Chrome,Internet Explorer,Safari等) 它具有出色的平臺兼容性(Windows,Mac OS,Linux等) 它支持多種編程語言(Java,C#,Ruby,Python,Pearl等) 它有新的和定期的存儲庫開發(fā) 它支持分布式測試
?
問題八:Selenium支持哪些測試類型??
Selenium支持兩種類型的測試:
-
回歸測試:它是在修復錯誤的區(qū)域周圍重新測試產品的行為。?
-
功能測試:它指的是單獨測試軟件功能(功能點)。
?
問題九:什么是Selenium IDE??
我的建議是通過定義Selenium IDE來開始這個答案。它是Selenium腳本的集成開發(fā)環(huán)境。它作為Firefox擴展實現(xiàn),允許您記錄,編輯和調試測試。Selenium IDE包含整個Selenium Core,允許您在他們將運行的實際環(huán)境中輕松快速地記錄和回放測試。 現(xiàn)在,您的答案中包含一些優(yōu)勢。憑借自動完成支持和快速移動命令的能力,無論您喜歡何種類型的測試,Selenium IDE都是創(chuàng)建Selenium測試的理想環(huán)境。
?
問題十:Selenium中的Assert和Verify命令有什么區(qū)別??
下面提到了Assert和Verify命令之間的區(qū)別:
斷言命令檢查給定條件是真還是假。假設我們斷言給定元素是否存在于網頁上。如果條件為真,則程序控制將執(zhí)行下一個測試步驟。但是,如果條件為false,則執(zhí)行將停止,并且不會執(zhí)行進一步的測試。 Verify命令還會檢查給定條件是true還是false。無論條件是真還是假,程序執(zhí)行都不會停止,即驗證期間的任何故障都不會停止執(zhí)行,并且所有測試步驟都將被執(zhí)行。
?
問題十一如何使用WebDriver啟動瀏覽器?
以下語法可用于啟動Browser:
WebDriver?driver?=?new?FirefoxDriver();? WebDriver?driver?=?new?ChromeDriver();? WebDriver?driver?=?new?InternetExplorerDriver();?
問題十二:我什么時候應該使用Selenium Grid??
對于這個答案,我的建議是給出Selenium Grid的一個小定義。它可以用于在多個平臺和瀏覽器上同時執(zhí)行相同或不同的測試腳本,以實現(xiàn)分布式測試執(zhí)行。這允許在不同環(huán)境下進行測試并顯著節(jié)省執(zhí)行時間。
?
配置管理面試問題
問題一:配置管理流程的目標是什么??
配置管理(CM)的目的是通過使開發(fā)或部署過程可控和可重復,確保產品或系統(tǒng)在其整個生命周期中的完整性,從而創(chuàng)建更高質量的產品或系統(tǒng)。 CM流程允許有序管理系統(tǒng)信息和系統(tǒng)更改,以便:
修改能力, 提高性能, 可靠性或可維護性, 延長壽命, 降低成本, 降低風險 責任或正確的缺陷。
?
問題二:資產和配置項有什么區(qū)別??
我認為,你應該首先解釋資產。它具有財務價值以及附加的折舊率。IT資產只是它的一個子集。任何具有成本的組織和組織都將其用于資產價值計算和稅收計算中的相關收益屬于資產管理,此類項目稱為資產。 另一方面,配置項可能有也可能沒有分配給它的財務值。它不會有任何與之相關的折舊。因此,它的生命不依賴于其財務價值,而是取決于該項目對該組織過時的時間。
然后,您可以舉例說明兩者之間的相似性和差異:
-
?1)相似性: 服務器 - 它既是資產又是CI。
-
?2)差異: 構建 - 這是一種資產,但不是CI。
?
問題三:IAC如何適用于DevOps方法?它實現(xiàn)了什么目的?
作為代碼的基礎架構(IAC)是一種IT基礎架構,運營團隊可以使用它來自動管理和通過代碼進行配置,而不是使用手動過程。 更快部署的公司會將軟件等基礎設施視為可以使用DevOps工具和流程管理的代碼。利用這些工具,您可以更輕松,快速,安全,可靠地更改基礎架構
?
問題四:Puppet,Chef,SaltStack和Ansible中哪一個是最好的配置管理(CM)工具?為什么?
這取決于組織的需求,因此在所有這些工具上提到幾點:
Puppet是最古老,最成熟的CM工具。Puppet是一個基于Ruby的配置管理工具,雖然它有一些免費功能,但Puppet很棒的大部分內容僅在付費版本中可用。不需要大量額外功能的組織會發(fā)現(xiàn)Puppet很有用,但那些需要更多自定義的組織可能需要升級到付費版本。?
Chef是用Ruby編寫的,因此可以由熟悉該語言的人定制。它還包括免費功能,如果需要,還可以從開源升級到企業(yè)級。最重要的是,它是一個非常靈活的產品。
Ansible是一個非常安全的選項,因為它使用Secure Shell。它是一個簡單的工具,但除了配置管理之外,它還提供了許多其他服務。它非常容易學習,因此非常適合那些沒有專職IT人員但仍需要配置管理工具的人。?
SaltStack是基于python的開源CM工具,適用于大型企業(yè),但其學習曲線相當?shù)汀?/p>
?
問題五:什么是Puppet?
建議你先給出一個小小的Puppet定義。它是一個配置管理工具,用于自動執(zhí)行管理任務。 現(xiàn)在您應該描述其架構以及Puppet如何管理其代理。Puppet具有主從架構,其中Slave必須首先向Master發(fā)送證書簽名請求,并且Master必須簽署該證書以便在Puppet Master和Puppet Slave之間建立安全連接,如下圖所示。Puppet Slave向Puppet Master和Puppet Master發(fā)送請求,然后在Slave上推送配置。 請參閱下面的圖解釋上述說明。
?
?
問題六:在客戶端使用Puppet Master進行身份驗證之前,需要對其證書進行簽名和接受。你將如何自動完成這項任務?
最簡單的方法是在puppet.conf中啟用自動簽名。 請注意這是一個安全風險。如果你還想這樣做:
把Puppet master加入防火墻 - 限制端口tcp / 8140只限于你信任的網絡。 為每個“信任區(qū)域”創(chuàng)建puppet master,并且只在該Puppet master清單中包含受信任的節(jié)點。?
?
問題七:描述通過Puppet自動化流程所取得的最重要的收益。?
建議你解釋一下你過去使用Puppet的經歷。您可以參考以下示例: 我使用Puppet自動配置和部署Linux和Windows機器。除了將處理時間從一周縮短到10分鐘之外,我還使用了角色和配置文件模式,并在README中記錄了每個模塊的用途,以確保其他人可以使用Git更新模塊。我寫的模塊仍然在使用,但是我的團隊成員和社區(qū)成員對它們進行了改進
?
問題八:您使用哪些開源或社區(qū)工具來使Puppet更強大??
在這里,您需要提及工具以及如何使用這些工具使Puppet更強大。以下是一個供您參考的示例: 變更和請求通過Jira出票,我們通過內部流程管理請求。然后,我們使用Git和Puppet的Code Manager應用程序根據(jù)最佳實踐管理Puppet代碼。此外,我們使用燒杯測試框架通過Jenkins中的持續(xù)集成管道運行所有Puppet更改。
?
問題九:什么是Puppet清單??
這是一個非常重要的問題,所以請確保您正確的流程。據(jù)我說,你應該首先定義清單。每個節(jié)點(或Puppet Agent)都在Puppet Master中獲得了配置細節(jié),用本機Puppet語言編寫。這些細節(jié)用Puppet可以理解的語言編寫,稱為Manifest。它們由Puppet代碼組成,其文件名使用.pp擴展名。 現(xiàn)在舉個例子。您可以在Puppet Master中編寫一個清單,用于創(chuàng)建文件并在連接到Puppet Master的所有Puppet Agent(Slaves)上安裝apache。
?
問題十:什么是Puppet模塊以及它與Puppet Manifest的不同之處??
對于這個答案,您可以使用下面提到的解釋: Puppet模塊是清單和數(shù)據(jù)(例如事實,文件和模板)的集合,它們具有特定的目錄結構。模塊對于組織Puppet代碼很有用,因為它們允許您將代碼拆分為多個清單。使用Modules來組織幾乎所有的Puppet清單是最佳實踐。 Puppet程序稱為Manifest,它由Puppet代碼組成,其文件名使用.pp擴展名。
?
問題十一:什么是Puppet的Facter??
你應該回答Facter在Puppet中做了什么,所以根據(jù)我的說法,你應該說:Facter收集有關Puppet Agent的基本信息(事實),例如硬件細節(jié),網絡設置,操作系統(tǒng)類型和版本,IP地址,MAC地址, SSH密鑰等等。這些事實隨后在Puppet Master的Manifests中作為變量提供。
?
問題十二:什么是Chef??
通過定義Chef來開始這個答案。它是一個功能強大的自動化平臺,可將基礎架構轉換為代碼 Chef是一個工具,您可以編寫用于自動化流程的腳本。 現(xiàn)在您可以解釋Chef的架構,它包括:
-
Chef Server:Chef Server是基礎架構配置數(shù)據(jù)的中央存儲。Chef Server存儲配置節(jié)點所需的數(shù)據(jù)并提供搜索,這是一個功能強大的工具,允許您根據(jù)數(shù)據(jù)動態(tài)驅動節(jié)點配置。
-
Chef Node: Node是使用Chef-client配置的任何主機。Chef-client在您的節(jié)點上運行,與Chef Server聯(lián)系以獲取配置節(jié)點所需的信息。由于Node是運行Chef-client軟件的機器,因此節(jié)點有時被稱為“客戶端”。
-
Chef Workstation: Chef Workstation是您用來修改cookbook和其他配置數(shù)據(jù)的主機。
?
問題十三:Chef中的資源是什么??
我的建議是首先定義資源。資源代表一個基礎架構及其所需的狀態(tài),例如應安裝的軟件包,應運行的服務或應生成的文件。 您應該解釋資源的功能,包括以下幾點:
描述配置項的所需狀態(tài)。 聲明將該項目置于所需狀態(tài)所需的步驟。 指定資源類型,例如包,模板或服務。 根據(jù)需要列出其他詳細信息(也稱為資源屬性)。 分組為配方,描述工作配置。
?
問題十四:Chef的recipe是什么意思?
對于這個答案,我建議你使用上面提到的流程:首先定義recipe。Recipe是描述特定配置或策略的資源集合。配方描述了配置系統(tǒng)部分所需的一切。 定義之后,通過包括以下幾點來解釋食譜的功能:
安裝和配置軟件組件。 管理文件。 部署應用程序。 執(zhí)行其他食譜。
?
問題十五:Cookbook與Chef中的recipe有何不同??
對此的答案非常直接。您可以簡單地說,recipe是資源的集合,主要配置軟件包或某些基礎設施。Cookbook將recipe和其他信息整合在一起,比單獨使用recipe更易于管理。
?
問題十六:如何查看所有ansible_變量的列表??
Ansible默認收集有關被管理機器的“事實”,這些事實可以在Playbooks和模板中訪問。要查看有關計算機的所有可用事實的列表,可以將“設置”模塊作為臨時操作運行:
Ansible?-m?setup?hostname這將打印出所有可用事實的字典對于那個特定的主人。
?
問題十七:如何設置應用程序的部署順序??
WebLogic Server 8.1允許您選擇應用程序的加載順序。WebLogic Server在部署應用程序之前部署服務器級資源(第一個JDBC,然后是JMS)。應用程序按以下順序部署:
連接器,然后是EJB,然后是Web應用程序。如果應用程序是EAR,則按照在application.xml部署描述符中聲明它們的順序加載各個組件。
?
問題十八:是否可以刷新已部署應用程序的靜態(tài)組件而無需重新部署整個應用程序??
是的,您可以使用weblogic.Deployer指定組件并使用以下語法定位服務器:
java?weblogic.Deployer?-adminurl?http://?admin:7001?-name?appname?-targets?server1,server2?-deploy?jsps?/?*?.jsp?
問題十九:如何關閉自動部署功能??
自動部署功能每三秒檢查一次應用程序文件夾,以確定是否有任何新應用程序或對現(xiàn)有應用程序的任何更改,然后動態(tài)部署這些更改。
為在開發(fā)模式下運行的服務器啟用了自動部署功能。要禁用自動部署功能,請使用以下方法之一將服務器置于生產模式:
在管理控制臺中,單擊左窗格中的域名,然后在右窗格中選擇“生產模式”復選框。 在命令行中,在啟動域的管理服務器時包括以下參數(shù):
-Dweblogic.ProductionModeEnabled?=?tru為給定域中的所有WebLogic Server實例設置生產模式。
?
問題二十:
我什么時候應該使用externalstage選項??
如果您想自己暫存應用程序,請使用weblogic.Deployer設置-externalstage,并通過自己希望的方式將其復制到目標。
?
持續(xù)監(jiān)控面試問題
問題一:為什么需要持續(xù)監(jiān)控??
建議您采用下面提到的流程:?
持續(xù)監(jiān)控可以及時發(fā)現(xiàn)問題或缺陷,并采取快速糾正措施,有助于降低組織的費用。?
持續(xù)監(jiān)控提供解決方案,解決三個操作規(guī)程,稱為:
-
持續(xù)審計?
-
連續(xù)控制監(jiān)測?
-
持續(xù)交易檢查
?
問題二:什么是Nagios??
您可以通過首先提到Nagios是監(jiān)控工具之一來回答這個問題。它用于DevOps文化中的系統(tǒng),應用程序,服務和業(yè)務流程等的連續(xù)監(jiān)視。
如果發(fā)生故障,Nagios可以向技術人員發(fā)出問題警報,允許他們在中斷影響業(yè)務流程,最終用戶或客戶之前開始修復流程。使用Nagios,您無需解釋為什么不可見的基礎架構中斷會影響您組織的底線。 現(xiàn)在,一旦定義了Nagios,您就可以提到使用Nagios可以實現(xiàn)的各種功能。 通過使用Nagios,您可以:
-
在過時的系統(tǒng)導致故障之前規(guī)劃基礎架構升級。?
-
在出現(xiàn)問題的第一個跡象時應答問題。?
-
檢測到問題時自動修復問題。?
-
協(xié)調技術團隊的回應。?
-
確保您的組織的SLA得到滿足。?
-
確保IT基礎架構中斷對組織的底線影響最小。?
-
監(jiān)控整個基礎架構和業(yè)務流程。?
這就完成了這個問題的答案。可以根據(jù)討論的方向添加諸如優(yōu)點等的進一步細節(jié)。
?
問題三:Nagios如何運作??
建議你按照下面的解釋來解答這個問題: Nagios在服務器上運行,通常作為守護進程或服務運行。Nagios會定期運行駐留在同一服務器上的插件,它們會聯(lián)系您網絡或Internet上的主機或服務器。可以使用Web界面查看狀態(tài)信息。如果發(fā)生某些事情,您還可以收到電子郵件或短信通知 Nagios守護程序的行為類似于在某些時刻運行某些腳本的調度程序。它存儲這些腳本的結果,并在這些結果發(fā)生變化時運行其他腳本。
?
問題四:什么是Nagios的插件??
通過定義插件開始這個答案。它們是腳本(Perl腳本,Shell腳本等),可以從命令行運行以檢查主機或服務的狀態(tài)。Nagios使用插件的結果來確定網絡上主機和服務的當前狀態(tài)。 一旦定義了插件,解釋為什么我們需要插件。只要需要檢查主機或服務的狀態(tài),Nagios就會執(zhí)行插件。插件將執(zhí)行檢查,然后只是將結果返回給Nagios。Nagios將處理從插件接收的結果并采取必要的操作。
?
問題五:Nagios中的NRPE(Nagios Remote Plugin Executor)是什么??
對于這個問題,給出插件的簡要定義。NRPE插件旨在允許您在遠程Linux / Unix計算機上執(zhí)行Nagios插件。這樣做的主要原因是允許Nagios監(jiān)視遠程計算機上的“本地”資源(如CPU負載,內存使用情況等)。由于這些公共資源通常不會暴露給外部計算機,因此必須在遠程Linux / Unix計算機上安裝NRPE之類的代理。
我將建議您根據(jù)下圖所示解釋NRPE架構。NRPE插件由兩部分組成:
check_nrpe插件,駐留在本地監(jiān)視機器上。 NRPE守護程序,在遠程Linux / Unix機器上運行。?
監(jiān)視主機和遠程主機之間存在SSL(安全套接字層)連接,如下圖所示。
?
?
問題六:你對Nagios的被動檢查是這么理解的??
我認為,答案應該從解釋被動檢查開始。它們由外部應用程序/進程啟動和執(zhí)行,被動檢查結果將提交給Nagios進行處理。 然后解釋被動檢查的必要性。它們對于監(jiān)視異步性服務非常有用,并且無法通過定期輪詢其狀態(tài)來有效監(jiān)控。它們還可用于監(jiān)視位于防火墻后面的服務,并且無法從監(jiān)視主機主動檢查。
?
問題七:Nagios何時檢查外部命令??
我建議你按照下面提到的流程。Nagios在以下條件下檢查外部命令:
由主配置文件中的commandcheckinterval選項指定的定期間隔,或 事件處理程序執(zhí)行后立即執(zhí)行。這是外部命令檢查的常規(guī)循環(huán)的補充,并且在事件處理程序向Nagios提交命令時提供立即操作。
?
問題八:Nagios中的主動和被動檢查有什么區(qū)別??
對于這個問題,首先指出主動和被動檢查的基本區(qū)別。主動檢查和被動檢查之間的主要區(qū)別在于Active檢查由Nagios啟動和執(zhí)行,而被動檢查由外部應用程序執(zhí)行。 如果您的面試官看起來不相信上述說明,那么您還可以提及主動和被動檢查的一些關鍵功能: 被動檢查對于監(jiān)控以下服務非常有用:
本質上是異步的,無法通過定期輪詢其狀態(tài)來有效監(jiān)控。 位于防火墻后面,無法從監(jiān)控主機主動檢查。 Actives檢查的主要功能如下:
-
Nagios流程啟動主動檢查。?
-
主動檢查定期運行。
?
問題九:Nagios如何幫助分布式監(jiān)控?
面試官將期待你回答與Nagios的分布式架構相關的答案。因此,我建議您以下面的方式回答: 使用Nagios,您可以使用分布式監(jiān)控方案監(jiān)控整個企業(yè),Nagios的本地從屬實例執(zhí)行監(jiān)控任務并將結果報告給單個主站。您可以管理主服務器的所有配置,通知和報告,而從服務器完成所有工作。這種設計利用了Nagios利用被動檢查的能力,即外部應用程序或將結果發(fā)送回Nagios的過程。在分布式配置中,這些外部應用程序是Nagios的其他實例。
?
問題十:解釋Nagios的主要配置文件及其位置??
首先提一下這個主配置文件包含的內容及其功能。主配置文件包含許多影響Nagios守護程序運行方式的指令。Nagios守護程序和CGI都讀取此配置文件(它指定主配置文件的位置)。 現(xiàn)在您可以知道它的存在位置以及創(chuàng)建方式。運行configure腳本時,將在Nagios分發(fā)的基本目錄中創(chuàng)建示例主配置文件。主配置文件的默認名稱是nagios.cfg。它通常放在Nagios安裝的etc /子目錄中(即/ usr / local / nagios / etc /)。
?
問題十一:解釋Flaip Detection在Nagios中的工作原理??
我會建議你先解釋Flapping。當服務或主機過于頻繁地更改狀態(tài)時會發(fā)生抖動,這會導致大量問題和恢復通知。 定義Flapping后,解釋Nagios如何檢測Flapping。每當Nagios檢查主機或服務的狀態(tài)時,它將檢查它是否已經開始或停止振蕩。Nagios遵循以下給定的程序來做到這一點:
-
存儲分析歷史檢查結果的主機或服務的最后21次檢查的結果,并確定狀態(tài)更改/轉換發(fā)生的位置 使用狀態(tài)轉換來確定主機或服務的百分比狀態(tài)更改值(更改度量) 比較百分比狀態(tài)變化值與低和高拍打閾值 當主機或服務的百分比狀態(tài)變化首次超過高振蕩閾值時,確定主機或服務已開始振蕩。?
-
當主機或服務的百分比狀態(tài)低于低抖動閾值時,確定主機或服務已停止振蕩。
?
問題十二:在Nagios中影響遞歸和繼承的三個主要變量是什么??
根據(jù)我的說法,這個答案的正確格式應該是: 首先命名變量,然后對每個變量做一個小解釋:
名稱 使用 寄存器 然后給出每個變量的簡要說明。Name是其他對象使用的占位符。使用定義應使用其屬性的“父”對象。寄存器的值可以為0(表示只有模板)和1(實際對象)。寄存器值永遠不會被繼承。
?
問題十三:為什么說Nagios是面向對象?
Nagios的一個特性是對象配置格式,因為您可以創(chuàng)建從其他對象定義繼承屬性的對象定義,從而創(chuàng)建名稱。這簡化并闡明了各個組件之間的關系。
?
問題十四:什么是Nagios的狀態(tài)跟蹤??
我會建議你先介紹一下State Salking。它用于記錄目的。當為特定主機或服務啟用Stalking時,Nagios將非常仔細地觀察該主機或服務,并記錄它在檢查結果輸出中看到的任何更改。 根據(jù)您和訪調員之間的討論,您還可以添加“在以后分析日志文件時非常有用。在正常情況下,只有在主機或服務自上次檢查后狀態(tài)發(fā)生變化時,才會記錄主機或服務檢查的結果。“
?
容器化和虛擬化面試問題
問題一:什么是容器?
我的建議是首先解釋容器化的必要性,容器用于提供從開發(fā)人員的筆記本電腦到測試環(huán)境,從登臺環(huán)境到生產的一致計算環(huán)境。 現(xiàn)在給出容器的定義,一個容器由一個完整的運行時環(huán)境組成:一個應用程序,以及它所有的依賴項,庫和其他二進制文件,以及運行它所需的配置文件,捆綁到一個包中。容納應用程序平臺及其依賴項消除了操作系統(tǒng)分發(fā)和底層基礎架構的差異。
?
?
問題二:容器化相比虛擬化有哪些優(yōu)勢?
以下是容器化優(yōu)于虛擬化的優(yōu)勢:
容器提供實時配置和可擴展性,但VM提供緩慢的配置 與VM相比,容器是輕量級的 與容器相比,VM的性能有限 與VM相比,容器具有更好的資源利用率
?
問題三:什么是Docker鏡像?
我建議你使用下面提到的流程: Docker鏡像是Docker容器的來源。換句話說,Docker鏡像用于創(chuàng)建容器。使用build命令創(chuàng)建映像,并且在使用run啟動時它們將生成容器。圖像存儲在Docker注冊表中,例如registry.hub.docker.com,因為它們可能變得非常大,圖像被設計為由其他圖像層組成,允許在通過網絡傳輸圖像時發(fā)送最少量的數(shù)據(jù)。 提示:請注意Dockerhub以回答有關預先可用圖像的問題。
?
問題四:什么是Docker容器??
這是一個非常重要的問題,所以請確保不要偏離主題。我建議您遵循下面提到的格式: Docker容器包括應用程序及其所有依賴項,但與其他容器共享內核,作為主機操作系統(tǒng)上用戶空間中的獨立進程運行。Docker容器不依賴于任何特定的基礎架構:它們可以在任何計算機,任何基礎架構和任何云中運行。 現(xiàn)在解釋如何創(chuàng)建Docker容器,可以通過創(chuàng)建Docker映像然后運行它來創(chuàng)建Docker容器,也可以使用Dockerhub上存在的Docker映像。 Docker容器基本上是Docker鏡像的運行時實例。
?
問題五:什么是Docker hub?
Docker hub是一個基于云的注冊表服務,允許您鏈接到代碼存儲庫,構建映像并測試它們,存儲手動推送的映像以及指向Docker云的鏈接,以便您可以將映像部署到主機。它為整個開發(fā)流程中的容器映像發(fā)現(xiàn),分發(fā)和變更管理,用戶和團隊協(xié)作以及工作流自動化提供了集中資源。
?
問題六:Docker與其他容器技術有何不同??
我認為,您的答案應該包含以下幾點:Docker容器易于在云中部署。與其他技術相比,它可以在相同的硬件上運行更多應用程序,使開發(fā)人員可以輕松快速創(chuàng)建,可立即運行的容器化應用程序,并使管理和部署應用程序變得更加容易。您甚至可以與您的應用程序共享容器。 如果你還有一些要點可以添加,你可以這樣做,但要確保上面的解釋在你的答案中。
?
問題七:什么是Docker Swarm?
?你應該通過解釋Docker Swarn來開始這個答案。它是Docker的本機群集,它將Docker主機池轉變?yōu)閱蝹€虛擬Docker主機。Docker Swarm提供標準的Docker API,任何已經與Docker守護進程通信的工具都可以使用Swarm透明地擴展到多個主機。 我還建議您添加一些支持的工具:
Dokku Docker Compose Docker Machine Jenkins
?
問題八:Dockerfile用于什么??
我認為,應該從解釋Dockerfile的使用開始。Docker可以通過讀取Dockerfile中的指令自動構建圖像。 現(xiàn)在我建議你給出一個Dockerfle的小定義。Dockerfile是一個文本文檔,其中包含用戶可以在命令行上調用以組合圖像的所有命令。使用docker構建用戶可以創(chuàng)建一個連續(xù)執(zhí)行多個命令行指令的自動構建。
?
問題九:我可以在Docker中使用json而不是yaml作為我的compose文件嗎??
你可以使用json而不是yaml作為你的compose文件,使用帶有compose的json文件,指定用于例如的文件名:
docker-compose?-f?docker-compose.json?up?
問題十:Docker容器可以擴展多遠??
像谷歌和Twitter這樣的大型網絡部署,以及像Heroku和dotCloud這樣的平臺提供商都運行在容器技術上,并行運行數(shù)十萬甚至數(shù)百萬個容器。
?
問題十一:當Docker容器退出時,我會丟失數(shù)據(jù)嗎?
當Dcoker容器退出時,不會丟失數(shù)據(jù)。在您明確刪除容器之前,應用程序寫入磁盤的任何數(shù)據(jù)都會保留在其容器中。即使容器停止,容器的文件系統(tǒng)仍然存在。
?
其它問題
問題一:HTTP如何工作??
與大多數(shù)其他協(xié)議一樣,HTTP協(xié)議在客戶端和服務器模型中工作。用于發(fā)起請求的Web瀏覽器被稱為客戶端,并且響應該請求的Web服務器軟件被稱為服務器。萬維網聯(lián)盟和互聯(lián)網工程任務組是HTTP協(xié)議標準化的兩個重要方面。HTTP允許在中間體(例如網關,代理或隧道)的幫助下改進其請求和響應。使用HTTP協(xié)議可以請求的資源可以使用稱為URL(統(tǒng)一資源定位符)的特定類型的URI(統(tǒng)一資源標識符)來獲得。TCP(傳輸控制協(xié)議)用于建立到HTTP使用的應用層端口80的連接。
?
問題二:如何使軟件可部署??
編寫軟件系統(tǒng)安裝和重新配置腳本的能力對于控制和自動化更改至關重要。盡管新軟件的實現(xiàn)趨勢越來越明顯,但舊系統(tǒng)和產品的假設是變化很少且很少,因此難以實現(xiàn)自動化變更。作為一個認識到需要以自動化方式公開配置和設置的專業(yè)人士,我將使用控制反轉(IoC)和依賴注入,腳本安裝,測試工具,關注點分離,命令行工具等概念,和基礎設施作為代碼。
?
問題你三:DevOps做的最重要的事情是什么??
DevOps幫助做的最重要的事情是盡可能快地將更改投入生產,同時最大限度地降低軟件質量保證和合規(guī)性的風險。這是DevOps的主要目標。但是,DevOps還有許多其他積極的副作用。例如,更清晰的溝通和團隊之間更好的工作關系,從而創(chuàng)造一個壓力較小的工作環(huán)境。
?
問題四:DNS中的PTR是什么??
指針記錄用于將網絡接口(IP)映射到主機名。這些主要用于反向DNS。反向DNS的設置與正常(轉發(fā))DNS的設置非常相似。當您委派DNS轉發(fā)時,域的所有者會告知注冊商讓您的域使用特定的名稱服務器。
?
問題五:什么是雙因素身份驗證?
雙因素身份驗證是一種安全過程,其中用戶從不同類別的憑證中提供兩種識別方法; 一個通常是物理令牌,例如卡,另一個通常是記憶的,例如安全碼。
?
問題六:NoSQL數(shù)據(jù)庫相比RDBMS有哪些優(yōu)勢??
優(yōu)點是: 不太需要ETL 支持非結構化文本 能夠隨時間處理變化 功能廣度 能夠水平擴展 支持多種數(shù)據(jù)結構 供應商的選擇
?
問題七:DNS中的MX記錄是什么??
MX記錄是用于確定域的電子郵件服務器優(yōu)先級的郵件交換記錄。優(yōu)先級最低的電子郵件服務器是電子郵件的第一個目標 如果最低優(yōu)先級的電子郵件服務器不可用,則郵件將發(fā)送到優(yōu)先級較高的電子郵件服務器。
?
問題八:RAID 0和RAID 1有什么區(qū)別?
RAID 1通過鏡像提供冗余,即數(shù)據(jù)寫入兩個驅動器相同。RAID 0不提供冗余,而是使用條帶化,即數(shù)據(jù)在所有驅動器之間分配。這意味著RAID 0不提供容錯功能; 如果任何組成驅動器發(fā)生故障,RAID單元將失敗。
?
問題九:您將如何準備遷移??
回答提示:這個問題評估了您對實際項目的體驗,以及它們帶來的所有尷尬和復雜性。在您的答案中包括切換,彩排,回滾和前滾,DNS解決方案,功能切換,逐個抽象和自動化等術語。在很少或根本沒有現(xiàn)有技術的情況下開發(fā)綠地系統(tǒng)總是比處理遺留組件和配置更容易。作為候選人,如果您意識到任何有趣的軟件系統(tǒng)實際上將在不斷的遷移中,您將看起來適合該角色。
?
問題十:如何確保可追溯性??
回答提示:此問題探討了您對指標,日志記錄,交易行程和報告的態(tài)度。您應該能夠確定該度量標準,監(jiān)視和日志記錄需要成為軟件系統(tǒng)的核心部分,如果沒有它們,軟件基本上無法顯示維護和診斷。在你的答案中包括SysLog,Splunk,錯誤跟蹤,Nagios,SCOM,Avicode等詞。
?
問題十一:您遇到了哪些問題,以及如何以符合團隊目標的方式解決這些問題??
回答提示:這個問題的目的是找出你能在工作中處理壓力和不合格的程度。談談你的領導技能,以處理和激勵團隊一起解決問題。談論CI,發(fā)布管理和其他工具,以保持跨學科項目的正常進行。
?
問題十二:您成為DevOps工程師需要做哪些特殊培訓或教育??
回答提示:DevOps更像是一種思維模式或哲學,而不是技能組合。與DevOps Engineers相關的典型技術技能是Linux系統(tǒng)管理,腳本編寫以及使用Jenkins和Chef等眾多持續(xù)集成或配置管理工具之一的經驗。這一切歸結為,無論你擁有什么技能,重要的是,有能力快速學習新技能以滿足需求。這一切都與模式識別有關,并且能夠將您的經驗與當前需求相結合。熟練掌握Windows和Linux系統(tǒng)管理,腳本開發(fā),理解結構化編程和面向對象設計,以及創(chuàng)建和使用RESTful API的經驗需要一個很長的路要走。
總結
以上是生活随笔為你收集整理的DevOps面试问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信头像国旗怎么弄的
- 下一篇: 这些面试中的智力题,你都会了吗