JavaWeb編程面試題——Spring Boot

来源:https://www.cnblogs.com/coding-rocket/archive/2023/05/30/17443431.html
-Advertisement-
Play Games

面試題==知識點,這裡所記錄的面試題並不針對於面試者,而是將這些面試題作為技能知識點來看待。不以刷題進大廠為目的,而是以學習為目的。這裡的知識點會持續更新,目錄也會隨時進行調整。 ...


引言

面試題==知識點,這裡所記錄的面試題並不針對於面試者,而是將這些面試題作為技能知識點來看待。不以刷題進大廠為目的,而是以學習為目的。這裡的知識點會持續更新,目錄也會隨時進行調整。

關註公眾號:編程火箭車。在【粉絲福利】中點擊【面題大全】,其中的Java面試題線上實時更新、查看。

一、面試題導航

點這裡進入JavaWeb編程面試題——導航

面試題持續更新中......

二、面試題目

1.什麼是SpringBoot?

SpringBoot 是 Spring 開源組織下的子項目,是 Spring 組件一站式解決方案,主要是簡化了使用 Spring 的難度,簡省了繁重的配置,提供了各種啟動器,使開發者能快速上手。

2.談談你對SpringBoot的理解?

SpringBoot 主要用來簡化使用 Spring 的難度和繁重的 XML 配置,它是 Spring 組件的一站式解決方案,採取了習慣優於配置的方法。通過 .properties 或者 .yml 文件替代了 Spring 繁雜的 XML 配置文件,同時支持 @ImportResource 註解載入 XML 配置。SpringBoot 還提供了嵌入式 HTTP 伺服器、命令行介面工具、多種插件等等,使得應用程式的測試和開發簡單起來。

3.為什麼需要SpringBoot?

SpringBoot 優點非常多,如:獨立運行、簡化配置、自動配置和無需部署 war 文件等等。

4.SpringBoot的配置文件有哪幾種格式?

主要有 .properties.yml 格式,它們的區別主要是書寫格式不同。另外 .yml 格式不支持 @PropertySource 註解導入配置。

5.SpringBoot支持哪些日誌框架?推薦和預設的日誌框架是哪個?

SpringBoot 支持 Java Util LoggingLog4j2Logback 作為日誌框架。如果使用 Starters 啟動器,SpringBoot 將使用 Logback 作為預設日誌框架,推薦的日誌框架是 Log4j2。但是不管是那種日誌框架他都支持將配置文件輸出到控制台或者文件中。

6.什麼是YAML?

YAML 是一種可讀的數據序列化語言,它通常用於配置文件。與屬性文件相比,如果我們想要在配置文件中添加複雜的屬性,YAML 文件就更加結構化,而且更少混淆。可以看出 YAML 具有分層配置數據。

7.SpringBoot支持哪些嵌入式Web容器?

SpringBoot 支持的嵌入式 servlet 容器有:TomcatJettyUndertow

8.SpringBoot需要獨立的容器運行嗎?

可以不需要,內置了 Tomcat/Jetty 等容器。

9.你如何理解SpringBoot配置載入順序?

SpringBoot 配置載入順序優先順序是:properties 文件、YAML 文件、系統環境變數、命令行參數。

10.SpringBoot可以相容老Spring項目嗎?

可以相容,使用 @ImportResource 註解導入老 Spring 項目配置文件。

11.說出SpringBoot的優點?

  • 簡化開發,提高整體生產力。

  • SpringBoot 使用 JavaConfig 有助於避免使用 XML,同時避免大量的 Maven 導入和各種版本衝突。

  • SpringBoot 引導的應用程式可以很容易地與 Spring 生態系統集成,如Spring JDBCSpring ORMSpring DataSpring Security 等等。

  • SpringBoot 應用程式提供嵌入式 HTTP 伺服器,如 TomcatJetty,可以輕鬆地開發和測試 Web 應用程式。

  • SpringBoot 提供命令行介面工具,用於開發和測試應用程式。

  • SpringBoot 提供了多種插件,可以使用內置 Maven 工具開發和測試應用程式。

  • SpringBoot 沒有單獨的 Web 伺服器需要,這意味著不再需要啟動 Tomcat 或其他任何東西。

12.如何在自定義埠上運行SpringBoot應用程式?

可以在 application.properties 配置文件中指定埠,比如 server.port=8090

13.如何重新載入SpringBoot上的更改,而無需重新啟動伺服器?

這可以使用 DEV 工具來實現。通過這種依賴關係,您可以節省任何更改,嵌入式 Tomcat 將重新啟動。SpringBoot 有一個開發工具 DevTools 模塊,它有助於提高開發人員的生產力。Java 開發人員面臨的一個主要挑戰是將文件更改自動部署到伺服器並自動重啟伺服器。開發人員可以重新載入 SpringBoot 上的更改,而無需重新啟動伺服器。這將消除每次手動部署更改的需要。SpringBoot 在發佈它的第一個版本時沒有這個功能。這是開發人員最需要的功能。

DevTools 模塊完全滿足開發人員的需求。該模塊將在生產環境中被禁用。它還提供 H2 資料庫控制台以更好地測試應用程式。

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

14.如何使用SpringBoot實現異常處理?

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

15.SpringBoot與SpringCloud區別?

SpringBoot 是快速開發的 Spring 框架,SpringCloud 是完整的微服務框架,SpringCloud 依賴於 SpringBoot。

16.SpringBoot支持什麼前端模板?

thymeleaffreemarkerjsp,官方不推薦 jsp 會有限制。

17.開啟SpringBoot特性有哪幾種方式?

  • 繼承 spring-boot-starter-parent 項目

  • 導入 spring-boot-dependencies 項目依賴

18.SpringBoot中Async非同步調用方法?

在 SpringBoot 中使用非同步調用是很簡單的,只需要在方法上使用 @Async 註解即可實現方法的非同步調用。

註意:需要在啟動類加入 @EnableAsync 使非同步調用 @Async 註解生效。

19.比較一下Spring Security和Shiro各自的優缺點?

由於 SpringBoot 官方提供了大量的非常方便的開箱即用的 Starter,包括 Spring Security 的 Starter,使得在 SpringBoot 中使用 Spring Security 變得更加容易,甚至只需要添加一個依賴就可以保護所有的介面,所以,如果是 SpringBoot 項目,一般選擇 Spring Security。當然這隻是一個建議的組合,單純從技術上來說,無論怎麼組合,都是沒有問題的。Shiro 和 Spring Security 相比,主要有如下一些特點:

  • Spring Security 是一個重量級的安全管理框架;Shiro 則是一個輕量級的安全管理框架;

  • Spring Security 概念複雜,配置繁瑣;Shiro 概念簡單、配置簡單;

  • Spring Security 功能強大;Shiro 功能簡單;

20.SpringBoot事務的使用?

SpringBoot 的事務很簡單,首先使用註解 @EnableTransactionManagement 開啟事務之後,然後在 Service 方法上添加註解 @Transactional 便可。

21.SpringBoot自動配置原理是什麼?

SpringBoot 項目的啟動註解是:@SpringBootApplication,其實它就是由下麵三個註解組成的:

  • @Configuration

  • @ComponentScan

  • @EnableAutoConfiguration

其中 @EnableAutoConfiguration 是實現自動配置的入口,該註解又通過 @Import 註解導入了AutoConfigurationImportSelector,在該類中載入 META-INF/spring.factories 的配置信息。然後篩選出以 EnableAutoConfiguration 為 key 的數據,載入到 IOC 容器中,實現自動配置功能。

22.SpringBoot的核心註解是哪個?它主要由哪幾個註解組成的?

啟動類上面的註解是 @SpringBootApplication,它也是 SpringBoot 的核心註解,主要組合包含了以下3個註解:

  • @SpringBootConfiguration:組合了 @Configuration 註解,實現配置文件的功能。

  • @EnableAutoConfiguration:打開自動配置的功能,也可以關閉某個自動配置的選項,如關閉數據源自動配置功能:@SpringBootApplication(exclude{DataSourceAutoConfiguration.class})

  • @ComponentScan:Spring 組件掃描。

23.spring-boot-starter-parent有什麼用?

新創建一個 SpringBoot 項目,預設都是有 parent 的,這個 parent 就是 spring-boot-starter-parentspring-boot-starter-parent 主要有如下作用:

  • 定義了 Java 編譯版本為1.8。

  • 使用 UTF-8 格式編碼。

  • 繼承自 spring-boot-dependencies,這個裡邊定義了依賴的版本,也正是因為繼承了這個依賴,所以我們在寫依賴時才不需要寫版本號。

  • 執行打包操作的配置。

  • 自動化的資源過濾。

  • 自動化的插件配置。

  • 針對 application.propertiesapplication.yml 的資源過濾,包括通過 profile 定義的不同環境的配置文件,例如 application-dev.propertiesapplication-dev.yml

總結就是打包用的。

24.SpringBoot、SpringMVC和Spring有什麼區別?

  • Spring 最重要的特征是依賴註入。所有 SpringModules 不是依賴註入就是 IOC 控制反轉。當我們恰當的使用 DI 或者是 IOC 的時候,我們可以開發松耦合應用。松耦合應用的單元測試可以很容易的進行。

  • SpringMVC 提供了一種分離式的方法來開發 Web 應用。通過運用像 DispatcherServletMoudlAndViewViewResolver 等一些簡單的概念,開發 Web 應用將會變的非常簡單。

  • Spring 和 SpringMVC 的問題在於需要配置大量的參數。

SpringBoot 通過一個自動配置和啟動的項來目解決這個問題。為了更快的構建產品就緒應用程式,SpringBoot 提供了一些非功能性特征。

25.SpringBoot中如何解決跨域問題?

跨域可以在前端通過 JSONP 來解決,但是 JSONP 只可以發送 GET 請求,無法發送其他類型的請求,在 RESTful 風格的應用中,就顯得非常雞肋,因此我們推薦在後端通過 (CORSCross-origin resource sharing) 來解決跨域問題。這種解決方案並非 Spring Boot 特有的,在傳統的 SSM 框架中,就可以通過 CORS 來解決跨域問題,只不過之前我們是在 XML 文件中配置 CORS,現在可以通過實現 WebMvcConfigurer 介面然後重寫 addCorsMappings 方法解決跨域問題。

26.為什麼我們需要spring-boot-maven-plugin?

spring-boot-maven-plugin 提供了一些像 jar 一樣打包或者運行應用程式的命令。

  • spring-boot:run 運行你的 SpringBoot 應用程式。

  • spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可執行。

  • spring-boot:start / spring-boot:stop 管理 SpringBoot 應用程式的生命周期(也可以說是為了集成測試)。

  • spring-boot:build-info 生成執行器可以使用的構造信息。

27.SpringBoot配置載入可以通過哪些方式定義?

  • propertiest文件

  • 命令行參數

  • YAML文件

  • 系統環境變數


關註公眾號:編程火箭車
我們定期發佈編程相關的文章、資訊、活動等內容。幫助編程愛好者、初學者或初級程式員快速入門、打牢基礎。歡迎大家關註,和我們一起探索編程的精彩世界。

本文來自博客園,作者:編程火箭車,轉載請註明原文鏈接:https://www.cnblogs.com/coding-rocket/p/17443431.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Java中,可以使用以下方法中斷線程: 1. 使用`interrupt()`方法:每個線程對象都有一個`interrupt()`方法,用於中斷該線程。當調用線程的`interrupt()`方法時,它會設置線程的中斷狀態為"中斷",但並不會立即停止線程的執行。線程在執行過程中可以通過檢查中斷狀態來決 ...
  • # java註解與反射 - java註解與反射十分重要,是很多框架的底層 ## 註解(Annotataion) - 註解的作用: 1. 不是程式本身,可以對程式作出解釋 1. 可以被其他程式讀取 - 註解的格式:@註釋名,如@override表示重寫方法,而且有些還可以添加一些參數值,如@Suppr ...
  • > 本文首發於公眾號:Hunter後端 > 原文鏈接:[Python連接es筆記三之es更新操作](https://mp.weixin.qq.com/s/1cTaVfjLFrmbXajNcayhEA) 這一篇筆記介紹如何使用 Python 對數據進行更新操作。 對於 es 的更新的操作,不用到 Se ...
  • 哈嘍大家好今天咱們來實現一下批量下載ts格式文件後,如何合併為MP4視頻。 ts文件下載 網頁文件下載其實都可以通過requests.get以文件流的形式獲取,並以位元組的形式寫入本地文件即可。代碼如下: import os import requests # Python學習資料白嫖扣裙:70852 ...
  • > 40億個QQ號,限制1G記憶體,如何去重? 40億個unsigned int,如果直接用記憶體存儲的話,需要: `4*4000000000 /1024/1024/1024 = 14.9G` ,考慮到其中有一些重覆的話,那1G的空間也基本上是不夠用的。 想要實現這個功能,可以藉助點陣圖。 使用點陣圖的話, ...
  • ### 選擇代碼區 1. ctrl w - 如果放到以if開頭的語句,可以選擇if判斷條件所在的代碼片段 - 游標在單個單詞下時 選擇單詞 - 在選中多個單詞時,選擇整個字元串 - 三次點擊時,如果不在字元串單詞下,用於選擇{}內的代碼片段 逐級遞增 如果在單詞下方,用於選擇單詞所在的字元串並且向外 ...
  • 1.curl 方式 curl -v -u admin:geoserver -H "Content-type: application/json" -d "{'seedRequest':{'name':'NR:tdbp','bounds':{'coords':{ 'double':[ '108.790 ...
  • [官方文檔](https://numpy.org/doc/stable/reference/generated/numpy.bincount.html#numpy-bincount) `out = np.bincount(x[, weights, minlength])` **該函數用於統計輸入數組 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...