天天看點

面向Java程式員的15個SpringBoot面試問題和答案

面向Java程式員的15個SpringBoot面試問題和答案
文章出處: Top 15 Spring Boot Interview Questions with Answers for Java/JEE Programmers

大家好,如果您正在為下一次Java面試做準備,并且準備了有關Spring架構的工作描述,那麼您還應該準備一些Spring引導面試問題,以避免失望。SpringBoot現在是Java開發中使用Spring架構的标準方式,而且幾乎所有的公司都在從使用Spring架構的傳統方式轉向更現代的SpringBoot方式。向開發人員詢問諸如您是否使用過Spring Boot之類的問題的日子已經一去不複返了。現在的面試要求應聘者對Spring Boot有更多的了解,這是有原因的,我們将在本文中探讨。

SpringBoot旨在簡化Java開發,通過消除配置、依賴項管理和開發簡便性方面的主要難點。正如Craig Walls在Spring boot中所做的那樣,這可能是Java在JDK 1.5釋出和Spring架構在15年前引入之後發生的最好的事情。

它引入了大量的特性,如啟動器依賴、自動配置、嵌入式伺服器、Spring Boot CLI, Spring Actuator、Spring初始化器等,将Spring的Java開發帶入了一個新的層次,這就是為什麼Spring引導面試問題在Java面試中越來越常見的原因。

為了自信地回答Spring Boot的問題,您不僅要知道Spring Boot解決了什麼問題,還要深入了解它的一些核心特性,比如自動配置和啟動依賴項。這兩個特性消除了基于spring的Java應用程式的大量配置和設定工作。

順便說一下,如果你不熟悉他們,我首先建議你通過一個初學者的課程,如Spring Boot Essentials來獲得最新的速度。一旦您對Spring Boot有了很好的了解,就可以嘗試這些問題。

有關Java開發人員的10個Spring Boot面試問題

下面是我列出的Java面試中最常見的Spring Boot面試問題。這些問題涵蓋了大多數Spring啟動特性,例如自動配置、啟動器依賴項、Spring Actuator, Spring Initializer, Spring Boot CLI 等。

他們也收集了對中級和有經驗的Java開發人員(例如2到5年的經驗)的Java訪談。

1.什麼是Spring Boot?為什麼要使用它?

Spring Boot是另一個來自Sring umbrella的Java架構,它旨在簡化Spring架構在Java開發中的使用。它消除了與Spring相關的大部分痛苦,例如大量的配置和依賴以及大量的手動設定。

為什麼要使用它?Spring Boot不僅通過自動配置為您提供了很多便利,還提高了生産率,因為它讓您隻專注于編寫業務邏輯。

例如,您不需要設定Tomcat伺服器來運作web應用程式。您可以隻編寫代碼并将其作為Java應用程式運作,因為它附帶了一個嵌入式Tomcat伺服器。您還可以根據自己的友善程度建立用于部署的JAR檔案或WAR檔案。

總之,使用Spring Boot有很多原因。事實上,它現在是用Spring架構開發Java應用程式的标準方法。

2. 使用Spring Boot有哪些重要的特性?

這是一個很好的主觀問題,面試官會用它來衡量求職者的工作經驗。不管怎樣,以下是Spring Boot架構的一些重要特性:

1. 起動器的依賴

此功能将公共依賴項聚合在一起。例如,如果您想開發基于RESTful的Spring MVC服務,那麼不需要将Spring MVC JAR和Jackson JAR檔案包含到類路徑中,您隻需指定Spring -boot-web-starter,它就會自動下載下傳這兩個JAR檔案。Spring Boot附帶了許多這樣的啟動依賴項,以提高工作效率。

2.自動配置

這是Spring Boot的另一個很棒的特性,可以為您配置很多東西。例如,如果您正在開發Spring web應用程式,并且類路徑中有Thymeleaf.jar,那麼它可以自動配置Thymeleaf模闆解析器、視圖解析器和其他設定。要成為一名有經驗的Spring引導開發人員,需要具備良好的自動配置知識。

3.Spring初始化

可以為您建立初始項目結構的web應用程式。這簡化了初始項目設定部分。

4.Spring Actuator

該特性為運作中的Spring啟動應用程式提供了許多有用的資訊。例如,您可以使用執行器來查找哪些bean是在Spring的應用程式上下文中建立的,以及哪些請求路徑被映射到控制器。

5.Spring CLI

這是Spring Boot的另一個很棒的特性,它将Spring開發帶入了下一個階段。它允許您使用Groovy編寫Spring引導應用程式,這意味着要編寫更簡潔的代碼。

3.什麼是Spring boot中的自動配置?這有什麼用呢?為什麼Spring Boot被稱為opinionated?

在這個問題本身中有很多問題,但是讓我們首先處理自動配置。正如前面的示例所解釋的,它根據類路徑中的内容自動配置很多東西。

例如,如果目前的資料源bean和資料源bean在類路徑中可用,則可以配置JdbcTemplate。如果類路徑中存在Spring security,它甚至可以做一些基本的web安全工作。

順便說一下,如果您不熟悉spring security庫,那麼可以檢視

spring security Masterclass

以了解更多相關資訊。它是保護現代Java應用程式的最重要的工具之一。

無論如何,關鍵是自動配置在配置bean、控制器、視圖解析器等方面為您做了大量工作,是以它在建立Java應用程式方面幫助很大。

現在,大問題來了,為什麼它被認為是武斷的?因為它自己做判斷。有時它會導入您不想要的東西,但是不要擔心,Spring Boot還提供了覆寫自動配置設定的方法。

它在預設情況下也是禁用的,您需要在主類上使用

@SpringBootApplication

或@

EnableAutoConfiguration

注釋來啟用自動配置功能。

4. 什麼是SpringBoot啟動依賴?這有什麼用呢?

這個問題通常是前一個問題的後續問題,因為它非常類似于自動配置,許多開發人員會混淆這兩個問題。顧名思義,初學者依賴項處理依賴項管理。

在研究了幾個基于Spring的項目之後,Spring人員注意到總有一些庫是一起使用的,例如Spring MVC和Jackson一起建立RESTful web服務。由于在Maven的pom.xml中聲明依賴關系比較麻煩,是以他們将許多庫合并到一個基于功能的庫中,并建立了這個啟動包。

這不僅使您不必聲明許多依賴項,而且還使您避免相容性和版本不比對問題。Spring Boot starter自動擷取其他庫的相容版本,這樣您就可以使用它們而不必擔心任何相容性問題。

5. @SpringBootApplication和@EnableAutoConfiguration注釋的差別是什麼?

盡管兩者都是基本的Spring引導應用程式,并在主類或引導類中使用,但它們之間有細微的差別。@EnableAutoConfiguration用于啟用自動配置,但是@SpringBootApplication要做的遠不止這些。

它還結合了@Configuration和@ComponentScan注釋,以在您的項目中啟用基于java的配置群組件掃描。

@SpringBootApplication實際上是@Configuration、@ComponentScan和@EnableAutoConfiguration注釋的組合。

6. 什麼是Spring初始化器?為什麼要使用它?

開始使用架構的困難之一是初始設定,特别是如果您是從零開始的,并且沒有引用設定或項目。Spring初始化器在Spring啟動時解決了這個問題。

它隻是一個web應用程式,幫助您建立初始的Spring boot項目結構,并提供Maven或Gradle建構檔案來建構您的代碼。

7. 什麼是Spring Actuator?它的優點是什麼?

這是一個有趣的Spring引導問題,主要針對Java角色提出,Java角色也有一些支援職責。Spring Actuator是另一個很酷的Spring Boot功能,它允許檢視内部運作的應用程式。

是的,你沒看錯。它允許您檢視應用程式的内部。由于Spring引導完全是關于自動配置的,是以調試非常困難,而且在某些時候,您希望知道在Spring的應用程式上下文中建立了哪些bean,以及如何映射控制器。Spring Actuator提供所有這些資訊。

它提供了幾個端點,例如一個REST端點來在web上檢索這類資訊。它還提供了許多關于應用程式健康狀況的見解和度量,例如CPU和記憶體使用量、線程數量等。

它還提供了一個遠端shell,您可以使用它安全地進入Spring Boot應用程式并運作一些指令來公開相同的資料集。您甚至可以在運作時使用JMX來控制這種行為。

順便說一句,保護您的Spring Actuator端點是很重要的,因為它暴露了許多機密資訊和一個潛在的危險一二。例如,通過使用/showdown端點,您可以終止一個Spring啟動應用程式。

8. 什麼是Spring Boot CLI?它的好處是什麼?

Spring Boot CLI是一個指令行接口,它允許您使用Groovy建立基于Spring的Java應用程式。由于使用的是Groovy,它允許您從指令行建立Spring啟動應用程式,而不需要任何儀式,例如,您不需要定義getter和setter方法,或者通路修飾符、傳回語句等。

它也非常強大,如果您碰巧使用它,可以在Groovy的預設包中自動包含很多庫。

9. 在SpringBoot應用程式中如何定義屬性?

您可以将應用程式和Spring boot相關的屬性定義到一個名為application.properties的檔案中。您可以手動建立這個檔案,也可以使用Spring Initializer來建立這個檔案,盡管它是空的。

您不需要做任何特殊的配置來訓示Spring引導加載這個檔案。如果它存在于類路徑中,那麼Spring Boot将自動加載它并根據它配置自身和應用程式代碼。

例如,您可以使用它來定義一個屬性來更改Spring Boot中的嵌入式伺服器端口,這也是我們的下一個問題。

10. 可以在Spring boot中更改嵌入式Tomcat伺服器的端口嗎?如果可以,如何操作?

是的,我們可以在application.properties檔案中添加一個名為server.port的屬性來更改Spring Boot中嵌入式Tomcat伺服器的端口。

如前所述,此屬性檔案由Spring Boot自動加載,可用于配置Spring Boot和應用程式代碼。

11. 嵌入式容器和WAR之間的差別是什麼?

嵌入式容器和WAR檔案之間的主要差別是,您可以從指令提示符中以JAR的形式啟動應用程式,而無需設定web伺服器。但是要運作WAR檔案,首先需要設定一個像Tomcat這樣的web伺服器,它有Servlet容器,然後需要在那裡部署WAR。

12.SpringBoot支援哪些嵌入式容器?

Spring引導支援三種嵌入式容器:Tomcat、Jetty和Undertow。預設情況下,它使用Tomcat作為嵌入式容器,但是您可以将其更改為Jetty或Undertow。

13.有哪些常見的SpringBoot注釋?

一些最常見的SpringBoot注釋是

@EnableAutoConfiguration

@SpringBootApplication

@SpringBootConfiguration

@SpringBootTest

@EnableAutoConfiguration

用于在Spring啟動應用程式上啟用自動配置,而

@SpringBootApplication

用于主類上,以允許它運作JAR檔案。

@SpringBootTest

用于在Spring啟動環境中運作單元測試。

14. 你能說出一些常見的Spring Boot 啟動POMs嗎?

一些最常見的Spring啟動依賴項或POMs是

Spring - Boot -starter

Spring - Boot -starter-web

Spring - Boot -starter-test

。您可以使用

Spring - Boot -starter-web

在Spring Boot應用程式中啟用Spring MVC。

15. 如何用Spring Boot控制日志記錄?

是的,我們可以通過在應用程式上指定日志級别來使用Spring Boot控制日志記錄。屬性檔案。當這個檔案存在于類路徑中時,SpringBoot将加載它,并且可以使用它來配置Spring引導和應用程式代碼。

Spring Boot對所有内部日志使用通用日志記錄,您可以application.properties檔案中通過在應用程式中添加以下行來更改日志級别

logging.level.org.springframework=DEBUG
logging.level.com.demo=INFO           

這就是關于Java開發人員常見的Spring啟動面試問題的全部内容。如果您正在準備Java開發面試,其中需要Spring Boot作為一項技能,那麼您應該熟悉這些面試問題。它們不僅能幫助你在面試中表現出色,而且還能鼓勵你詳細地學習關鍵的Spring Boot概念,以便最好地利用它。

感謝您閱讀本文。如果你喜歡這些SpringBoot面試問題,請與你的朋友和同僚分享。如果您有任何回報或疑問,請留言。

繼續閱讀