八股文騷套路之Spring
在大家強(qiáng)烈的呼聲下,這周推出八股文騷套路之 Spring 篇。雖然現(xiàn)在 SpringBoot 很火,用起來也很方便,不過我還是建議你先看下 Spring。一個(gè)原因是,Spring 是經(jīng)典了,應(yīng)該好好把他的原理搞明白。另一個(gè)原因是,SpringBoot 八股文不如 Spring 好背~
準(zhǔn)備面試的話 Spring這部分是可以在短時(shí)間內(nèi)做針對(duì)性準(zhǔn)備的。這篇文章中我說下 Spring 和 SpringMVC 中面試常問的問題,大家按這些常問的問題準(zhǔn)備就好了。另外我還會(huì)給大家補(bǔ)充一些要學(xué)的東西,面試的時(shí)候可以給面試官講,體現(xiàn)下自己有深入探究的精神。這種在面試官那里還是挺加分的,就比如我面阿里的時(shí)候,阿里的面試官給我的面評(píng)就是下面這樣:

其實(shí) Spring 中的面試問題還挺固定的,我面了一圈基本上面試官都是那幾個(gè)問題。我甚至都覺得這些面試官面我的時(shí)候應(yīng)該是打開 JavaGuide (這篇文章有些問題用了 Guide哥 一些內(nèi)容,先討好下~),從問題中隨便挑幾個(gè)問我。當(dāng)然因?yàn)槲?Spring 學(xué)的比較深入,能在問題上拔一下高度,都在面試官那里裝逼成功了。除了遇見這個(gè)阿里面試官,不講武德,硬要和我要展開探討 Spring 到底好在哪,我記得這個(gè)問題展開和我探討了半個(gè)多小時(shí)...
相關(guān)閱讀:
Spring
我現(xiàn)在把 Spring 常問的問題列在下面,大家能把這些問題回答出來,校招應(yīng)付面試官問題就不大了。另外我說明下,面大中廠的話問Spring 相關(guān)的問題主要是問原理性的內(nèi)容,很少問一些具體的功能是怎么做,常用的功能大家了解就好,千萬別背 Spring 的 API 啊。
「1.什么是IOC?IOC的初始化流程?」
這個(gè)問題基本上是面試官的起始問題,這里需要你去理解一下什么是控制反轉(zhuǎn),并去理解下這個(gè)思想的好處,并且能給面試官講出來。另外記一下 IOC 的初始化過程,就是下面這張圖。

看到這張圖順便說下,面試官常會(huì)問 BeanFactory 和 FactoryBean 的區(qū)別。如果你時(shí)間特別充足的話,可以通過這個(gè)連接看下 IOC 的源碼,連接如下:
https://javadoop.com/post/spring-ioc
「2.什么是AOP?」
AOP 稱為面向切面的編程,這也是面試官愛問的問題。就算 Spring 其它的原理你都不知道,你也要把 IOC 和 AOP 記清楚,這是面試官極其愛問的。在給面試官回答這個(gè)問題時(shí),你首先要答出AOP是什么,有什么好處,另外你還可以給面試官講 Spring AOP 是基于動(dòng)態(tài)代理的,最好再答出有 JDK Proxy 和 Cglib 兩種方式,再把這兩種方式分別是怎么樣實(shí)現(xiàn)的給面試官講一下,這樣你的回答就算到位了。
「3.Bean」
Bean也是面試過程中十分愛問的知識(shí)點(diǎn),最常問的是 Bean的生命周期。其次會(huì)問 Bean的循環(huán)依賴問題,就是要你回答循環(huán)依賴問題是什么,Bean是怎么解決循環(huán)依賴的。偶爾也會(huì)問 Bean的作用域有哪些的問題。
「4.Spring事務(wù)」
Spring 事務(wù)你要知道有編程式事務(wù)以及 聲明式事務(wù) 兩種,聲明式事務(wù)推薦使用,主要是基于 XML和注解 兩種方式。Spring 的隔離級(jí)別和 事務(wù)傳播方式 也要記一下。
「5.設(shè)計(jì)模式」
你是不是覺得混入了一個(gè)奇怪的東西,對(duì),就是設(shè)計(jì)模式。其實(shí) Spring 中應(yīng)用了大量的設(shè)計(jì)模式,我覺得你可以了解一下 Spring 是怎么樣使用設(shè)計(jì)模式的呀!這樣你一下子把兩個(gè)知識(shí)點(diǎn)都學(xué)了。你給面試官講設(shè)計(jì)模式的時(shí)候就可以說 Spring 是這么用的,多好?另外Spring 中也用了很多的反射,你們也可以看一下 Spring 中哪些部分應(yīng)用了反射,是怎么樣用的,這都可以給面試官講。
「6.一些不常問問題」
這里問的不是太多,不過還是要準(zhǔn)備一下??匆豢?Spring 是什么、Spring 有哪些重要模塊、Spring 常用的API記幾個(gè)就好。
SpringMVC
其實(shí)面試過程中對(duì) SpringMVC 的問題很集中,90%以上都是下面這個(gè)問題。
「SpringMVC 工作原理」
你只要把下面這張圖的流程背下來就好了。圖是Guide哥的。

算了,答案我也一起盜了 Guide哥的吧(Guide哥如果你看到了別砍我,這塊就這一個(gè)問題,我不把答案貼上篇幅也太少了)??瓤龋x者你們直接背就好了:
「流程說明(重要):」
客戶端(瀏覽器)發(fā)送請(qǐng)求,直接請(qǐng)求到
DispatcherServlet。DispatcherServlet根據(jù)請(qǐng)求信息調(diào)用HandlerMapping,解析請(qǐng)求對(duì)應(yīng)的Handler。解析到對(duì)應(yīng)的
Handler(也就是我們平常說的Controller控制器)后,開始由HandlerAdapter適配器處理。HandlerAdapter會(huì)根據(jù)Handler來調(diào)用真正的處理器來處理請(qǐng)求,并處理相應(yīng)的業(yè)務(wù)邏輯。處理器處理完業(yè)務(wù)后,會(huì)返回一個(gè)
ModelAndView對(duì)象,Model是返回的數(shù)據(jù)對(duì)象,View是個(gè)邏輯上的View。ViewResolver會(huì)根據(jù)邏輯View查找實(shí)際的View。DispaterServlet把返回的Model傳給View(視圖渲染)。把
View返回給請(qǐng)求者(瀏覽器)
偶爾還會(huì)問你一些比如什么是SpringMVC,談?wù)勀銓?duì)SpringMVC的理解、SpringMVC 的優(yōu)點(diǎn),SpringMVC常用注解這幾個(gè)。按這樣準(zhǔn)備問題就不大了。
如果時(shí)間充足,好好體會(huì)一下 Spring 的設(shè)計(jì),對(duì)自己還是很有益處的。今天就講這么多,咱們下篇文章見。
歡迎點(diǎn)贊分享。咱們下期再會(huì)!
