面試那點小事,你從未見過的spring boot面試集錦(附詳細答案)
一, 什麼是spring boot?
多年來,隨著新功能的增加,spring變得越來越複雜。只需訪問頁面https://spring.io/projects,我們將看到所有在應用程式中使用的不同功能的spring專案。如果必須啟動一個新的spring專案,我們必須新增構建路徑或maven依賴項,配置application server,新增spring配置。因此,啟動一個新的spring專案需要大量的工作,因為我們目前必須從頭開始做所有事情。Spring Boot是這個問題的解決方案。Spring boot構建在現有Spring框架之上。使用spring boot,我們可以避免以前必須執行的所有樣板程式碼和配置。因此,Spring boot幫助我們更健壯地使用現有的Spring功能,並且只需最少的工作量。
二,Spring Boot的優點是什麼?
-
減少開發、測試的時間和工作量。
-
使用JavaConfig有助於避免使用XML。
-
避免大量maven匯入和各種版本衝突。
-
提供可選的開發方法。
-
通過提供預設開發方式進行快速開發。
-
不需要單獨的Web伺服器。這意味著您不再需要啟動Tomcat、Glassfish或其他任何東西。
由於沒有web.xml檔案,所以需要更少的配置。只需新增帶@ configuration註釋的類,然後可以新增帶@ bean註釋的方法,Spring將自動載入物件並像往常一樣管理它。您甚至可以將@Autowired新增到bean方法中,使Spring autowire成為bean所需的依賴項。
基於環境的配置——使用這些屬性,您可以將其傳遞到您正在使用的應用程式環境中:- dspring .profile .active={enviorement}。在載入主應用程式屬性檔案之後,Spring將在(application-{environment}.properties)處載入後續的應用程式屬性檔案。
三,您使用過哪些構建工具來開發Spring引導應用程式?
Spring Boot應用程式可以使用Maven和Gradle開發。
四,什麼是JavaConfig?
Spring JavaConfig是Spring社群的一個產品,它提供了一種純java方法來配置Spring IoC容器。因此,它有助於避免使用XML配置。使用JavaConfig的優點是:
面向物件的配置。因為配置在JavaConfig中定義為類,所以使用者可以充分利用Java中的面向物件特性。一個配置類可以子類化另一個配置類,覆蓋它的@Bean方法,等等。
減少或消除XML配置。已經證明了基於依賴注入原則的外部化配置的好處。然而,許多開發人員不願意在XML和Java之間來回切換。JavaConfig為開發人員提供了一種純java方法來配置Spring容器,這種方法在概念上類似於XML配置。從技術上講,僅使用 JavaConfig配置類來配置容器是可行的,但是在實踐中,許多人發現將JavaConfig與XML混合並匹配是理想的。
型別安全的重構能力。JavaConfig提供了一種型別安全的配置Spring容器的方法。由於Java 5.0對泛型的支援,現在可以通過型別而不是名稱檢索bean,不需要進行任何基於型別轉換或字串的查詢。
五,如何在不重啟伺服器的情況下在Spring引導時重新載入我的更改?
這可以通過開發工具來實現。有了這個依賴項,您儲存的任何更改都將重新啟動嵌入的tomcat。Spring Boot有一個開發人員工具(DevTools)模組,它有助於提高開發人員的工作效率。Java開發人員面臨的關鍵挑戰之一是將檔案更改自動部署到伺服器並自動重啟伺服器。開發人員可以在Spring引導時重新載入更改,而不必重新啟動伺服器。這將消除每次手動部署更改的需要。Spring Boot在釋出第一個版本時沒有這個特性。這是開發人員最需要的特性。DevTools模組完全滿足開發人員的需求。此模組將在生產環境中禁用。它還提供了H2-database控制檯,以便更好地測試應用程式。使用以下依賴項
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional></dependency>
下面的示例演示了自動啟動和H2 DB控制檯的DevTool依賴項用法
六,什麼是Spring boot actuator?
Spring boot actuator是Spring boot framework的重要特性之一。Spring boot actuator幫助您訪問生產環境中正在執行的應用程式的當前狀態,在生產環境中必須檢查和監視幾個指標。甚至一些外部應用程式也可能使用這些服務來觸發對相關人員的警報訊息。actuator模組公開一組REST端點,這些端點可以作為HTTP URL直接訪問,以檢查狀態。
七,如何將Spring Boot應用程式作為war包部署?
Spring Boot WAR部署
八,什麼是Docker嗎?如何將Spring引導應用程式部署到Docker?
Docker是什麼
將基於Spring的WAR應用程式部署到Docker
將基於Spring的JAR應用程式部署到Docker
九,如何禁用執行器端點安全在Spring啟動?
預設情況下,所有敏感的HTTP端點都是安全的,只有具有ACTUATOR角色的使用者才能訪問它們。安全性是使用標準HttpServletRequest.isUserInRole方法實現的。
我們可以使用-禁用安全性
management.security.enabled = false
建議僅當在防火牆後訪問ACTUATOR端點時禁用安全性。
十,如何將Spring引導應用程式執行到自定義埠?
要在自定義埠上執行spring引導應用程式,可以在application.properties中指定埠。
server.port = 8090
十一,什麼是ELK堆疊?如何與Spring Boot一起使用?
ELK堆疊由三個開源產品組成——Elasticsearch、Logstash和Kibana from Elastic。
Elasticsearch是一個基於Lucene搜尋引擎的NoSQL資料庫。
Logstash是一個日誌管道工具,它接受來自不同來源的輸入,執行不同的轉換,並將資料匯出到不同的目標。它是一個動態的資料收集管道,具有可擴充套件的外掛生態系統和強大的彈性搜尋協同作用
Kibana是一個視覺化UI層,工作在Elasticsearch之上。
這三個專案一起用於各種環境中的日誌分析。因此Logstash收集和解析日誌、彈性搜尋索引並存儲這些資訊,而Kibana提供了一個UI層,提供可操作的可見性。
十二,您有使用Spring Boot編寫測試用例嗎?
SpringBoot為編寫單元測試用例提供了@SpringBootTest
十三,YAML是什麼?
YAML是一種人類可讀的資料序列化語言。它通常用於配置檔案。
與屬性檔案相比,YAML檔案的結構更加結構化,如果我們希望在配置檔案中新增複雜的屬性,那麼它不會造成太大的混亂。可以看到,YAML具有分層的配置資料。
十四,如何為Spring引導應用程式實現安全性?
為了實現Spring Boot的安全性,我們使用Spring - Boot -starter-security依賴項,必須新增安全配置。它只需要很少的程式碼。Config類必須擴充套件WebSecurityConfigurerAdapter並覆蓋它的方法。
十五,您是否集成了Spring Boot和ActiveMQ ?
為了整合Spring Boot和ActiveMQ,我們使用Spring - Boot -starter- ActiveMQ依賴項,它只需要很少的配置,沒有樣板程式碼。
十六,您是否集成了Spring Boot和Apache Kafka ?
為了整合Spring Boot和Apache Kafka,我們使用Spring - Kafka依賴項。
十七,如何使用Spring引導實現分頁和排序?
使用Spring Boot實現分頁非常簡單。使用Spring Data-JPA,這是通過傳遞可分頁的org.springframe .data.domain來實現的。可分頁到儲存庫方法。
十八,什麼是Swagger?您是否使用Spring Boot實現了它?
Swagger被廣泛用於視覺化api,Swagger UI為前端開發人員提供線上沙箱環境。在本教程中,我們將使用Swagger 2規範的Springfox實現。Swagger是一種工具、規範和完整的框架實現,用於生成RESTful Web服務的視覺化表示。它允許文件以與伺服器相同的速度更新。當通過Swagger正確定義時,使用者可以用最少的實現邏輯理解遠端服務並與之互動。因此Swagger消除了呼叫服務時的猜測。
十九,什麼是Spring Profiles?如何使用Spring Boot實現它?
Spring Profiles允許使用者根據配置檔案(dev, test, prod等)註冊bean。因此,當應用程式在開發中執行時,只能載入某些bean,當應用程式在生產中執行時,只能載入某些其他bean。假設我們的需求是Swagger文件只對QA環境啟用,對所有其他環境禁用。這可以使用配置檔案來完成。Spring Boot使得使用配置檔案非常容易。
二十,什麼是Spring Boot Batch?如何使用Spring Boot實現它?
Spring Boot Batch提供了處理大量記錄所必需的可重用功能,包括日誌/跟蹤、事務管理、作業處理統計資訊、作業重啟、作業跳過和資源管理。它還提供了更高階的技術服務和特性,通過優化和分割槽技術,這些特性將支援極高容量和高效能的批處理作業。無論是簡單的還是複雜的,大容量批處理作業都可以以高度可伸縮的方式利用該框架來處理大量資訊。
二十一,什麼是FreeMarker模板?如何使用Spring Boot實現它?
答:FreeMarker是一個基於java的模板引擎,最初專注於使用MVC軟體架構生成動態web頁面。使用Freemarker的主要優勢是完全分離了表示層和業務層。程式設計師可以處理應用程式程式碼,而設計人員可以處理html頁面設計。最後,使用freemarker,這些可以組合在一起,給出最終的輸出頁面。
二十二,如何使用Spring Boot實現異常處理?
Spring提供了一種非常有用的方法,可以使用ControllerAdvice處理異常。我們將實現一個ControlerAdvice類,它將處理控制器類丟擲的所有異常。
二十三,什麼是快取?您在Spring引導中使用過快取框架嗎?
快取是本地記憶體的一個區域,它儲存了頻繁訪問的資料的副本,否則獲取或計算這些資料將非常昂貴。使用Hazelcast進行快取。
二十四您是否使用Spring Boot公開了SOAP web服務端點?
是的。使用Spring Boot公開了要使用的web服務。使用契約優先的方法從wsdl生成類。
二十五,您如何使用Spring Boot執行資料庫操作?
二十六,如何使用Spring上傳檔案?
二十七,如何用Spring Boot實現攔截器?
使用Spring MVC HandlerInterceptor與Spring引導
二十八,如何在Spring Boot下使用schedulers ?
二十九,您使用過哪些啟動器maven依賴項?
使用過不同的starter依賴項,如spring-boot-starter-activemq依賴項、spring-boot-starter-security依賴項、spring-boot-starter-web依賴項。
這有助於減少依賴項的數量,並減少版本組合。
三十,什麼是CSRF攻擊?如何啟用CSRF對其進行保護?
CSRF代表跨站請求偽造。它是一種攻擊,迫使終端使用者在其當前已經過身份驗證的web應用程式上執行不需要的操作。CSRF攻擊專門針對狀態更改請求,而不是資料竊取,因為攻擊者無法看到對偽造請求的響應。
三十一,如何使用Spring引導使用表單登入身份驗證?
三十二,什麼是OAuth2?如何使用Spring Boot實現它?
三十三,GZIP是什麼?如何使用Spring Boot實現它?
gzip是一種檔案格式,是一種用於檔案壓縮和解壓縮的軟體應用程式。
三十四,您在Spring引導中使用過整合框架嗎?
已將Apache Camel與Spring引導整合。使用Apache Camel Spring啟動啟動依賴項。
三十五,什麼是Apache Freemarker?什麼時候使用它而不是JSP?如何與Spring Boot整合?
JSP是為網頁量身定做的,Freemarker模板是一種更通用的模板語言——它可以用來生成html、純文字、電子郵件等。
三十六,你什麼時候使用WebSockets?如何使用Spring Boot實現它?
WebSocket是一種計算機通訊協議,通過單個TCP連線提供全雙工通訊通道。
WebSocket是雙向的——使用WebSocket客戶端或伺服器都可以發起傳送訊息。
WebSocket是全雙工的——客戶端和伺服器之間的通訊是相互獨立的。
單個TCP連線——初始連線使用HTTP,然後將此連線升級為基於套接字的連線。然後,這個單一連線將用於未來的所有通訊
輕- WebSocket訊息資料交換比http輕得多。
Spring Boot + WebSockets的例子
三十七,什麼是AOP?如何與Spring Boot一起使用?
在軟體開發過程中,跨越應用程式多個點的功能稱為橫切關注點。這些橫切關注點不同於應用程式的主要業務邏輯。因此,將這些橫切關注點從業務邏輯中分離出來是面向方面程式設計(AOP)的切入點。
三十八,什麼是Apache Kafka?如何與Spring Boot整合?
apache Kafka是一個分散式釋出-訂閱訊息傳遞系統。它是一個可伸縮的、容錯的、釋出-訂閱訊息傳遞系統,使我們能夠構建分散式應用程式。這是一個Apache頂級專案。Kafka適用於離線和線上的訊息消費。
三十九,我們如何監視所有Spring Boot微服務?
Spring Boot提供了actuator 端點來監控單個微服務的指標。這些端點對於獲取關於應用程式的資訊非常有幫助,比如應用程式是否啟動,它們的元件(如資料庫等)是否正常工作。但是,使用actuator 介面的一個主要缺點或困難是,我們必須逐個命中這些介面,以瞭解應用程式的狀態或健康狀況。假設微服務涉及50個應用程式,管理員將不得不命中所有50個應用程式的actuator 端點。為了幫助我們處理這種情況,我們將使用位於https://github.com/codecentric/springing-boot-admin的開源專案。
它構建在Spring Boot Actuator之上,提供了一個web UI,使我們能夠視覺化多個應用程式的指標。
四十,您在Spring引導中使用過Spring Cloud元件嗎?
使用過Netflix Eureka等Spring Cloud元件進行服務註冊,Ribbon用於負載平衡。
Spring Boot + Cloud Components
Spring Cloud interview Questions
四十一,如何將Spring Boot應用程式部署到Pivotal Cloud Foundry(PCF)?
Deploying Spring Boot Application to PCF
四十二,如何將Spring Boot + MySQL應用部署到Pivotal Cloud Foundry(PCF)?
Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + MySQL Application to PCF
四十三,如何將Spring Boot + RabbitMQ應用部署到Pivotal Cloud Foundry(PCF)?
Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + RabbitMQ Application to PCF
讀者福利
針對於上面的文章我總結出了網際網路公司java程式設計師面試涉及到的絕大部分面試題及答案做成了文件和架構視訊資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術資料),希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。
分享+關注我,點選進入【Java高階網際網路架構:964357187】免費領取面試資料
合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!
作者:Java架構之路
連結:https://www.jianshu.com/p/557efae11c6f
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授