版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java工程師面試集錦之Spring框架
作為一名高級(jí)Java工程師,不僅要具備扎實(shí)的理論功底,還要有較多的項(xiàng)目閱歷,要對(duì)市面上的主流技術(shù)有一個(gè)大致的了解??蚣苣軌蛱嵘绦蜷_(kāi)發(fā)效率,也是高薪Java工程師面試必問(wèn)的技術(shù),今日我就給大家共享一下常見(jiàn)的Spring框架面試題。
1、什么是Spring?
Spring是個(gè)Java企業(yè)級(jí)應(yīng)用的開(kāi)源開(kāi)發(fā)框架。Spring主要用來(lái)開(kāi)發(fā)Java應(yīng)用,但是有些擴(kuò)展是針對(duì)構(gòu)建J2EE平臺(tái)的web應(yīng)用。Spring框架目標(biāo)是簡(jiǎn)化Java企業(yè)級(jí)應(yīng)用開(kāi)發(fā),并通過(guò)POJO為基礎(chǔ)的編程模型促進(jìn)良好的編程習(xí)慣。
2、選擇使用Spring框架的緣由?
使用Spring:第一是使用它的IOC功能,在解耦上達(dá)到了配置級(jí)別。其次是使用它對(duì)數(shù)據(jù)庫(kù)訪問(wèn)事務(wù)相關(guān)的封裝。第三就是各種其他組件與Spring的融合,在Spring中更加便利快捷的繼承其他一些組件。
3、Spring是如何管理事務(wù)的?
spring的事務(wù)聲明有兩種方式,編程式和聲明式。spring主要是通過(guò)“聲明式事務(wù)”的方式對(duì)事務(wù)進(jìn)行管理,即在配置文件中進(jìn)行聲明,通過(guò)AOP將事務(wù)切面切入程序,最大的好處是大大削減了代碼量。
4、SpringIoC容器配置Bean的方式?
1)基于XML文件進(jìn)行配置。
2)基于注解進(jìn)行配置。
3)基于Java程序進(jìn)行配置(Spring3+)
5、Spring框架有哪些不同的模塊?
核心容器模塊、應(yīng)用上下文模塊Applicationcontext、AOP模塊、JDBC抽象和DAO模塊、O/R映射整合模塊、Web模塊、MVC框架模塊。
6、一個(gè)簡(jiǎn)潔的Spring應(yīng)用程序包括什么?
這些應(yīng)用程序像任何Java應(yīng)用程序。它們是由多個(gè)類(lèi)組成,每個(gè)類(lèi)執(zhí)行應(yīng)用程序內(nèi)的一個(gè)特定的功能。這些類(lèi)的配置是通過(guò)一個(gè)XML文件向?qū)Ψ綄?dǎo)入依靠。此XML文件描述如何配置類(lèi),稱為Spring配置文件。
7、如何給Spring容器供應(yīng)配置元數(shù)據(jù)?
有三種重要的方法給Spring容器供應(yīng)配置元數(shù)據(jù):XML配置文件、基于注解的配置、基于Java的配置。
8、在Spring中如何注入一個(gè)Java集合?
Spring供應(yīng)以下幾種集合的配置元素:
1)list類(lèi)型用于注入一列值,允許有相同的值。
2)set類(lèi)型用于注入一組值,不允許有相同的值。
3)map類(lèi)型用于注入一組鍵值對(duì),鍵和值都可以為任意類(lèi)型。
4)props類(lèi)型用于注入一組鍵值對(duì),鍵和值都只能為String類(lèi)型。
9、在Spring框架中如何更有效地使用JDBC?
使用SpringJDBC框架,資源管理和錯(cuò)誤處理的代價(jià)都會(huì)被減輕。所以開(kāi)發(fā)者只需statements和queries從數(shù)據(jù)存取數(shù)據(jù),JDBC也可以在Spring框架供應(yīng)的模板類(lèi)的關(guān)心下更有效地被使用,這個(gè)模板叫JDBCTemplate。
10、Bean是如何被管理的?
在Spring框架中,一旦把一個(gè)bean納入到SpringIoC容器之中,這個(gè)bean的生命周期就會(huì)交由容器進(jìn)行管理,一般擔(dān)當(dāng)管理者角色的是BeanFactory或ApplicationContext。熟悉一下Bean的生命周期活動(dòng),對(duì)更好的利用它有很大的關(guān)心。
概括來(lái)說(shuō)主要有四個(gè)階段:實(shí)例化,初始化,使用,銷(xiāo)毀。
11、Spring中的自動(dòng)裝配有哪些限制?
1)假如使用了構(gòu)造器注入或者setter注入,那么將掩蓋自動(dòng)裝配的依靠關(guān)系。
2)基本數(shù)據(jù)類(lèi)型的值、字符串字面量、類(lèi)字面量無(wú)法使用自動(dòng)裝配來(lái)注入。
3)優(yōu)先考慮使用顯式的裝配來(lái)進(jìn)行更精確的依靠注入而不是使用自動(dòng)裝配。
12、Resource是如何被查找、加載的?
Resource接口是Spring資源訪問(wèn)策略的抽象,它本身并不供應(yīng)任何資源訪問(wèn)實(shí)現(xiàn),詳細(xì)的資源訪問(wèn)由該接口的實(shí)現(xiàn)類(lèi)完成——每個(gè)實(shí)現(xiàn)類(lèi)代表一種資源訪問(wèn)策略。Spring為Resource接口供應(yīng)了如下實(shí)現(xiàn)類(lèi):
1)UrlResource:訪問(wèn)網(wǎng)絡(luò)資源的實(shí)現(xiàn)類(lèi)。
2)ClassPathResource:訪問(wèn)類(lèi)加載路徑里資源的實(shí)現(xiàn)類(lèi)。
3)FileSystemResource:訪問(wèn)文件系統(tǒng)里資源的實(shí)現(xiàn)類(lèi)。
4)ServletContextResource:訪問(wèn)相對(duì)于ServletContext路徑里的資源的實(shí)現(xiàn)類(lèi):
5)InputStreamResource:訪問(wèn)輸入流資源的實(shí)現(xiàn)類(lèi)。
6)ByteArrayResource:訪問(wèn)字節(jié)數(shù)組資源的實(shí)現(xiàn)類(lèi)。這些Resource實(shí)現(xiàn)類(lèi),針對(duì)不同的的底層資源,供應(yīng)了相應(yīng)的資源訪問(wèn)規(guī)律,并供應(yīng)便捷的包裝,以利于客戶端程序的資源訪問(wèn)。
13、有哪些常用的Context?
最常被使用的ApplicationContext接口實(shí)現(xiàn):
1)FileSystemXmlApplicationContext:該容器從XML文件中加載已被定義的bean。在這里,你需要供應(yīng)給構(gòu)造器XML文件的完整路徑。
2)ClassPathXmlApplicationContext:該容器從XML文件中加載已被定義的bean。在這里,你不需要供應(yīng)XML文件的完整路徑,只需正確配置CLASSPATH環(huán)境變量即可,由于,容器會(huì)從CLASSPATH中搜尋bean配置文件。
3)WebXmlApplicationContext:該容器會(huì)在一個(gè)web應(yīng)用程序的范圍內(nèi)加載在XML文件中已被定義的bean。
14、Spring中Bean的作用域有哪些?
1)singleton作用域
在默認(rèn)狀況下,spring的ApplicationContext容器在啟動(dòng)時(shí),自動(dòng)實(shí)例化全部singleton的Bean并緩存于容器中.雖然啟動(dòng)時(shí)會(huì)花費(fèi)一些時(shí)間,但帶來(lái)兩個(gè)好處:首先對(duì)Bean提前的實(shí)例化操作會(huì)及早發(fā)覺(jué)一些潛在的配置問(wèn)題.其次Bean以緩存的方式保存,當(dāng)運(yùn)行時(shí)使用到該Bean時(shí)就無(wú)須再實(shí)例化了,加快了運(yùn)行效率.假如用戶不盼望在容器啟動(dòng)時(shí)提前實(shí)例化singleton的Bean,可以通過(guò)lazy-init屬性進(jìn)行掌握.
2)prototype作用域
在默認(rèn)狀況下,spring容器在啟動(dòng)時(shí)不實(shí)例化prototype的Bean.此外,spring容器將prototype的Bean交給調(diào)用者后,就不再管理它的生命周期.
3)request作用域
每次HTTP懇求都會(huì)創(chuàng)建一個(gè)新的Bean,HTTP懇求處理完畢后,銷(xiāo)毀這個(gè)Bean.該作用域僅適用于webApplicationContext環(huán)境.
4)session作用域
同一個(gè)HTTPsession共享一個(gè)Bean,不同HTTPsession使用不同的Bean,當(dāng)HTTPSession結(jié)束后,實(shí)例才被銷(xiāo)毀.該作用域僅適用于webApplicationContext環(huán)境
5)globalSession作用域
同一個(gè)全局session共享一個(gè)Bean,一般用于portlet應(yīng)用環(huán)境,該作用域僅適用于webApplicationContext環(huán)境.
15、什么是IoC和DI?DI是如何實(shí)現(xiàn)的?
1)IOC
IOC是InversionofControl的縮寫(xiě),“掌握反轉(zhuǎn)”之意。軟件系統(tǒng)在沒(méi)有引入IOC容器之前,對(duì)象A依靠于對(duì)象B,那么對(duì)象A在初始化或者運(yùn)行到某一點(diǎn)的時(shí)候,自己必需主動(dòng)去創(chuàng)建對(duì)象B或者使用已經(jīng)創(chuàng)建的對(duì)象B。無(wú)論是創(chuàng)建還是使用對(duì)象B,掌握權(quán)都在自己手上。軟件系統(tǒng)在引入IOC容器之后,這種情形就完全轉(zhuǎn)變了,由于IOC容器的加入,對(duì)象A與對(duì)象B之間失去了直接聯(lián)系,所以,當(dāng)對(duì)象A運(yùn)行到需要對(duì)象B的時(shí)候,IOC容器會(huì)主動(dòng)創(chuàng)建一個(gè)對(duì)象B注入到對(duì)象A需要的地方。通過(guò)前后的對(duì)比,我們不難看出來(lái):對(duì)象A獲得依靠對(duì)象B的過(guò)程,由主動(dòng)行為變?yōu)榱吮粍?dòng)行為,掌握權(quán)顛倒過(guò)來(lái)了,這就是“掌握反轉(zhuǎn)”這個(gè)名稱的由來(lái)。
2)DI
2024年,MartinFowler探討了同一個(gè)問(wèn)題,既然IOC是掌握反轉(zhuǎn),那么究竟是“哪些方面的掌握被反轉(zhuǎn)了呢?”,經(jīng)過(guò)具體地分析和論證后,他得出了答案:“獲得依靠對(duì)象的過(guò)程被反轉(zhuǎn)了”。掌握被反轉(zhuǎn)之后,獲得依靠對(duì)象的過(guò)程由自身管理變?yōu)榱擞蒊OC容器主動(dòng)注入。依靠注入(DI)和掌握反轉(zhuǎn)(IOC)是從不同的角度的描述的同一件事情,就是指通過(guò)引入IOC容器,利用依靠關(guān)系注入的方式,實(shí)現(xiàn)對(duì)象之間的解耦。
3)優(yōu)點(diǎn)
降低類(lèi)之間耦合,可維護(hù)性比較好,特別便于進(jìn)行單元測(cè)試,便于調(diào)試程序和診斷故障。模塊之間通過(guò)接口溝通,互不干擾,便于團(tuán)隊(duì)開(kāi)發(fā)??蓮?fù)用性好模塊具有熱插拔特性,可直接修改配置文件。
4)缺點(diǎn)
引入了第三方IOC容器,生成對(duì)象的步驟變得有些簡(jiǎn)單IOC容器生成對(duì)象是通過(guò)反射方式,在運(yùn)行效率上有肯定的損耗。額外的配置工作。
16、如何通過(guò)HibernateDaoSupport將Spring和Hibernate結(jié)合起來(lái)?
用Spring的SessionFactory調(diào)用LocalSessionFactory。集成過(guò)程分三步:
配置theHibernateSessionFactory、繼承HibernateDaoSupport實(shí)現(xiàn)一個(gè)DAO、在AOP支持的事務(wù)中裝配。
17、解釋一下SpringMVC框架及其掌握器
Spring配備構(gòu)建Web應(yīng)用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts、Spring的MVC框架用掌握反轉(zhuǎn)把業(yè)務(wù)對(duì)象和掌握規(guī)律清楚地隔離。它也允許以聲明的方式把懇求參數(shù)和業(yè)務(wù)對(duì)象綁定。
掌握器供應(yīng)一個(gè)訪問(wèn)應(yīng)用程序的行為,此行為通常通過(guò)服務(wù)接口實(shí)現(xiàn)。掌握器解析用戶輸入并將其轉(zhuǎn)換為一個(gè)由視圖呈現(xiàn)給用戶的模型。Spring用一個(gè)特別抽象的方式實(shí)現(xiàn)了一個(gè)掌握層,允許用戶創(chuàng)建多種用途的掌握器。
18、SpringMVC的工作原理是怎樣的?
SpringMVC的工作原理如所示:
1)客戶端的全部懇求都交給前端掌握器DispatcherServlet來(lái)處理,它會(huì)負(fù)責(zé)調(diào)用系統(tǒng)的其他模塊來(lái)真正處理用戶的懇求。
2)DispatcherServlet收到懇求后,將依據(jù)懇求的信息(包括URL、HTTP協(xié)議方法、懇求頭、懇求參數(shù)、Cookie等)以及HandlerMapping的配置找處處理該懇求的Handler(任何一個(gè)對(duì)象都可以作為懇求的Handler)。
3)在這個(gè)地方Spring會(huì)通過(guò)HandlerAdapter對(duì)該處理器進(jìn)行封裝。
4)HandlerAdapter是一個(gè)適配器,它用統(tǒng)一的接口對(duì)各種Handler中的方法進(jìn)行調(diào)用。
5)Handler完成對(duì)用戶懇求的處理后,會(huì)返回一個(gè)ModelAndView對(duì)象給DispatcherServlet,ModelAndView顧名思義,包含了數(shù)據(jù)模型以及相應(yīng)的視圖的信息。
6)ModelAndView的視圖是規(guī)律視圖,DispatcherServlet還要借助ViewResolver完成從規(guī)律視圖到真實(shí)視圖對(duì)象的解析工作。
7)當(dāng)?shù)玫秸嬲囊晥D對(duì)象后,DispatcherServlet會(huì)利用視圖對(duì)象對(duì)模型數(shù)據(jù)進(jìn)行渲染。
8)客戶端得到響應(yīng),可能是一個(gè)一般的HTML頁(yè)面,也可以是XML或JSON字符串,還可以是一張圖片或者一個(gè)PDF文件。
19、什么是Spring的內(nèi)部bean?
當(dāng)一個(gè)bean僅被用作另一個(gè)bean的屬性時(shí),它能被聲明為一個(gè)內(nèi)部bean,為了定義innerbean,在Spring的基于XML的配置元數(shù)據(jù)中,可以在或元素內(nèi)使用元素,內(nèi)部bean通常是匿名的,它們的Scope一般是prototype。
20、在Spring框架中如何更有效地使用JDBC?
使用SpringJDBC框架,資源管理和錯(cuò)誤處理的代價(jià)都會(huì)被減輕。所以開(kāi)發(fā)者只需寫(xiě)statements和queries從數(shù)據(jù)存取數(shù)據(jù),JDBC也可以在Spring框架供應(yīng)的模板類(lèi)的關(guān)心下更有效地被使用,這個(gè)模板叫JdbcTemplate(例子見(jiàn)這里here)
1)Jdb
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中圖版九年級(jí)生物上冊(cè)階段測(cè)試試卷含答案
- 2025年冀少新版八年級(jí)數(shù)學(xué)下冊(cè)階段測(cè)試試卷含答案
- 2025年上外版選修3物理下冊(cè)階段測(cè)試試卷含答案
- 2025年人教A新版九年級(jí)生物下冊(cè)階段測(cè)試試卷
- 2025年華師大新版三年級(jí)英語(yǔ)下冊(cè)階段測(cè)試試卷含答案
- 2025年華東師大版選擇性必修2物理上冊(cè)階段測(cè)試試卷
- 2025年外研版三年級(jí)起點(diǎn)七年級(jí)地理上冊(cè)階段測(cè)試試卷含答案
- 2025年浙科版七年級(jí)化學(xué)上冊(cè)階段測(cè)試試卷含答案
- 2025年人教五四新版高一英語(yǔ)下冊(cè)月考試卷
- 2025年人教五四新版選擇性必修2地理上冊(cè)階段測(cè)試試卷
- ITV系列電氣比例閥英文說(shuō)明書(shū)
- SL 537-2011 水工建筑物與堰槽測(cè)流規(guī)范
- 質(zhì)量管理-AQL抽樣基礎(chǔ)知識(shí)培訓(xùn)課件
- 劇本殺·劇本-四人本《暗船》
- 《普通話》教學(xué)講義課件
- 期貨基礎(chǔ)知識(shí)TXT
- 六年級(jí)上冊(cè)道德與法治課件-第一單元 我們的守護(hù)者 復(fù)習(xí)課件-人教部編版(共12張PPT)
- 陜西省西安市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 安全管理體系及保證措施
- 啟閉機(jī)試運(yùn)行記錄-副本
- 人民醫(yī)院財(cái)務(wù)科工作流程圖
評(píng)論
0/150
提交評(píng)論