日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java常见面试考点(九):SSM面试题

發(fā)布時(shí)間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java常见面试考点(九):SSM面试题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java常見(jiàn)面試考點(diǎn)

往期文章推薦:
??java常見(jiàn)面試考點(diǎn)(四):方法的參數(shù)傳遞機(jī)制
??java常見(jiàn)面試考點(diǎn)(五):基本類型和包裝類型的區(qū)別
??java常見(jiàn)面試考點(diǎn)(六):深入理解String類型
??java常見(jiàn)面試考點(diǎn)(七):遞歸與迭代
??java常見(jiàn)面試考點(diǎn)(八):成員變量與局部變量


【版權(quán)申明】未經(jīng)博主同意,謝絕轉(zhuǎn)載!(請(qǐng)尊重原創(chuàng),博主保留追究權(quán));

本博客的內(nèi)容來(lái)自于:java常見(jiàn)面試考點(diǎn)(九):SSM面試題;

學(xué)習(xí)、合作與交流聯(lián)系q384660495;

本博客的內(nèi)容僅供學(xué)習(xí)與參考,并非營(yíng)利;

文章目錄

  • java常見(jiàn)面試考點(diǎn)
  • 一、Spring Bean的作用域
  • 二、Spring 的事務(wù)傳播屬性和隔離級(jí)別
    • 1、事務(wù)的傳播行為
    • 2、事務(wù)的隔離級(jí)別
  • 三、SpringMVC的執(zhí)行原理與亂碼問(wèn)題
    • 1、post與get請(qǐng)求的亂碼問(wèn)題
    • 2、SpringMVC的執(zhí)行流程
  • 四、Mybatis屬性與字段對(duì)應(yīng)
  • 總結(jié)


一、Spring Bean的作用域

如圖一共有五種作用域,其中request、session和global session三種作用域僅在基于web的應(yīng)用中使用,只能用在基于web的Spring ApplicationContext環(huán)境。

  • 當(dāng)一個(gè)bean的作用域?yàn)镾ingleton,那么Spring IoC容器中只會(huì)存在一個(gè)共享的bean實(shí)例,并且所有對(duì)bean的請(qǐng)求,只要id與該bean定義相匹配,則只會(huì)返回bean的同一實(shí)例。Singleton是單例類型,就是在創(chuàng)建起容器時(shí)就同時(shí)自動(dòng)創(chuàng)建了一個(gè)bean的對(duì)象,不管你是否使用,他都存在了,每次獲取到的對(duì)象都是同一個(gè)對(duì)象。注意,Singleton作用域是Spring中的缺省作用域
  • 當(dāng)一個(gè)bean的作用域?yàn)镻rototype,表示一個(gè)bean定義對(duì)應(yīng)多個(gè)對(duì)象實(shí)例。Prototype作用域的bean會(huì)導(dǎo)致在每次對(duì)該bean請(qǐng)求時(shí)都會(huì)創(chuàng)建一個(gè)新的bean實(shí)例。Prototype是原型類型,它在我們創(chuàng)建容器的時(shí)候并沒(méi)有實(shí)例化,而是當(dāng)我們獲取bean的時(shí)候才會(huì)去創(chuàng)建一個(gè)對(duì)象,而且我們每次獲取到的對(duì)象都不是同一個(gè)對(duì)象。根據(jù)經(jīng)驗(yàn),對(duì)有狀態(tài)的bean應(yīng)該使用prototype作用域,而對(duì)無(wú)狀態(tài)的bean則應(yīng)該使用singleton作用域。
  • request:每次HTTP請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的Bean。該作用域僅適用于WebApplicationContext環(huán)境。
  • session:同一個(gè)HTTP Session共享一個(gè)Bean,不同的HTTP Session使用不同的Bean。該作用域僅適用于WebApplicationContext環(huán)境。
  • global session
  • 面試的話重點(diǎn)掌握前倆個(gè),本部分內(nèi)容參考了Spring中bean的作用域與生命周期

    對(duì)于Bean的生命周期,可以參考我的另外一篇文章:

    二、Spring 的事務(wù)傳播屬性和隔離級(jí)別

    1、事務(wù)的傳播行為

    propagation:用來(lái)設(shè)置事務(wù)的傳播行為:一個(gè)方法運(yùn)行在了一個(gè)開(kāi)啟了事務(wù)的方法中時(shí),當(dāng)前方法是使用原來(lái)的事務(wù),還是開(kāi)啟一個(gè)新的事務(wù),這就是事務(wù)的傳播行為。

    比如:Propagation.REQUIRED:默認(rèn)值,代表繼續(xù)使用原來(lái)的事。Propagation.REQUIRES_NEW:將原來(lái)的事務(wù)掛起,開(kāi)啟一個(gè)新的事務(wù)。最常用的事務(wù)傳播屬性就是REQUIRED和REQUIRES_NEW。

    REQUIRED傳播行為:當(dāng)bookService的purchase()方法被另外一個(gè)事務(wù)方法checkout()調(diào)用時(shí),它會(huì)默認(rèn)在現(xiàn)有的事務(wù)內(nèi)運(yùn)行。因此在checkout()方法的開(kāi)始和結(jié)束內(nèi)只有一個(gè)事務(wù),這個(gè)事務(wù)只會(huì)在checkout()方法調(diào)用結(jié)束時(shí)被提交,那就導(dǎo)致用戶一本都買(mǎi)不了。

    REQUIRES_NEW傳播行為:表示該方法必須啟動(dòng)一個(gè)新的事務(wù),并在自己的事務(wù)內(nèi)運(yùn)行,如果已經(jīng)有在運(yùn)行,就先把他掛起。

    事務(wù)的其他傳播行為可以參考Spring事務(wù)傳播機(jī)制詳解,Spring事務(wù)傳播性與隔離級(jí)別

    2、事務(wù)的隔離級(jí)別

    在講事務(wù)的隔離級(jí)別之前,我們先來(lái)看一下數(shù)據(jù)庫(kù)事務(wù)并發(fā)問(wèn)題:

    假設(shè)現(xiàn)在有兩個(gè)事務(wù):Transaction01和Transaction02并發(fā)執(zhí)行。

    ①臟讀:當(dāng)前事務(wù)讀到了其他事務(wù)更新但是還沒(méi)有提交的值(其他事務(wù)不回滾還好,其他事務(wù)回滾你讀到的就是一個(gè)無(wú)效值)。

    Transaction01將某條記錄的AEG值從20修改為30
    Transaction02讀取了Transaction01更新后的值:30
    Transaction01回滾事務(wù),AEG的值又恢復(fù)到了20
    Transaction02讀取到的30就是一個(gè)無(wú)效的值

    ②不可重復(fù)讀:

    Transaction01讀取了AEG的值為20
    Transaction02將AEG的值修改為30
    Transaction01再次讀取AEG值為30,和第一次讀取結(jié)果不一致

    ③幻讀:

    Transaction01讀取了STUDENT表中的一部分?jǐn)?shù)據(jù)
    Transaction02向STUDENT表中插入了新的行

    不可重復(fù)讀重點(diǎn)在于update和delete,而幻讀的重點(diǎn)在于insert;
    避免不可重復(fù)讀需要鎖行就行,避免幻影讀則需要鎖表
    參考不可重復(fù)度和幻讀的區(qū)別,不可重復(fù)讀和幻讀區(qū)別

    事務(wù)的隔離級(jí)別:數(shù)據(jù)庫(kù)系統(tǒng)必須具有隔離并發(fā)運(yùn)行各個(gè)事務(wù)的能力,使它們不會(huì)相互影響,避免各種并發(fā)問(wèn)題。一個(gè)事務(wù)與其他事務(wù)隔離的程度成為事務(wù)的隔離級(jí)別。SQL標(biāo)準(zhǔn)中規(guī)定了多種事務(wù)隔離級(jí)別,不同隔離級(jí)別對(duì)應(yīng)不同的干擾程度,隔離級(jí)別越高,數(shù)據(jù)一致性就越好,但是并發(fā)性就越弱。

    1、讀未提交:READ UNCOMMITTED,允許Transaction01讀取Transaction02未提交的修改。(臟讀、不可重復(fù)讀、幻讀都有可能出現(xiàn))

    2、讀已提交:READ COMMITTED,要求Transaction01只能讀取Transaction02已經(jīng)提交的修改。(臟讀就可以避免了)

    3、可重復(fù)讀:REPEATABLE READ,確保Transaction01可以多次從一個(gè)字段讀取到相同的值,即Transaction01執(zhí)行期間禁止其他事務(wù)對(duì)這個(gè)字段進(jìn)行更新。(臟讀、不可重復(fù)讀都不會(huì)出現(xiàn)了)

    4、串行化:SERIALIZABLE,確保Transaction01可以多次從一個(gè)表中讀取到相同的行,在Transaction01執(zhí)行期間,禁止其他事務(wù)對(duì)這個(gè)表進(jìn)行添加、更新、刪除操作。可以避免所有并發(fā)問(wèn)題,但是性能最低。(臟讀、不可重復(fù)讀、幻讀都不可能出現(xiàn))


    隔離級(jí)別越高,數(shù)據(jù)一致性就越好,但是并發(fā)性就越弱

    三、SpringMVC的執(zhí)行原理與亂碼問(wèn)題

    1、post與get請(qǐng)求的亂碼問(wèn)題

  • 對(duì)于post請(qǐng)求,我們可以在web.xml配置文件中添加過(guò)濾器:
  • <filter><description>字符編碼過(guò)濾器</description><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param>//response是否設(shè)置編碼<param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

    2、對(duì)于get請(qǐng)求,在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的執(zhí)行流程

  • 用戶發(fā)送請(qǐng)求到中央控制器DispatcherServlet;
  • 中央控制器調(diào)用處理器映射器HandlerMapping;
  • 處理器映射器返回HandlerExecutionChain(包含程序中用到的處理器攔截器HandlerIntercepter和處理器對(duì)象Handler)給中央控制器;
  • 中央處理器DispatcherServlet再調(diào)用處理器適配器;
  • 處理器適配器調(diào)用具體的處理器Handler(也叫Controller或后端控制器)去處理請(qǐng)求;
  • 處理器處理完請(qǐng)求之后返回ModelAndView給處理器適配器;
  • 處理器適配器再講Handler的執(zhí)行結(jié)果ModelAndView返回給中央控制器DispatcherServlet;
  • DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器;
  • ViewReslover解析后返回具體View;
  • DispatcherServlet根據(jù)View進(jìn)行渲染視圖,即將模型數(shù)據(jù)填充至視圖中;
  • DispatcherServlet響應(yīng)用戶。
  • 四、Mybatis屬性與字段對(duì)應(yīng)

  • 在全局配置文件中配置
  • <configuration> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> </configuration>
  • sql語(yǔ)句起別名
  • 不使用resultType,自己配置resultMap
  • 總結(jié)

    這里介紹了一些簡(jiǎn)單的SSM的面試問(wèn)題,希望對(duì)大家有所幫助。

    總結(jié)

    以上是生活随笔為你收集整理的java常见面试考点(九):SSM面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。