1. 程式人生 > >【9】進大廠必須掌握的面試題-DevOps面試

【9】進大廠必須掌握的面試題-DevOps面試

### **Q1。DevOps和Agile之間的根本區別是什麼?** 下表中列出了兩者之間的差異。 | **特徵** | **DevOps--開發運維** | **Agile--敏捷** | | --------------------- | -------------------------- | ----------------------------------- | | **敏捷** | 開發和運營中的敏捷性 | 只有發展才能敏捷 | | **流程/實踐** | 涉及CI,CD,CT等流程。 | 涉及諸如敏捷Scrum,敏捷看板等實踐。 | | **時效與質量** | 時效與質量同等重要 | 及時是重中之重 | | **釋出週期/開發週期** | 釋放週期短,可立即獲得反饋 | 釋放週期更短 | | **反饋來源** | 反饋來自自我(監視工具) | 反饋來自客戶 | | **工作範圍** | 敏捷性與自動化需求 | 僅敏捷 | ### **Q2。DevOps有什麼需求?** 這個答案應該從解釋總體市場趨勢開始。公司沒有釋出大量功能,而是嘗試檢視是否可以通過一系列釋出系列將小的功能傳輸給客戶。這具有許多優點,例如來自客戶的快速反饋,更好的軟體質量等,從而導致很高的客戶滿意度。為此,公司必須: 1. 增加部署頻率 2. 降低新版本的失敗率 3. 縮短了兩次版本之間的交付時間 4. 新版本崩潰時平均恢復時間更快 DevOps滿足所有這些要求,並有助於實現無縫的軟體交付。您可以舉一些像Etsy,ali,Google和Amazon這樣的公司的例子,這些公司採用DevOps來達到甚至五年前都無法想象的效能水平。他們每天進行數十,數百甚至數千個程式碼部署,同時提供世界一流的穩定性,可靠性和安全性。 ### **Q3。DevOps與Agile / SDLC有何不同?** 我建議您遵循以下說明: 敏捷是關於如何生產(即開發軟體)的一套價值觀和原則。示例:如果您有一些想法,並且想要將這些想法變成可行的軟體,則可以使用敏捷的價值觀和原則來做到這一點。但是,該軟體可能只能在開發人員的膝上型電腦或測試環境中執行。您需要一種以安全,簡單的方式快速,輕鬆且可重複地將軟體遷移到生產基礎架構中的方法。為此,您需要DevOps工具和技術。 可以這樣概括地說,敏捷軟體開發方法論著重於軟體開發,但另一方面,DevOps負責以最安全,最可靠的方式進行軟體的開發和部署。 ### **Q4。有哪些頂級DevOps工具?您使用了哪些工具?** 以下是最受歡迎的DevOps工具: - Git:版本控制系統工具 - Jenkins:持續整合工具 - Selenium :連續測試工具 - Puppet, Chef, Ansible:配置管理和部署工具 - Nagios:連續監視工具 - Docker:容器化工具 您還可以根據需要提及其他任何工具,但請確保在回答中包括上述工具。 答案的第二部分有兩種可能性: 1. 如果您具有上述所有工具的經驗,那麼您可以說我已經在所有這些工具上工作,以開發高質量的軟體並輕鬆,頻繁且可靠地部署這些軟體。 2. 如果您僅對上述某些工具有經驗,請提及這些工具,並說我對這些工具有專長,並對其餘工具進行了概述。 ### **Q5。所有這些工具如何一起工作?** 下面給出的是通用邏輯流程,其中所有內容均實現了自動化以實現無縫交付。但是,根據需求,每個組織的流程可能會有所不同。 1. 開發人員開發程式碼,此原始碼由版本控制系統工具(如Git等)管理。 2. 開發人員將此程式碼傳送到Git儲存庫,並且對程式碼所做的任何更改都將提交到此儲存庫。 3. Jenkins使用Git外掛從儲存庫中提取此程式碼,並使用Ant或Maven之類的工具進行構建。 4. 諸如puppet之類的配置管理工具會部署並配置測試環境,然後Jenkins在測試環境中釋出此程式碼,並使用硒等工具在此環境中進行測試。 5. 一旦測試了程式碼,Jenkins便將其傳送以在生產伺服器上進行部署(甚至生產伺服器也由puppet之類的工具提供和維護)。 6. 部署後,它會被Nagios等工具持續監控。 7. Docker容器提供了測試環境以測試構建功能。 ### **Q6。DevOps有哪些優勢?** 技術優勢: - 持續交付軟體 - 不太複雜的問題需要解決 - 更快地解決問題 商業利益: - 更快地交付功能 - 更穩定的操作環境 - 更多時間可用於增加價值(而不是修復/維護) ### **Q7。DevOps幫助我們實現的最重要的事情是什麼?** 據我說,DevOps幫助我們實現的最重要的事情是儘快將變更投入生產,同時最大程度地降低軟體質量保證和合規性方面的風險。但是,您可以新增DevOps的許多其他積極作用。例如,團隊之間的更清晰的溝通和更好的工作關係,即Ops團隊和Dev團隊共同協作以交付高質量的軟體,從而提高了客戶滿意度。 ### **Q8。說明可以在工業/現實生活中使用DevOps的用例。** Etsy是一個對等電子商務網站,專注於手工或老式物品和用品,以及獨特的工廠製造物品。Etsy在緩慢而痛苦的網站更新中苦苦掙扎,這些更新經常導致網站崩潰。這影響了數百萬Etsy使用者的銷售量,這些使用者通過線上市場出售商品並冒著將商品推向競爭對手的風險。 在新的技術管理團隊的幫助下,Etsy從其瀑布模型(該模型每週兩次進行四小時的全站點部署)過渡到了更加敏捷的方法。如今,它擁有一個完全自動化的部署流程,據報道,其持續交付實踐每天可進行50多次部署,中斷次數更少。 ### **Q9。在過去與您合作過的團隊中,說明您在軟體開發方面和技術運營方面的理解和專業知識。** DevOps工程師幾乎總是在24/7關鍵業務線上環境中工作。我適應了隨叫隨到的職責,可以承擔實時的實時系統職責。我成功地實現了流程自動化,以支援連續的軟體部署。我對公共/私有云,Chef或Puppet等工具,使用Python和PHP等工具進行指令碼編寫和自動化以及在Agile中具有背景知識有豐富的經驗。 ### **Q10。DevOps的反模式是什麼?** 模式通常是常用的用法。如果其他人通常採用的模式對您的組織不起作用,並且您繼續盲目地遵循它,那麼您實際上是在採用反模式。關於DevOps的神話。其中一些包括: - DevOps是一個過程 - 敏捷等於DevOps? - 我們需要一個單獨的DevOps組 - Devops將解決我們所有的問題 - DevOps意味著開發人員管理生產 - DevOps是開發驅動的釋出管理 1. DevOps不是由開發驅動的。 2. DevOps不是由IT Operations驅動的。 - 我們無法做DevOps –我們是獨一無二的 - 我們無法進行DevOps –我們選錯了人 > 歡迎關注 [Java架構師社群](http://javajgs.com/)公眾號. > 本文轉載自[Java架構師必看](http://javajgs.com/archives/6617) ,更多內容點選