1. 程式人生 > 其它 >Spring面試題及答案整理(2023)

Spring面試題及答案整理(2023)

Spring經典面試題及答案,每道都是認真篩選出的大廠高頻面試題,助力大家能找到滿意的工作!

下載連結全部面試題及答案PDF

其他網際網路大廠面試題

1:阿里巴巴Java面試題

2:阿里雲Java面試題-實習生崗

3:騰訊Java面試題-高階

4:位元組跳動Java面試題

5:位元組跳動Java面試題-大資料方向

6:百度Java面試題

7:螞蟻金服Java面試題-中級

8:螞蟻金服Java面試題-高階

9:京東Java面試題-中級

10:拼多多Java面試題-電商部

11:商湯科技Java面試題

12:中軟國際Java面試題-初級

13:唯品會Java面試題

14:攜程Java面試題-高階

15:軟通動力Java面試題

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 配置檔案

使用以上功能的客戶端程式

22.什麼是 Spring beans?

23.一個 Spring Bean 定義 包含什麼?

24. spring 中的 bean 是執行緒安全的嗎?

25. spring 支援幾種 bean 的作用域?

26. spring 自動裝配 bean 有哪些方式?

27. spring 事務實現方式有哪些?

28. 說一下 spring 的事務隔離?

29.什麼是基於 Java 的 Spring 註解配置? 給一些註解的例子

30.什麼是基於註解的容器配置?

31.怎樣開啟註解裝配?

32.@Required 註解

33.@Autowired 注 解

34.@Qualifier 注 解

35.在 Spring 框架中如何更有效地使用 JDBC?

36.JdbcTemplate

37.Spring 對 DAO 的支援

38.使用 Spring 通過什麼方式訪問 Hibernate?

39.Spring 支援的 ORM

40.如何通過 HibernateDaoSupport 將 Spring 和 Hibernate 結合起來?

41.Spring 支援的事務管理型別

42.Spring 框架的事務管理有哪些優點?

43.你更傾向用那種事務管理型別?

44.什麼是 Spring 的 MVC 框架?

45. 說一下 spring mvc 執行流程?

46. spring mvc 有哪些元件?

47. @RequestMapping 的作用是什麼?

48. @Autowired 的作用是什麼?

49.DispatcherServlet

50.WebApplicationContext

51.什麼是 Spring MVC 框架的控制器?

52.@Controller 注 解

53.@RequestMapping 注 解

54.Aspect 切 面

55. 在 Spring AOP 中,關注點和橫切關注的區別是什麼?

56.連線點

57.通知

58.切點

59.什麼是引入?

60.什麼是目標物件?

61.什麼是代理?

62.有幾種不同型別的自動代理?

63.什麼是織入。什麼是織入應用的不同點?

64.解釋基於 XML Schema 方式的切面實現

65.解釋基於註解的切面實現

下載連結博主已將以上這些面試題整理成了一個面試手冊,是PDF版的