Spring相關的面試題解析

2021-09-29 12:03:01 字數 1870 閱讀 7372

1.什麼是spring?怎麼理解?

spring是乙個大家族,擁有spring框架,

以及基於spring框架的各種解決方案的框架。

面試中問的spring通常是指spring framework

spring框架是當年用來替代重量級的ejb的輕量級框架,

當年為了輕量化,在應用程式中,充當了粘合劑的角色,

它在當年用來整合各種的框架,一起執行。

當然,他還具備一些非常優秀的特質來做粘合劑,

如ioc,aop等。

擴充套件問題:beanfactory和factorybean的區別?

前面乙個是spring容器,後面是bean的構建方式(介面)。

3.怎麼理解ioc?怎麼理解?和di有什麼區別?ioc有什麼好處?

ioc即控制反轉,通俗來說,將某種行為或權力(控制權),

交給第三方或者其他人來處理。

對於spring框架來說,

他的ioc主要是將物件的建立權力交給了spring容器,

即某物件需要另乙個物件的時候,a無需去建立b(無需new)

直接到spring容器中獲取即可,

無需理會另乙個物件從哪來,到哪去,

如何產生,如何銷毀。

而上述動作,di叫做依賴注入,

需要某物件,無需自己建立,

直接從spring容器中拿過來,注入進來即可使用

拿上面的案例來說,a需要b物件,直接將b注入到a .

di和ioc在使用上是一碼事,

都是需要某個物件的時候,不自己建立,

將建立物件的權力交給第三方。

但是概念上有大小之分,

ioc概念更大,di是ioc的延伸,更小一些。

只要是控制權交出去的行為都是ioc,

di是基於ioc來實現的。

好處:要使用的物件無需自己管理(生命週期:建立,銷毀等)

誤區:ioc是一種思想,不是spring。spring容器是乙個實現。

4.什麼是aop?怎麼理解?有哪些應用?

aop:面向切面程式設計,是一種思想。

aop是採用橫向切入的方式,

來代替縱向的繼承體系的**復用問題,

並且實現了**的無侵入性。

spring中aop的實現有兩套:

一套是傳統的aop(程式設計式),

另一套是aspectj的實現(宣告式:xml或註解)

通知的方式:

前置通知,後置通知,環繞通知,異常通知,最終通知。

環繞通知可以代替其他的所有通知。

應用場景:

記錄日誌,(spring)事務管理(呼叫方法前開啟事務,呼叫方法後關閉事務),資源釋放(最終通知),許可權控制(shoro)

快取優化

springaop的實現

jdk和cglib

jdk基於介面實現

cglib基於類的實現

spring中預設的是基於jdk的實現,

如果沒有介面,自動選擇cglib實現

使用jdk實現,則會出現多重**的問題,需要注意

5.spring的事務

spring框架中是使用宣告式事務,

可以基於xml或註解來使用。

底層實現:aop(環繞通知)動態**機制。

三個核心物件:平台事務管理,事務定義物件,事務狀態物件。

事務隔離級別:

5種:預設,

讀未提交,

讀提交,

重複讀,

序列化mysql預設級別,不可重複讀,

oracle預設級別,讀提交

事務傳播行為:

7中型別3大類:

第一大類:事務在一起,乙個事務。request,support,mandatory。

第二大類:事務分開,多個事務。

第三大類:事務保留點,巢狀事務

面試題解析

1.繼承執行順序 當兩個類之間有繼承關係時,第一次構造子類的例項時,是按照如下順序進行的 1.子類的靜態成員初始化語句 2.子類的靜態建構函式 3.子類的非靜態成員初始化語句 4.父類的靜態成員初始化語句 5.父類的靜態建構函式 6.父類的非靜態成員初始化語句 7.父類的建構函式 8.子類的建構函式...

Spring的相關面試題

使用它的ioc功能,在解耦上達到了頂級的配置.使用它對資料庫訪問事務相關的封裝.各種其他元件與spring的融合,在 spring中更加方便的快捷的繼承其他的一些元件.spring的事務宣告有兩種方式,程式設計式和宣告式.spring主要是通過 宣告式事務 的方式對事務進行管理,即在配置檔案中進行宣...

面試題解析記載

工具類原始碼 hashcode 在建立類的時候要覆蓋equal 和 hash 方法 arraylist 基礎陣列來實現的,遍歷查詢快,但是刪除需要移動陣列資料,處理會慢。linkedlist 實現原理通過鍊錶實現,插入快,查詢和刪除慢。hashmap 非執行緒安全的,通過鍊錶實現的,查詢速度回快很多...