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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...