天天看點

Spring Boot 面試題 彙總 --- 《絕絕子》

什麼是 Spring Boot ?

Spring Boot 面試題 彙總 --- 《絕絕子》
多年來,随着新功能的增加,Spring變得越來越複雜。
隻需通路https://spring.io/projects頁面,我們就會看到可以在我我們程式中使用的所有Srping項目的不同功能。
Spring Boot已經建立在現有Spring架構之上。使用Spring啟動,我們避免了之前我們必須做的所有樣闆代碼和配置。
是以,Srping Boot可以幫助我們以最少的工作量,更加健壯地使用現有的Spring功能。
           

Spring Boot 有哪些優點 ?

①減少開發,測試時間。

②使用 JavaConfig 有助于避免使用XML。

③避免大量的 Maven 導入和各種版本沖突。

④需要更少的配置,因為沒有web.xml。

⑤通過提供預設值快速開始開發。

⑥沒有單獨的Web伺服器需要,這意味着你不再需要啟動Tomcat,Glassfish或任何東西。
           

什麼是 JavaConfig ?

Spring JavaConfig 是 Spring社群的産品,它提供了配置Spring Ioc容器的純Java方法。是以它有助于避免使用XML配置。
           

JavaConfig 的 優點 ?

面向對象的配置 :

由于配置被定義為 JavaConfig 中的類,是以使用者可以充分利用 java 中的面向對象功能。
一個配置類可以繼承另一個,重寫它的@Bean方法等。
           

減少或消除XML配置 :

JavaConfig 為開發人員提供了一種純 Java 方法來配置與 XML 配置概念相似的 Spring 容器。
從技術角度來講,隻使用 JavaConfig 配置類來配置容器是可行的。
但實際上很多人認為将 JavaConfig 與 XML 混合比對是理想的。
           

類型安全和重構友好 :

JavaConfig 提供了一種類型安全的方法來配置 Spring容器。
由于 Java 5.0 對泛型的支援,現在可以按類型而不是按名稱檢索 bean,不需要任何強制轉換或基于字元串的查找。
           

如何重新加載 Spring Boot 上的更改,而無需重新啟動伺服器 ?

Spring Boot 有一個開發工具(DevTools)子產品,它有助于提高開發人員的生産力。
Java 開發人員面臨的一個主要挑戰是将檔案更改自動部署到伺服器并自動重新開機伺服器。
開發人員可以重新加載 Spring Boot 上的更改,而無需重新啟動伺服器。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<optional>true</optional>
<dependency>
           

Spring Boot 中的 螢幕 (Actuator) 是什麼?

Spring Boot Actuator 是啟動架構中的重要功能之一。
Spring Boot 螢幕可幫助您通路生産環境中正在運作的應用程式的目前狀态。
螢幕子產品公開一組可直接作為HTTP、URL 通路的 REST 端點來檢查狀态。
           

如何在 自定義端口上運作 Spring Boot 應用程式?

配置檔案: application.properties

端口配置: server.port = 8080

什麼是 YAML ?

YAML 是一種資料序列化語言,具有分層配置資料,它通常用于配置檔案。
如果我們想要在配置檔案中添加複雜的屬性,YAML 檔案就更加結構化,而且更少混淆。
           

什麼是 Swagger ?

Swagger 廣泛用于可視化 API,使用 Swagger UI 為前端開發人員提供線上沙箱。
Swagger 是用于生成 RESTful Web 服務的可視化表示的工具,規範和完整架構實作。它使文檔能夠以與伺服器相同的速度更新。
           

什麼是 Spring Profiles ?

Spring Profiles 允許使用者根據配置檔案(dev,test,prod 等)來注冊 bean。
是以,當應用程式在開發中運作時,隻有某些 bean 可以加載,而在 PRODUCTION中,某些其他 bean 可以加載。
           

什麼是 Spring Batch ?

Spring Boot Batch 提供可重用的函數,這些函數在處理大量記錄時非常重要,包括日志/跟蹤,事務管理,作業處理統計資訊,作業重新啟動,跳過和資源管理。
它還提供了更先進的技術服務和功能,通過優化和分區技術,可以實作極高批量和高性能批處理作業。
簡單以及複雜的大批量批處理作業可以高度可擴充的方式利用架構處理重要大量的資訊。
           

什麼是 FreeMarker 模闆 ?

FreeMarker 是一個基于 Java 的模闆引擎,最初專注于使用 MVC 軟體架構進行動态網頁生成。
使用 Freemarker 的主要優點是表示層和業務層的完全分離。
程式員可以處理應用程式代碼,而設計人員可以處理 html 頁面設計。
最後使用freemarker 可以将這些結合起來,給出最終的輸出頁面。
           

如何實作 Srping Boot 應用程式的 安全性 ?

使用 Spring-boot-sarter-security 依賴項,并且必須添加安全配置。
它隻需要很少的代碼,配置類将必須擴充 WebSecurityConfigurerAdapter 并覆寫其方法。
           

如何使用 Spring Boot 實作 異常處理 ?

Spring 提供了一種使用 ControllerAdvice 處理異常的方法。 
我們通過實作一個 ControlerAdvice 類,來處理控制器類抛出的所有異常。
           

Spring Boot 中使用了哪些 starter maven 依賴項 ?

spring-boot-starter-activemq
spring-boot-starter-security

有助于增加更少的依賴關系,并減少版本的沖突。
           

什麼是 CSRF 攻擊 ?

CSRF 代表跨站請求僞造。
這是一種攻擊,迫使最終使用者在目前通過身份驗證的 Web 應用程式上執行不需要的操作。
CSRF 攻擊專門針對狀态改變請求,而不是資料竊取,因為攻擊者無法檢視對僞造請求的響應。
           

什麼是 WebSockets ?

WebSocket 是一種計算機通信協定,通過單個 TCP 連接配接提供全雙工通信信道。
           
Spring Boot 面試題 彙總 --- 《絕絕子》

WebSocket 是雙向的 :

使用WebSocket 用戶端或伺服器可以發起消息發送。 
           

WebSocket 是全雙工的 :

用戶端和伺服器通信是互相獨立的。
           

單個TCP連接配接 :

初始連接配接使用 HTTP ,将此連接配接更新到基于套接字的連接配接。
然後這個單一連接配接用于所有未來的通信。
           

Light :

與 HTTP 相比,WebSocket 消息資料交換要輕易得多。
           

什麼是 Apache Kafka ?

Apache Kafka 是一個分布式釋出 - 訂閱消息系統。
它是一個可擴充的,容錯的釋出 - 訂閱消息系統,它使我們能夠建構分布式應用程式。
這是一個 Apache 頂級項目。    Kafka 适合離線和線上消息消費。