Spring面試題及答案整理(2023)
Spring經典面試題及答案,每道都是認真篩選出的大廠高頻面試題,助力大家能找到滿意的工作!
下載連結:全部面試題及答案PDF
其他網際網路大廠面試題
1.什麼是 spring?
Spring 是個 java 企業級應用的開源開發框架。Spring 主要用來開發 Java 應用, 但是有些擴充套件是針對構建 J2EE 平臺的 web 應用。Spring 框架目標是簡化 Java 企業級應用開發,並通過 POJO 為基礎的程式設計模型促進良好的程式設計習慣。
2.為什麼要使用 spring?
• spring 提供 ioc 技術,容器會幫你管理依賴的物件,從而不需要自己建立和管理依賴物件了,更輕鬆的實現了程式的解耦。
• spring 提供了事務支援,使得事務操作變的更加方便。
• spring 提供了面向切片程式設計,這樣可以更方便的處理某一類的問題。
• 更方便的框架整合,spring 可以很方便的整合其他框架,比如 MyBatis、hibernate 等。
3.使用 Spring 框架的好處是什麼?
輕量:Spring 是輕量的,基本的版本大約 2MB
控制反轉:Spring 通過控制反轉實現了鬆散耦合, 物件們給出它們的依賴, 而不是建立或查詢依賴的物件們
面向切面的程式設計(AOP):Spring 支援面向切面的程式設計,並且把應用業務邏輯和系統服務分開
容器:Spring 包含並管理應用中物件的生命週期和配置
MVC 框架: Spring 的 WEB 框架是個精心設計的框架, 是 Web 框架的一個很好的替代品
事務管理:Spring 提供一個持續的事務管理介面,可以擴充套件到上至本地事務下至全域性事務( JTA)
異常處理: Spring 提供方便的 API 把具體技術相關的異常( 比如由 JDBC , Hibernate or JDO 丟擲的) 轉化為一致的 unchecked 異常
4. 解釋一下什麼是 aop?
aop 是面向切面程式設計,通過預編譯方式和執行期動態代理實現程式功能的統一維護的一種技術。
簡單來說就是統一處理某一“切面”(類)的問題的程式設計思想,比如統一處理日誌、異常等。
5. 解釋一下什麼是 ioc?
ioc:Inversionof Control(中文:控制反轉)是 spring 的核心,對於 spring 框架來說,就是由 spring 來負責控制物件的生命週期和物件間的關係。
簡單來說,控制指的是當前物件對內部成員的控制權;控制反轉指的是,這種控制權不由當前物件管理了,由其他(類,第三方容器)來管理。
6.IOC 的優點是什麼?
IOC 或 依賴注入把應用的程式碼量降到最低。它使應用容易測試,單元測試不再需要單例和 JNDI 查詢機制。最小的代價和最小的侵入性使鬆散耦合得以實現。IOC 容器支援載入服務時的餓漢式初始化和懶載入。
7. spring 有哪些主要模組?
• spring core:框架的最基礎部分,提供 ioc 和依賴注入特性。
• spring context:構建於 core 封裝包基礎上的 context 封裝包,提供了一種框架式的物件訪問方法。
• spring dao:Data Access Object 提供了JDBC的抽象層。
• spring aop:提供了面向切面的程式設計實現,讓你可以自定義攔截器、切點等。
• spring Web:提供了針對 Web 開發的整合特性,例如檔案上傳,利用 servlet listeners 進行 ioc 容器初始化和針對 Web 的 ApplicationContext。
• spring Web mvc:spring 中的 mvc 封裝包提供了 Web 應用的 Model-View-Controller(MVC)的實現。
8.BeanFactory – BeanFactory 實現舉例
Bean 工廠是工廠模式的一個實現,提供了控制反轉功能,用來把應用的配置和依賴從正真的應用程式碼中分離。
最常用的 BeanFactory 實現是 XmlBeanFactory 類。
9.XMLBeanFactory
最常用的就是 org.springframework.beans.factory.xml.XmlBeanFactory ,它根據 XML 檔案中的定義載入 beans。該容器從 XML 檔案讀取配置元資料並用它去建立一個完全配置的系統或應用。
10.解釋 AOP 模組
AOP 模組用於發給我們的 Spring 應用做面向切面的開發, 很多支援由 AOP 聯盟提供, 這樣就確保了 Spring 和其他 AOP 框架的共通性。這個模組將元資料程式設計引入Spring。
11.解釋 JDBC 抽象和 DAO 模組
通過使用 JDBC 抽象和 DAO 模組,保證資料庫程式碼的簡潔,並能避免資料庫資源錯誤關閉導致的問題,它在各種不同的資料庫的錯誤資訊之上,提供了一個統一的異常訪問層。它還利用 Spring 的 AOP 模組給 Spring 應用中的物件提供事務管理服務。
12.什麼是 Spring 的依賴注入?
依賴注入, 是 IOC 的一個方面, 是個通常的概念, 它有多種解釋。這概念是說你不用建立物件,而只需要描述它如何被建立。你不在程式碼裡直接組裝你的元件和服務, 但是要在配置檔案裡描述哪些元件需要哪些服務,之後一個容器( IOC 容器)負責把他們組裝起來。
13.spring 常用的注入方式有哪些?
• setter 屬性注入
• 構造方法注入
• 註解方式注入
14.有哪些不同型別的 IOC(依賴注入)方式?
構造器依賴注入:構造器依賴注入通過容器觸發一個類的構造器來實現的,該類有一 系列引數,每個引數代表一個對其他類的依賴。
Setter 方法注入:Setter 方法注入是容器通過呼叫無參構造器或無參 static 工廠 方法例項化 bean 之後, 呼叫該 bean 的 setter 方法, 即實現了基於 setter 的依賴注入。
15.哪種依賴注入方式你建議使用,構造器注入,還是 Setter 方法注入?
你兩種依賴方式都可以使用, 構造器注入和 Setter 方法注入。最好的解決方案是用構造器引數實現強制依賴,setter 方法實現可選依賴。
16.解釋物件/關係對映整合模組
Spring 通過提供 ORM 模組, 支援我們在直接 JDBC 之上使用一個物件/關係對映對映(ORM)工具,Spring 支援整合主流的 ORM 框架,如 Hiberate,JDO 和 iBATIS SQL Maps。Spring 的事務管理同樣支援以上所有 ORM 框架及 JDBC。
17.解釋 WEB 模組
Spring 的 WEB 模組是構建在 application context 模組基礎之上, 提供一個適合web 應用的上下文。這個模組也包括支援多種面向 web 的任務,如透明地處理多個檔案上傳請求和程式級請求引數的繫結到你的業務物件。它也有對 Jakarta Struts 的支援。
18.Spring 配置檔案作用
Spring 配置檔案是個 XML 檔案, 這個檔案包含了類資訊, 描述瞭如何配置它們, 以及如何相互呼叫。
19.ApplicationContext 通常的實現是什麼?
FileSystemXmlApplicationContext : 此容器從一個 XML 檔案中載入 beans 的定義, XML Bean 配置檔案的全路徑名必須提供給它的建構函式。
ClassPathXmlApplicationContext:此容器也從一個 XML 檔案中載入 beans 的定義, 這裡, 你需要正確設定 classpath 因為這個容器將在 classpath 裡找bean 配置。
WebXmlApplicationContext:此容器載入一個 XML 檔案,此檔案定義了一個WEB 應用的所有 bean。
20.Bean 工廠和Application contexts有什麼區別?
Application contexts 提供一種方法處理文字訊息,一個通常的做法是載入檔案資源(比如映象),它們可以向註冊為監聽器的 bean 釋出事件。另外,在容器或容器內的物件上執行的那些不得不由 bean 工廠以程式化方式處理的操作, 可以在Application contexts 中 以 聲 明 的 方 式 處 理 。
Application contexts 實 現 了MessageSource 介面,該介面的實現以可插拔的方式提供獲取本地化訊息的方法。
21.一個 Spring 的應用看起來象什麼?
一個定義了一些功能的介面
這實現包括屬性,它的 Setter , getter 方法和函式等
Spring AOP
Spring 的 XML 配置檔案
使用以上功能的客戶端程式