面試題集錦 Spring SpringMVC

2021-10-10 13:36:47 字數 2415 閱讀 4570

spring 提供 ioc 技術,容器會幫你管理依賴的物件,從而不需要自己建立和管理依賴物件了,更輕鬆的實現了程式的解耦。

spring 提供了事務支援,使得事務操作變的更加方便。

spring 提供了面向切片程式設計,這樣可以更方便的處理某一類的問題。

更方便的框架整合,spring 可以很方便的整合其他框架,比如 mybatis、hibernate 等。

aop 是面向切面程式設計,通過預編譯方式和執行期動態**實現程式功能的統一維護的一種技術。

簡單來說就是統一處理某一「切面」(類)的問題的程式設計思想,比如統一處理日誌、異常等。

ioc:inversionof control(中文:控制反轉)是 spring 的核心,對於 spring 框架來說,就是由 spring 來負責控制物件的生命週期和物件間的關係。

簡單來說,控制指的是當前物件對內部成員的控制權;控制反轉指的是,這種控制權不由當前物件管理了,由其他(類,第三方容器)來管理。

setter 屬性注入

構造方法注入

註解方式注入

spring 中的 bean 預設是單例模式,spring 框架並沒有對單例 bean 進行多執行緒的封裝處理。

實際上大部分時候 spring bean 無狀態的(比如 dao 類),所有某種程度上來說 bean 也是安全的,但如果 bean 有狀態的話(比如 view model 物件),那就要開發者自己去保證執行緒安全了,最簡單的就是改變 bean 的作用域,把「singleton」變更為「prototype」,這樣請求 bean 相當於 new bean()了,所以就可以保證執行緒安全了。

有狀態就是有資料儲存功能。

無狀態就是不會儲存資料。

spring 支援 5 種作用域,如下:

singleton:spring ioc 容器中只存在乙個 bean 例項,bean 以單例模式存在,是系統預設值;

prototype:每次從容器呼叫 bean 時都會建立乙個新的示例,既每次 getbean()相當於執行 new bean()操作;

web 環境下的作用域:

request:每次 http 請求都會建立乙個 bean;

session:同乙個 http session 共享乙個 bean 例項;

global-session:用於 portlet 容器,因為每個 portlet 有單獨的 session,globalsession 提供乙個全域性性的 http session。

注意: 使用 prototype 作用域需要慎重的思考,因為頻繁建立和銷毀 bean 會帶來很大的效能開銷。

no:預設值,表示沒有自動裝配,應使用顯式 bean 引用進行裝配。

byname:它根據 bean 的名稱注入物件依賴項。

bytype:它根據型別注入物件依賴項。

建構函式:通過建構函式來注入依賴項,需要設定大量的引數。

autodetect:容器首先通過建構函式使用 autowire 裝配,如果不能,則通過 bytype 自動裝配。

宣告式事務:宣告式事務也有兩種實現方式,基於 xml 配置檔案的方式和註解方式(在類上新增 @transaction 註解)。

編碼方式:提供編碼的形式管理和維護事務。

spring 有五大隔離級別,預設值為 isolation_default(使用資料庫的設定),其他四個隔離級別和資料庫的隔離級別一致:

isolation_default:用底層資料庫的設定隔離級別,資料庫設定的是什麼我就用什麼;

isolationreaduncommitted:未提交讀,最低隔離級別、事務未提交前,就可被其他事務讀取(會出現幻讀、髒讀、不可重複讀);

isolationreadcommitted:提交讀,乙個事務提交後才能被其他事務讀取到(會造成幻讀、不可重複讀),sql server 的預設級別;

isolationrepeatableread:可重複讀,保證多次讀取同乙個資料時,其值都和事務開始時候的內容是一致,禁止讀取到別的事務未提交的資料(會造成幻讀),mysql 的預設級別;

isolation_serializable:序列化,代價最高最可靠的隔離級別,該隔離級別能防止髒讀、不可重複讀、幻讀。

髒讀 :表示乙個事務能夠讀取另乙個事務中還未提交的資料。比如,某個事務嘗試插入記錄 a,此時該事務還未提交,然後另乙個事務嘗試讀取到了記錄 a。

不可重複讀 :是指在乙個事務內,多次讀同一資料。

幻讀 :指同乙個事務內多次查詢返回的結果集不一樣。比如同乙個事務 a 第一次查詢時候有 n 條記錄,但是第二次同等條件下查詢卻有 n+1 條記錄,這就好像產生了幻覺。發生幻讀的原因也是另外乙個事務新增或者刪除或者修改了第乙個事務結果集裡面的資料,同乙個記錄的資料內容被修改了,所有資料行的記錄就變多或者變少了。

將 http 請求對映到相應的類/方法上。

@autowired 它可以對類成員變數、方法及建構函式進行標註,完成自動裝配的工作,通過@autowired 的使用來消除 set/get 方法。

面試題集錦

假定 54,首先,我們有乙個隨機函式發生器,能夠產生1 54之間的隨機數,如何保證抽第一張牌是54中可能,抽第二張牌是53中可能,可以這樣做,假設撲克牌是乙個54維的陣列card,我們要做的就是從這個陣列中隨機取乙個元素,然後在剩下的元素裡再隨機取乙個元素 這裡涉及到乙個問題,就是每次取完元素後,我...

面試題集錦

1 裝箱和拆箱的分別?答 裝箱就是把值型別轉換成引用型別 拆箱就是把引用型別轉換成值型別。2 怎樣建立乙個執行緒?答 一使用thread類 二使用delegate.begininvoke 三使用threadpool.queueworkitem。3 string是值型別,還是引用型別?與stringb...

linux面試題集錦

注 本試題是在網上搜尋的,在此感謝熱心的提供!事實證明有很多公司的技術筆試題都出自這裡!不管怎麼樣,只是乙個參考,技術還是第一位的,望對大家有幫助,也為自己以備不時之須。dev had1 winsys b root l04.edu.cn mount dev had1 winsys c root l0...