java常见面试考点(九):SSM面试题
java常見面試考點
往期文章推薦:
??java常見面試考點(四):方法的參數傳遞機制
??java常見面試考點(五):基本類型和包裝類型的區別
??java常見面試考點(六):深入理解String類型
??java常見面試考點(七):遞歸與迭代
??java常見面試考點(八):成員變量與局部變量
【版權申明】未經博主同意,謝絕轉載!(請尊重原創,博主保留追究權);
本博客的內容來自于:java常見面試考點(九):SSM面試題;
學習、合作與交流聯系q384660495;
本博客的內容僅供學習與參考,并非營利;
文章目錄
- java常見面試考點
- 一、Spring Bean的作用域
- 二、Spring 的事務傳播屬性和隔離級別
- 1、事務的傳播行為
- 2、事務的隔離級別
- 三、SpringMVC的執行原理與亂碼問題
- 1、post與get請求的亂碼問題
- 2、SpringMVC的執行流程
- 四、Mybatis屬性與字段對應
- 總結
一、Spring Bean的作用域
如圖一共有五種作用域,其中request、session和global session三種作用域僅在基于web的應用中使用,只能用在基于web的Spring ApplicationContext環境。
面試的話重點掌握前倆個,本部分內容參考了Spring中bean的作用域與生命周期
對于Bean的生命周期,可以參考我的另外一篇文章:
二、Spring 的事務傳播屬性和隔離級別
1、事務的傳播行為
propagation:用來設置事務的傳播行為:一個方法運行在了一個開啟了事務的方法中時,當前方法是使用原來的事務,還是開啟一個新的事務,這就是事務的傳播行為。
比如:Propagation.REQUIRED:默認值,代表繼續使用原來的事。Propagation.REQUIRES_NEW:將原來的事務掛起,開啟一個新的事務。最常用的事務傳播屬性就是REQUIRED和REQUIRES_NEW。
REQUIRED傳播行為:當bookService的purchase()方法被另外一個事務方法checkout()調用時,它會默認在現有的事務內運行。因此在checkout()方法的開始和結束內只有一個事務,這個事務只會在checkout()方法調用結束時被提交,那就導致用戶一本都買不了。
REQUIRES_NEW傳播行為:表示該方法必須啟動一個新的事務,并在自己的事務內運行,如果已經有在運行,就先把他掛起。
事務的其他傳播行為可以參考Spring事務傳播機制詳解,Spring事務傳播性與隔離級別
2、事務的隔離級別
在講事務的隔離級別之前,我們先來看一下數據庫事務并發問題:
假設現在有兩個事務:Transaction01和Transaction02并發執行。
①臟讀:當前事務讀到了其他事務更新但是還沒有提交的值(其他事務不回滾還好,其他事務回滾你讀到的就是一個無效值)。
Transaction01將某條記錄的AEG值從20修改為30
Transaction02讀取了Transaction01更新后的值:30
Transaction01回滾事務,AEG的值又恢復到了20
Transaction02讀取到的30就是一個無效的值
②不可重復讀:
Transaction01讀取了AEG的值為20
Transaction02將AEG的值修改為30
Transaction01再次讀取AEG值為30,和第一次讀取結果不一致
③幻讀:
Transaction01讀取了STUDENT表中的一部分數據
Transaction02向STUDENT表中插入了新的行
不可重復讀重點在于update和delete,而幻讀的重點在于insert;
避免不可重復讀需要鎖行就行,避免幻影讀則需要鎖表
參考不可重復度和幻讀的區別,不可重復讀和幻讀區別
事務的隔離級別:數據庫系統必須具有隔離并發運行各個事務的能力,使它們不會相互影響,避免各種并發問題。一個事務與其他事務隔離的程度成為事務的隔離級別。SQL標準中規定了多種事務隔離級別,不同隔離級別對應不同的干擾程度,隔離級別越高,數據一致性就越好,但是并發性就越弱。
1、讀未提交:READ UNCOMMITTED,允許Transaction01讀取Transaction02未提交的修改。(臟讀、不可重復讀、幻讀都有可能出現)
2、讀已提交:READ COMMITTED,要求Transaction01只能讀取Transaction02已經提交的修改。(臟讀就可以避免了)
3、可重復讀:REPEATABLE READ,確保Transaction01可以多次從一個字段讀取到相同的值,即Transaction01執行期間禁止其他事務對這個字段進行更新。(臟讀、不可重復讀都不會出現了)
4、串行化:SERIALIZABLE,確保Transaction01可以多次從一個表中讀取到相同的行,在Transaction01執行期間,禁止其他事務對這個表進行添加、更新、刪除操作。可以避免所有并發問題,但是性能最低。(臟讀、不可重復讀、幻讀都不可能出現)
隔離級別越高,數據一致性就越好,但是并發性就越弱
三、SpringMVC的執行原理與亂碼問題
1、post與get請求的亂碼問題
2、對于get請求,在tomcat的server.xml配置文件中配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />添加URIEncoding="utf-8" <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>2、SpringMVC的執行流程
四、Mybatis屬性與字段對應
總結
這里介紹了一些簡單的SSM的面試問題,希望對大家有所幫助。
總結
以上是生活随笔為你收集整理的java常见面试考点(九):SSM面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 端口time_wait_li
- 下一篇: 若依框架入门(前后端分离版本)