Java工程師面試集錦之Spring框架_第1頁(yè)
Java工程師面試集錦之Spring框架_第2頁(yè)
Java工程師面試集錦之Spring框架_第3頁(yè)
Java工程師面試集錦之Spring框架_第4頁(yè)
Java工程師面試集錦之Spring框架_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論