spring boot面試問題集錦


譯文作者:david  原文鏈接:https://www.javainuse.com/spring/SpringBootInterviewQuestions

Q: 什么是spring boot?

A: 多年來,隨着新功能的增加,spring變得越來越復雜。只需訪問頁面https://spring.io/projects,我們將看到所有在應用程序中使用的不同功能的spring項目。如果必須啟動一個新的spring項目,我們必須添加構建路徑或maven依賴項,配置application server,添加spring配置。因此,啟動一個新的spring項目需要大量的工作,因為我們目前必須從頭開始做所有事情Spring Boot是這個問題的解決方案。Spring boot構建在現有Spring框架之上。使用spring boot,我們可以避免以前必須執行的所有樣板代碼和配置。因此,Spring boot幫助我們更健壯地使用現有的Spring功能,並且只需最少的工作量。

 

Q:Spring Boot的優點是什么?

A: 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)處加載后續的應用程序屬性文件。

 

Q:您使用過哪些構建工具來開發Spring引導應用程序?

A: Spring Boot應用程序可以使用Maven和Gradle開發。

 

Q:什么是JavaConfig?

A: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?
A: 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 + ELK stack

問:您有使用Spring Boot編寫測試用例嗎?
答:SpringBoot為編寫單元測試用例提供了@SpringBootTest
Spring引導單元測試的簡單示例

問:YAML是什么?
答:YAML是一種人類可讀的數據序列化語言。它通常用於配置文件。
與屬性文件相比,YAML文件的結構更加結構化,如果我們希望在配置文件中添加復雜的屬性,那么它不會造成太大的混亂。可以看到,YAML具有分層的配置數據。
在Spring引導中使用YAML屬性

 

問:如何為Spring引導應用程序實現安全性?

答:為了實現Spring Boot的安全性,我們使用Spring - Boot -starter-security依賴項,必須添加安全配置。它只需要很少的代碼。Config類必須擴展WebSecurityConfigurerAdapter並覆蓋它的方法。

Spring引導安全性示例和說明


問:您是否集成了Spring Boot和ActiveMQ ?

為了集成Spring Boot和ActiveMQ,我們使用Spring - Boot -starter- ActiveMQ依賴項,它只需要很少的配置,沒有樣板代碼。

Spring引導ActiveMQ說明


問:您是否集成了Spring Boot和Apache Kafka ?

答:為了集成Spring Boot和Apache Kafka,我們使用Spring - Kafka依賴項。

Spring Boot + Apache Kafka示例


問:如何使用Spring引導實現分頁和排序?

答:使用Spring Boot實現分頁非常簡單。使用Spring Data-JPA,這是通過傳遞可分頁的org.springframe .data.domain來實現的。可分頁到存儲庫方法。

Spring引導分頁說明


什么是Swagger?您是否使用Spring Boot實現了它?

答:Swagger被廣泛用於可視化api,Swagger UI為前端開發人員提供在線沙箱環境。在本教程中,我們將使用Swagger 2規范的Springfox實現。Swagger是一種工具、規范和完整的框架實現,用於生成RESTful Web服務的可視化表示。它允許文檔以與服務器相同的速度更新。當通過Swagger正確定義時,使用者可以用最少的實現邏輯理解遠程服務並與之交互。因此Swagger消除了調用服務時的猜測。

Spring Boot + Swagger2


問:什么是Spring Profiles?如何使用Spring Boot實現它?

答:Spring Profiles允許用戶根據配置文件(dev, test, prod等)注冊bean。因此,當應用程序在開發中運行時,只能加載某些bean,當應用程序在生產中運行時,只能加載某些其他bean。假設我們的需求是Swagger文檔只對QA環境啟用,對所有其他環境禁用。這可以使用配置文件來完成。Spring Boot使得使用配置文件非常容易。

Spring引導+配置文件


什么是Spring Boot Batch?如何使用Spring Boot實現它?

答:Spring Boot Batch提供了處理大量記錄所必需的可重用功能,包括日志/跟蹤、事務管理、作業處理統計信息、作業重啟、作業跳過和資源管理。它還提供了更高級的技術服務和特性,通過優化和分區技術,這些特性將支持極高容量和高性能的批處理作業。無論是簡單的還是復雜的,大容量批處理作業都可以以高度可伸縮的方式利用該框架來處理大量信息。

Spring Boot Batch


問:什么是FreeMarker模板?如何使用Spring Boot實現它?

答:FreeMarker是一個基於java的模板引擎,最初專注於使用MVC軟件架構生成動態web頁面。使用Freemarker的主要優勢是完全分離了表示層和業務層。程序員可以處理應用程序代碼,而設計人員可以處理html頁面設計。最后,使用freemarker,這些可以組合在一起,給出最終的輸出頁面。

Spring Boot + FreeMarker的例子


問:如何使用Spring Boot實現異常處理?

答:Spring提供了一種非常有用的方法,可以使用ControllerAdvice處理異常。我們將實現一個ControlerAdvice類,它將處理控制器類拋出的所有異常。

Spring引導異常處理


什么是緩存?您在Spring引導中使用過緩存框架嗎?

答:緩存是本地內存的一個區域,它保存了頻繁訪問的數據的副本,否則獲取或計算這些數據將非常昂貴。使用Hazelcast進行緩存。

Spring Boot + Hazelcast示例


問:您是否使用Spring Boot公開了SOAP web服務端點?

是的。使用Spring Boot公開了要使用的web服務。使用契約優先的方法從wsdl生成類。

Spring引導+ SOAP Web服務示例


問:您如何使用Spring Boot執行數據庫操作?

答:Spring引導教程-Spring Data JPA

Spring引導JDBC示例


問:如何使用Spring上傳文件?

A: Spring Boot +文件上傳的例子

 

問:如何用Spring Boot實現攔截器?
答:使用Spring MVC HandlerInterceptor與Spring引導

問:如何在Spring Boot下使用schedulers ?
答:Spring引導任務調度程序示例

問:您使用過哪些啟動器maven依賴項?
答:使用過不同的starter依賴項,如spring-boot-starter-activemq依賴項、spring-boot-starter-security依賴項、spring-boot-starter-web依賴項。
這有助於減少依賴項的數量,並減少版本組合。
Spring引導安全性示例和說明

什么是CSRF攻擊?如何啟用CSRF對其進行保護?
CSRF代表跨站請求偽造。它是一種攻擊,迫使最終用戶在其當前已經過身份驗證的web應用程序上執行不需要的操作。CSRF攻擊專門針對狀態更改請求,而不是數據竊取,因為攻擊者無法看到對偽造請求的響應。
Spring引導安全性—啟用CSRF保護

問:如何使用Spring引導使用表單登錄身份驗證?
答:Spring引導表單安全登錄Hello World示例

什么是OAuth2?如何使用Spring Boot實現它?
答:Spring Boot + OAuth2實現

問:GZIP是什么?如何使用Spring Boot實現它?
答:gzip是一種文件格式,是一種用於文件壓縮和解壓縮的軟件應用程序。
Spring引導+ GZIP壓縮

問:您在Spring引導中使用過集成框架嗎?
答:已將Apache Camel與Spring引導集成。使用Apache Camel Spring啟動啟動依賴項。

Spring Boot +Apache Camel

問:什么是Apache Freemarker?什么時候使用它而不是JSP?如何與Spring Boot集成?
答:JSP是為網頁量身定做的,Freemarker模板是一種更通用的模板語言——它可以用來生成html、純文本、電子郵件等。
Spring Boot + FreeMarker的例子

問:你什么時候使用WebSockets?如何使用Spring Boot實現它?
答:WebSocket是一種計算機通信協議,通過單個TCP連接提供全雙工通信通道。

WebSocket是雙向的——使用WebSocket客戶端或服務器都可以發起發送消息。
WebSocket是全雙工的——客戶端和服務器之間的通信是相互獨立的。
單個TCP連接——初始連接使用HTTP,然后將此連接升級為基於套接字的連接。然后,這個單一連接將用於未來的所有通信
輕- WebSocket消息數據交換比http輕得多。
Spring Boot + WebSockets的例子

什么是AOP?如何與Spring Boot一起使用?
答:在軟件開發過程中,跨越應用程序多個點的功能稱為橫切關注點。這些橫切關注點不同於應用程序的主要業務邏輯。因此,將這些橫切關注點從業務邏輯中分離出來是面向方面編程(AOP)的切入點。
Spring Boot + AOP示例

問:什么是Apache Kafka?如何與Spring Boot集成?
答:apache Kafka是一個分布式發布-訂閱消息傳遞系統。它是一個可伸縮的、容錯的、發布-訂閱消息傳遞系統,使我們能夠構建分布式應用程序。這是一個Apache頂級項目。Kafka適用於離線和在線的消息消費。
Spring Boot + Apache Kafka示例

問:我們如何監視所有Spring Boot微服務?
答:Spring Boot提供了actuator 端點來監控單個微服務的指標。這些端點對於獲取關於應用程序的信息非常有幫助,比如應用程序是否啟動,它們的組件(如數據庫等)是否正常工作。但是,使用actuator 接口的一個主要缺點或困難是,我們必須逐個命中這些接口,以了解應用程序的狀態或健康狀況。假設微服務涉及50個應用程序,管理員將不得不命中所有50個應用程序的actuator 端點。為了幫助我們處理這種情況,我們將使用位於https://github.com/codecentric/springing-boot-admin的開源項目。
它構建在Spring Boot Actuator之上,提供了一個web UI,使我們能夠可視化多個應用程序的指標。
Spring Boot Admin

問:您在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)?
A: Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + MySQL Application to PCF 

問:如何將Spring Boot + RabbitMQ應用部署到Pivotal Cloud Foundry(PCF)?
A: Pivotal Cloud Foundry Tutorial - Deploying Spring Boot + RabbitMQ Application to PCF 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM