35 大春季面試問答:2022 年終極指南
已發表: 2021-01-08有即將到來的與 Spring Framework 相關的面試嗎? 也許您登陸此頁面是因為您正在尋找最熱門的 Spring Framework 面試問題。 在我們的博客中,我們將討論春季面試中被問到最多的問題和答案。
如果你經歷了這些,你很可能會在面試中表現出色。 在我們開始之前,讓我們簡要介紹一下當前市場對 Spring Framework 的整體需求。
閱讀:印度的全棧開發人員需求
Spring 使 Java 編程語言更快、更簡單、更安全。 它的主要重點是速度,但它既簡單又高效。 因此,它已成為全球最受歡迎的 Java 框架之一。 這些庫靈活可靠。 它被用於很多地方,如在線購物、聯網汽車和更多創新技術。
它還吹噓自己對亞馬遜、谷歌和阿里巴巴等大巨頭的貢獻。 此外,Spring 社區非常龐大。 它包括所有年齡組,並且非常多樣化。 您會在網上找到大量資源和支持,讓您的旅程更輕鬆。
如果您是 Java 程序員,那麼 Spring Framework 對您來說至關重要。 許多公司確實要求程序員了解 Spring Framework 或至少了解其中的一些模塊。

這裡有一些春季面試的熱門問題和答案,你可以期待你的面試官問。
目錄
2020年春季面試問答
Q.1 Spring Framework 有哪些不同的版本,它們的主要特點是什麼?
這三個版本分別是 Spring 2.5、Spring 3.0 和 Spring 4.0。
Spring 2.5 是第一個支持註解的版本。 它於 2007 年發布。Spring 3.0 使用了 Java5 的升級,並進一步為 JEE6 提供了幫助。 它於兩年後的 2009 年發布。Spring 4.0 是為 Java 8 提供全面支持的主要變體。它於 2013 年發布。
Q.2 描述或定義 Spring Framework
它是一個開源的 Java 平台。 它被用作重型企業 Java 技術的一個選項。 簡單來說,它簡化了 Java 開發,因為它是輕量級的。 開發人員可以使用 Spring Framework 開發應用程序,甚至可以在 CPU 內存和資源受限的計算機上進行部署。 此外,它還支持各種其他框架,包括但不限於 Tapestry、JSF、EJB、Hibernate、Struts 等。
閱讀:全棧項目理念和主題
Q.3 Spring 框架有哪些優勢?
- Spring Framework 是開源的,沒有任何供應商鎖定。
- 由於它使用的分層架構,您只能使用您真正需要的東西。
- Spring Framework 使用 POJO,這使得應用程序測試變得更加容易。
- 您可以將它與 Spring 框架的所有其他 Java 框架一起使用。 它不施加任何限製或限制。
- Spring Framework 是一個模塊化框架。 它非常靈活。
Q.4 Spring Framework 的各種特性是什麼?
- 輕量級:當我們談論它的透明度和大小時,Spring Framework 是輕量級的。
- 控制反轉:是程序的控制流被翻轉的原理。 在這裡,服務、框架和其他組件等外部資源控製程序的流程,而不是程序員。
- 面向方面編程:Spring 中的面向方面編程通過將系統服務與應用程序業務邏輯分離來支持綁定開發。
- 容器:容器是 Spring Framework 的核心,它是創建對象、綁定對象、配置對象並負責其從創建到結束的完整生命週期的容器。
- MVC 框架:Spring 框架的 MVC Web 應用程序框架易於使用,並且是可配置的。 您可以使用其他框架而不是選擇 Spring MVC 框架。
- 事務管理:Spring Framework 使用通用抽象層進行事務管理。 您可以在容器較少的環境中使用 Spring 的事務支持。
- JDBC 異常處理:您不需要顯式處理任何與數據庫相關的異常。 Spring JDBC Framework 使用 JDBC 異常處理來處理它。
閱讀:全棧開發人員面試問題
Q.5 你能在 Spring Framework 中找到多少個模塊? 命名它們。
您可以找到 20 個模塊,這些模塊分為核心容器、Web、數據訪問/集成、AOP(面向方面編程)、儀器和測試。
Spring Core Container:顧名思義,就是Spring Framework的核心容器。 它包括
- 彈簧芯
- 春豆
- 春季表達語言
- 彈簧上下文
Web:該層支持創建 Web 應用程序。 它由以下模塊組成:
- 網絡
- 網絡——MVC
- 網絡 - 套接字
- 網頁 – Portlet
數據訪問/集成:這一層支持與數據庫通信。 它由以下模塊組成:
- Java 數據庫連接 – JDBC
- 對象關係映射——ORM
- 對象 XML 映射器 – OXM
- Java 消息服務 – JMS
- 交易
Aspect-Oriented Programming:在這一層,開發人員可以使用切入點、建議等方式來解耦代碼。
Instrumentation:這一層支持類加載器實現和類檢測。
測試:這一層支持使用 TestNG 和 Junit 進行測試。
您還可以找到其他雜項節點,例如:
消息傳遞:此模塊為 STOMP 提供幫助。 它還有助於作為註解編程模型,用於路由和處理來自 WebSocket 客戶端的 STOMP 消息。
Aspects:此模塊提供與 AspectJ 集成的支持。
Q.6 什麼是 Spring 配置文件?
它基本上是一個 XML 文件。 您可以在此文件中找到有關類的所有信息。 它進一步描述了這些類是如何配置和相互了解的。 XML 配置文件很詳細,因此需要保持乾淨。 否則,如果您的項目很大,管理它們就會變得困難。
Q.7 描述 Spring 應用程序的不同組件。
通常,一個 Spring 應用程序由以下組件組成:
- 接口:所有功能都在接口中定義。
- Bean 類:您可以在這裡找到屬性以及 set 和 get 函數。
- Spring Aspect-Oriented Programming (AOP):它提供了橫切關注點的功能。
- Bean 配置文件:此文件包含類的詳細信息以及如何配置它們。
- 用戶程序:用戶程序使用該功能。
Q.8 解釋使用 Spring Framework 的各種方式
Spring Framework 可以通過多種方式使用,例如:
- Spring Framework 可以用作全面的 Spring Web 應用程序。
- Spring Framework 可以用作第三方 Web 框架,使用 Spring Frameworks 中間層。
- Spring Framework 可用於遠程使用。
- Spring Framework 可以用作 Enterprise Java Bean,它可以包裝現有的 POJO。
Q.9 什麼是 Spring IOC 容器?
容器是 Spring Framework 的核心。 是容器創建對象、綁定對象、配置對象,並負責它們從創建到結束的完整生命週期。
Spring 容器使用依賴注入來管理創建應用程序的組件。 容器通過讀取由 Java 註釋、Java 代碼或 XML 給出的配置元數據來獲取創建、設置和調用哪些對象的指示。
Q.10 什麼是依賴注入?
在依賴注入中,您無需創建對象,而是簡單地描述如何創建對象。 開發人員需要在配置文件中描述特定組件需要哪些服務。 無需將服務直接連接到代碼中的組件。 它們通過 Spring IoC 容器連接在一起。
Q.11 一個人可以在多少種方法中進行依賴注入?
依賴注入有以下三種方式:
- 構造函數注入
- 二傳手注入
- 接口注入
但是,在 Spring Framework 中,只使用了構造函數注入和 setter 注入。
Q.12 是什麼讓構造函數注入與 setter 注入不同。
構造函數注入 | 二傳手注入 |
沒有不完全或有限的注射。 | 可能存在不完全或有限的注射。 |
它不會覆蓋 setter 屬性。 | 它覆蓋了構造函數屬性。 |
如果完成任何更改,它會創建一個新實例。 | 如果進行更改,它不會創建任何新實例。 |
它適用於許多屬性。 | 它適用於較少的屬性。 |
Q.13 Spring 提供了多少種 IOC 容器?
您通常可以找到兩個 IOC 容器,即:
- BeanFactory:BeanFactory 是一種包含一組 bean 的工廠類。 它在客戶需要時實例化 bean。
- ApplicationContext:ApplicationContext 接口是在 BeanFactory 接口之上創建的。 除了 BeanFactory 提供的功能之外,它還提供了一些額外的功能。
Q.14 告訴我們 BeanFactory 和 ApplicationContext 之間的一些區別。
豆廠 | 應用程序上下文 |
它是 org.springframework.beans.factory.BeanFactory 中解釋的接口 | 它是 org.springframework.context.ApplicationContext 中解釋的接口 |
它使用延遲初始化 | 它使用積極的初始化 |
它使用語法顯式地給出一個資源對象 | 它自己構建和管理資源對象 |
它無助於國際化 | 它有助於國際化 |
它不支持基於註釋的依賴 | 它有助於基於註釋的依賴 |
Q.15 IoC 有哪些好處?
IoC 的一些好處是:
- 它將減少應用程序中所需的代碼量。
- 您的應用程序更容易測試,因為它在單元測試用例中不需要任何單例或 JNDI 查找機制。
- 它鼓勵以最小的努力和最少的侵入機制進行鬆散耦合。
- 它有助於服務的急切實例化和延遲加載。
Q.16 什麼是 Spring Bean?
Spring Bean 是充當用戶應用程序主幹的對象。 Bean 由 Spring IoC 容器控制。 通過控制它意味著,它們由 Spring IoC 容器實例化、配置、連接和管理。 使用用戶提供給容器的配置元數據創建 Bean。

Q.17 配置元數據如何提供給 Spring 容器?
可以通過以下方式之一將配置元數據提供給 Spring 容器:
- 基於註釋的配置:可以使用相關類上的註釋來描述 bean 連接到組件類本身。 它不是默認設置。 因此,如果您想使用它,您必須在 Spring 配置文件中啟用它才能使用它。
- 基於 XML 的配置:配置文件中提到了 bean 所需的依賴項和服務。 這些是 XML 格式。 它們由許多 bean 定義和特定於應用程序的配置選項組成。 它們通常以 bean 標籤開頭。
- 基於 Java 的配置:Spring Framework 新的 Java 配置支持的主要特性是 @Bean 註解的方法和 @Configuration 註解的類。
Q.18 Spring 支持多少個 bean 作用域?
它支持五個範圍:
- Singleton:這為每個 Spring IoC 容器的單個實例提供了 bean 定義的範圍。
- 原型:這為單個 bean 定義提供了具有任意數量的對象實例的範圍。
僅當用戶使用 Web 感知 ApplicationContext 時,以下範圍才可用。
- 請求:這為 HTTP 請求提供了 bean 定義的範圍。
- 會話:這為 HTTP 會話提供了 bean 定義的範圍。
- 全局會話:這為全局 HTTP 會話提供了 bean 定義的範圍。
Q.19 解釋 Spring Bean Factory Container 中的 Bean 生命週期
- Spring 容器首先從 XML 文件中的 bean 定義實例化 bean。
- Spring 使用依賴注入填充所有屬性。
- 如果 bean 執行 BeanNameAware 接口,工廠會通過提供 bean 的 ID 來調用 setBeanName()。
- 如果 bean 執行 BeanFactoryAware 接口,工廠會通過創建自己的實例來調用 setBeanFactory()。
- 如果有任何與 bean 相關的 BeanPostProcessor,則調用 preProcessBeforeInitialization() 方法。
- 如果 bean 指定了 init 方法,則調用它。
- 如果有任何與 bean 相關的 BeanPostProcessor,則調用 preProcessAfterInitialization() 方法。
Q.20 解釋 Bean 接線
Bean 連接是指所有 bean 在 Spring 容器內組合在一起。 Spring 容器必須了解需要哪些 bean,以及它應該如何使用依賴注入將 bean 鏈接在一起。
Q.21 什麼是自動佈線以及自動佈線的不同模式的名稱?
Spring 容器能夠自動連接連接 bean 之間的關係。 Spring 可以通過查看 BeanFactory 的內容自動為您的 bean 解析協作者。
bean 自動裝配的不同模式是:
- no:這是預選的選項,表示不自動接線。 您需要使用顯式 bean 引用進行接線。
- byName:根據 bean 的名稱注入對象依賴。 它將其屬性與 XML 文件中的確切名稱解釋的 bean 配對和連接。
- byType:顧名思義,就是根據類型注入對象依賴。 如果類型與 XML 文件中 bean 的名稱之一匹配,它匹配並連接一個屬性。
- 構造函數:構造函數通過調用類的構造函數來注入依賴。 它有很多參數。
- 自動檢測:默認情況下,容器使用構造函數自動連接。 如果失敗,它會嘗試按 byType 自動連接。
Q.22 自動佈線有哪些限製或限制?
使用自動佈線有一些限制/限制,例如:
- 覆蓋可能性:通過使用 <constructor-arg> 和 <property> 設置,您可以指定依賴項。 它將覆蓋自動接線。
- 原始數據類型:原始數據類型、類和字符串不能自動連接。
- 複雜性:顯式接線優於自動接線,因為後者本質上令人困惑。
Q.23 什麼是基於註解的容器配置?
XML 設置的替代方法是基於註釋的容器配置,用於描述 bean 連接。 開發人員通過在方法、類或字段聲明上使用註釋將配置轉移到組件類中。
Q.24 如何在 Spring 中開啟註解連線?
在 Spring 容器中,註解連接默認是關閉的。 因此,要使用基於註解的連接,您必須在 Spring 配置文件中通過設置 <context:annotation-config/> 元素來啟用它。
Q.25 解釋Spring中@Controller、@Component、@Repository和@Service等各種註解的區別?
@Controller:這表示一個類作為 Spring Web MVC 控制器。 它會自動將標有它的 bean 導入到 Dependency Injection 容器中。
@Component:這表明一個java類是一個bean。 它是任何 Spring 管理的組件的一般構造型。 Spring 的組件掃描過程可以將其拾取並將其拉入應用程序上下文中。
@Service:這個註解是組件註解的一個區域。 @Component 註解沒有新的行為。 可以在服務層類中使用@Service 而不是@Component,因為它適當地指定了意圖。
@Repository:這個註解是@Component註解的一個區域。 它具有相同的功能和用途。 但是,它為 DAO 提供了一些額外的優勢。 它將 DAO 放入 DI 容器中,並將未經檢查的異常限定為轉換為 Spring DataAccessException。
Q.26 描述 Spring DAO 支持
Spring 中的數據訪問對象支持使得以適當和穩定的方式訪問 Hibernate、JDBC 或 JDO 等技術變得簡單。 它使人們可以毫不費力地選擇任何一種技術。 它還使人們能夠在不強調捕獲與每種技術相關的異常的情況下進行編碼。
Q.27 Spring JDBC API 中有哪些類可用?
JDBC API 中存在的類是:
- Jdbc模板
- SimpleJdbc模板
- 命名參數JdbcTemplate
- SimpleJdbcInsert
- SimpleJdbcCall
Q.28 使用 Spring 訪問 Hibernate 的方法有哪些?
有兩種方法可以使用 Spring 訪問 Hibernate:
- 帶有回調和休眠模板的控制反轉方法。
- 應用 AOP 攔截器節點並擴展 HibernateDAOSupport。
Q.29 命名 Spring 支持的事務管理類型
Spring 支持兩種類型的事務管理。 他們是:
- 程序化事務管理:在這裡,事務是在編程的幫助下進行控制的。 它提供了很大的靈活性。 但是,很難維護。
- 聲明式事務管理:在這裡,事務管理與業務代碼分開。 可以僅使用註釋或基於 XML 的配置來控制事務。
Q.30 描述 AOP
AOP 被稱為 Aspect-arranged Programming。 它是一個編程系統,可以讓軟件工程師模塊化橫切關注點或跨越標準義務劃分的行為。 橫切關注點的示例是日誌記錄和事務管理。 AOP 的核心是一個方面。 它舉例說明了可以將各種類影響為可重用模塊的實踐。
Q.31 你所說的 Aspect 是什麼意思?
Aspect 是關注點的模塊化,它跨越多個對象。 J2EE 中橫切關注點的一個很好的例子是事務管理應用程序。 方面是使用常規類執行的,或者使用 Spring Framework 中的 @Aspect 註釋解釋的常規類。
Q.32 什麼是 JoinPoint
程序執行的點稱為JoinPoint,例如異常的處理或方法的執行。 在 Spring AOP 中,一個 JoinPoint 始終代表一個方法執行。
Q.33 Spring MVC 框架是什麼意思?
Spring Web MVC 框架提供模型-視圖-控制器架構和隨時可用的組件。 您可以使用這些組件來創建靈活且鬆散耦合的 Web 應用程序。 MVC 模式支持隔離應用程序的不同方面,如業務邏輯、輸入邏輯和 UI 邏輯,同時在每個組件之間提供鬆散耦合。
Q.34 描述 DispatcherServlet

這是 Spring Web MVC 框架的核心。 它管理所有 HTTP 請求和響應。 DispatcherServlet 從配置文件中獲取處理程序映射的條目,並將請求提前傳遞給控制器。 然後控制器給出一個模型和視圖的對象。 DispatcherServlet 在配置文件中標記視圖解析器的入口,調用定義好的視圖組件。
Q.35 解釋 WebApplicationContext
WebApplicationContext 是普通 ApplicationContext 的擴充。 它具有 Web 應用程序所需的更多功能。 它與普通的 ApplicationContext 不同,因為它具有解析主題並決定與哪個 servlet 鏈接的能力。
從世界頂級大學在線學習軟件課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
我們已經涵蓋了面試官提出的大部分春季面試問題。 如果您有興趣了解更多信息並需要行業專家的指導,請查看 upGrad & IIIT Banglore 的執行 PG 計劃全棧軟件開發。
什麼是 Java Spring?
Sun Microsystems 開發的Java Spring 是一個支持應用程序開發的平台。 Spring 是基於 Java 的服務和 API 的集合,有助於編寫可擴展的應用程序。 Spring 是一個開源應用程序開發框架。 它可以與任何基於 Java 的應用程序一起使用,因此使其成為開源的。 Spring 提供實用程序類、異常處理、AOP 和接口來支持企業應用程序。 Java Spring 是一個支持基於 Java 的服務器端應用程序並簡化整個開發過程的平台。 它是一個高度靈活的平台,可以與任何基於 Java 的服務器一起使用。 它提供實用程序類和異常處理服務。 它有一個事務支持系統,並提供與數據庫的簡單綁定。
什麼是 Spring MVC?
Spring MVC(模型視圖控制器)是一個用 Java 編寫的開源 Web 應用程序框架,由 SpringSource 的一個團隊在過去四年中開發。 它是在 Servlet API 之上開發的,可用於 Java EE 5 Web 應用程序和 Google Web Toolkit 應用程序。 它還與 Spring Data 和 Spring AOP 集成,因此您可以將它與 Hibernate、JPA 和麵向方面的編程以及其他框架一起使用。 Spring MVC 是高度可配置的,並且支持 Spring 的控制反轉 (IoC) 原則。 它支持構建有狀態的 Web 應用程序,以便您可以在請求之間維護應用程序狀態信息。
什麼是春季休眠?
Hibernate 是 Java 的對象關係映射 (ORM) 庫。 Hibernate 旨在處理 Java 類對象的持久性。 它是一個功能強大、輕量級且極其便攜的 ORM 框架。 Hibernate 在 GNU Lesser General Public License (LGPL) 下可用。 Spring Data 是 Spring Framework 中的一個項目,它提供了一組組件,以使用熟悉的 Spring Inversion of Control (IoC) 範例以更加面向對象的方式訪問和管理數據。 Hibernate 只是一個 ORM 框架。 另一方面,Spring Data 致力於在各種存儲機制(如關係數據庫、NoSQL、平面文件等)上創建一個抽象層。