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 非執行緒安全的,通過鍊錶實現的,查詢速度回快很多...