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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Java工程師面試集錦之Spring框架

作為一名高級Java工程師,不僅要具備扎實的理論功底,還要有較多的項目閱歷,要對市面上的主流技術(shù)有一個大致的了解??蚣苣軌蛱嵘绦蜷_發(fā)效率,也是高薪Java工程師面試必問的技術(shù),今日我就給大家共享一下常見的Spring框架面試題。

1、什么是Spring?

Spring是個Java企業(yè)級應(yīng)用的開源開發(fā)框架。Spring主要用來開發(fā)Java應(yīng)用,但是有些擴(kuò)展是針對構(gòu)建J2EE平臺的web應(yīng)用。Spring框架目標(biāo)是簡化Java企業(yè)級應(yīng)用開發(fā),并通過POJO為基礎(chǔ)的編程模型促進(jìn)良好的編程習(xí)慣。

2、選擇使用Spring框架的緣由?

使用Spring:第一是使用它的IOC功能,在解耦上達(dá)到了配置級別。其次是使用它對數(shù)據(jù)庫訪問事務(wù)相關(guān)的封裝。第三就是各種其他組件與Spring的融合,在Spring中更加便利快捷的繼承其他一些組件。

3、Spring是如何管理事務(wù)的?

spring的事務(wù)聲明有兩種方式,編程式和聲明式。spring主要是通過“聲明式事務(wù)”的方式對事務(wù)進(jìn)行管理,即在配置文件中進(jìn)行聲明,通過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、一個簡潔的Spring應(yīng)用程序包括什么?

這些應(yīng)用程序像任何Java應(yīng)用程序。它們是由多個類組成,每個類執(zhí)行應(yīng)用程序內(nèi)的一個特定的功能。這些類的配置是通過一個XML文件向?qū)Ψ綄?dǎo)入依靠。此XML文件描述如何配置類,稱為Spring配置文件。

7、如何給Spring容器供應(yīng)配置元數(shù)據(jù)?

有三種重要的方法給Spring容器供應(yīng)配置元數(shù)據(jù):XML配置文件、基于注解的配置、基于Java的配置。

8、在Spring中如何注入一個Java集合?

Spring供應(yīng)以下幾種集合的配置元素:

1)list類型用于注入一列值,允許有相同的值。

2)set類型用于注入一組值,不允許有相同的值。

3)map類型用于注入一組鍵值對,鍵和值都可以為任意類型。

4)props類型用于注入一組鍵值對,鍵和值都只能為String類型。

9、在Spring框架中如何更有效地使用JDBC?

使用SpringJDBC框架,資源管理和錯誤處理的代價都會被減輕。所以開發(fā)者只需statements和queries從數(shù)據(jù)存取數(shù)據(jù),JDBC也可以在Spring框架供應(yīng)的模板類的關(guān)心下更有效地被使用,這個模板叫JDBCTemplate。

10、Bean是如何被管理的?

在Spring框架中,一旦把一個bean納入到SpringIoC容器之中,這個bean的生命周期就會交由容器進(jìn)行管理,一般擔(dān)當(dāng)管理者角色的是BeanFactory或ApplicationContext。熟悉一下Bean的生命周期活動,對更好的利用它有很大的關(guān)心。

概括來說主要有四個階段:實例化,初始化,使用,銷毀。

11、Spring中的自動裝配有哪些限制?

1)假如使用了構(gòu)造器注入或者setter注入,那么將掩蓋自動裝配的依靠關(guān)系。

2)基本數(shù)據(jù)類型的值、字符串字面量、類字面量無法使用自動裝配來注入。

3)優(yōu)先考慮使用顯式的裝配來進(jìn)行更精確的依靠注入而不是使用自動裝配。

12、Resource是如何被查找、加載的?

Resource接口是Spring資源訪問策略的抽象,它本身并不供應(yīng)任何資源訪問實現(xiàn),詳細(xì)的資源訪問由該接口的實現(xiàn)類完成——每個實現(xiàn)類代表一種資源訪問策略。Spring為Resource接口供應(yīng)了如下實現(xiàn)類:

1)UrlResource:訪問網(wǎng)絡(luò)資源的實現(xiàn)類。

2)ClassPathResource:訪問類加載路徑里資源的實現(xiàn)類。

3)FileSystemResource:訪問文件系統(tǒng)里資源的實現(xiàn)類。

4)ServletContextResource:訪問相對于ServletContext路徑里的資源的實現(xiàn)類:

5)InputStreamResource:訪問輸入流資源的實現(xiàn)類。

6)ByteArrayResource:訪問字節(jié)數(shù)組資源的實現(xiàn)類。這些Resource實現(xiàn)類,針對不同的的底層資源,供應(yīng)了相應(yīng)的資源訪問規(guī)律,并供應(yīng)便捷的包裝,以利于客戶端程序的資源訪問。

13、有哪些常用的Context?

最常被使用的ApplicationContext接口實現(xiàn):

1)FileSystemXmlApplicationContext:該容器從XML文件中加載已被定義的bean。在這里,你需要供應(yīng)給構(gòu)造器XML文件的完整路徑。

2)ClassPathXmlApplicationContext:該容器從XML文件中加載已被定義的bean。在這里,你不需要供應(yīng)XML文件的完整路徑,只需正確配置CLASSPATH環(huán)境變量即可,由于,容器會從CLASSPATH中搜尋bean配置文件。

3)WebXmlApplicationContext:該容器會在一個web應(yīng)用程序的范圍內(nèi)加載在XML文件中已被定義的bean。

14、Spring中Bean的作用域有哪些?

1)singleton作用域

在默認(rèn)狀況下,spring的ApplicationContext容器在啟動時,自動實例化全部singleton的Bean并緩存于容器中.雖然啟動時會花費(fèi)一些時間,但帶來兩個好處:首先對Bean提前的實例化操作會及早發(fā)覺一些潛在的配置問題.其次Bean以緩存的方式保存,當(dāng)運(yùn)行時使用到該Bean時就無須再實例化了,加快了運(yùn)行效率.假如用戶不盼望在容器啟動時提前實例化singleton的Bean,可以通過lazy-init屬性進(jìn)行掌握.

2)prototype作用域

在默認(rèn)狀況下,spring容器在啟動時不實例化prototype的Bean.此外,spring容器將prototype的Bean交給調(diào)用者后,就不再管理它的生命周期.

3)request作用域

每次HTTP懇求都會創(chuàng)建一個新的Bean,HTTP懇求處理完畢后,銷毀這個Bean.該作用域僅適用于webApplicationContext環(huán)境.

4)session作用域

同一個HTTPsession共享一個Bean,不同HTTPsession使用不同的Bean,當(dāng)HTTPSession結(jié)束后,實例才被銷毀.該作用域僅適用于webApplicationContext環(huán)境

5)globalSession作用域

同一個全局session共享一個Bean,一般用于portlet應(yīng)用環(huán)境,該作用域僅適用于webApplicationContext環(huán)境.

15、什么是IoC和DI?DI是如何實現(xiàn)的?

1)IOC

IOC是InversionofControl的縮寫,“掌握反轉(zhuǎn)”之意。軟件系統(tǒng)在沒有引入IOC容器之前,對象A依靠于對象B,那么對象A在初始化或者運(yùn)行到某一點的時候,自己必需主動去創(chuàng)建對象B或者使用已經(jīng)創(chuàng)建的對象B。無論是創(chuàng)建還是使用對象B,掌握權(quán)都在自己手上。軟件系統(tǒng)在引入IOC容器之后,這種情形就完全轉(zhuǎn)變了,由于IOC容器的加入,對象A與對象B之間失去了直接聯(lián)系,所以,當(dāng)對象A運(yùn)行到需要對象B的時候,IOC容器會主動創(chuàng)建一個對象B注入到對象A需要的地方。通過前后的對比,我們不難看出來:對象A獲得依靠對象B的過程,由主動行為變?yōu)榱吮粍有袨椋莆諜?quán)顛倒過來了,這就是“掌握反轉(zhuǎn)”這個名稱的由來。

2)DI

2024年,MartinFowler探討了同一個問題,既然IOC是掌握反轉(zhuǎn),那么究竟是“哪些方面的掌握被反轉(zhuǎn)了呢?”,經(jīng)過具體地分析和論證后,他得出了答案:“獲得依靠對象的過程被反轉(zhuǎn)了”。掌握被反轉(zhuǎn)之后,獲得依靠對象的過程由自身管理變?yōu)榱擞蒊OC容器主動注入。依靠注入(DI)和掌握反轉(zhuǎn)(IOC)是從不同的角度的描述的同一件事情,就是指通過引入IOC容器,利用依靠關(guān)系注入的方式,實現(xiàn)對象之間的解耦。

3)優(yōu)點

降低類之間耦合,可維護(hù)性比較好,特別便于進(jìn)行單元測試,便于調(diào)試程序和診斷故障。模塊之間通過接口溝通,互不干擾,便于團(tuán)隊開發(fā)??蓮?fù)用性好模塊具有熱插拔特性,可直接修改配置文件。

4)缺點

引入了第三方IOC容器,生成對象的步驟變得有些簡單IOC容器生成對象是通過反射方式,在運(yùn)行效率上有肯定的損耗。額外的配置工作。

16、如何通過HibernateDaoSupport將Spring和Hibernate結(jié)合起來?

用Spring的SessionFactory調(diào)用LocalSessionFactory。集成過程分三步:

配置theHibernateSessionFactory、繼承HibernateDaoSupport實現(xiàn)一個DAO、在AOP支持的事務(wù)中裝配。

17、解釋一下SpringMVC框架及其掌握器

Spring配備構(gòu)建Web應(yīng)用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts、Spring的MVC框架用掌握反轉(zhuǎn)把業(yè)務(wù)對象和掌握規(guī)律清楚地隔離。它也允許以聲明的方式把懇求參數(shù)和業(yè)務(wù)對象綁定。

掌握器供應(yīng)一個訪問應(yīng)用程序的行為,此行為通常通過服務(wù)接口實現(xiàn)。掌握器解析用戶輸入并將其轉(zhuǎn)換為一個由視圖呈現(xiàn)給用戶的模型。Spring用一個特別抽象的方式實現(xiàn)了一個掌握層,允許用戶創(chuàng)建多種用途的掌握器。

18、SpringMVC的工作原理是怎樣的?

SpringMVC的工作原理如所示:

1)客戶端的全部懇求都交給前端掌握器DispatcherServlet來處理,它會負(fù)責(zé)調(diào)用系統(tǒng)的其他模塊來真正處理用戶的懇求。

2)DispatcherServlet收到懇求后,將依據(jù)懇求的信息(包括URL、HTTP協(xié)議方法、懇求頭、懇求參數(shù)、Cookie等)以及HandlerMapping的配置找處處理該懇求的Handler(任何一個對象都可以作為懇求的Handler)。

3)在這個地方Spring會通過HandlerAdapter對該處理器進(jìn)行封裝。

4)HandlerAdapter是一個適配器,它用統(tǒng)一的接口對各種Handler中的方法進(jìn)行調(diào)用。

5)Handler完成對用戶懇求的處理后,會返回一個ModelAndView對象給DispatcherServlet,ModelAndView顧名思義,包含了數(shù)據(jù)模型以及相應(yīng)的視圖的信息。

6)ModelAndView的視圖是規(guī)律視圖,DispatcherServlet還要借助ViewResolver完成從規(guī)律視圖到真實視圖對象的解析工作。

7)當(dāng)?shù)玫秸嬲囊晥D對象后,DispatcherServlet會利用視圖對象對模型數(shù)據(jù)進(jìn)行渲染。

8)客戶端得到響應(yīng),可能是一個一般的HTML頁面,也可以是XML或JSON字符串,還可以是一張圖片或者一個PDF文件。

19、什么是Spring的內(nèi)部bean?

當(dāng)一個bean僅被用作另一個bean的屬性時,它能被聲明為一個內(nèi)部bean,為了定義innerbean,在Spring的基于XML的配置元數(shù)據(jù)中,可以在或元素內(nèi)使用元素,內(nèi)部bean通常是匿名的,它們的Scope一般是prototype。

20、在Spring框架中如何更有效地使用JDBC?

使用SpringJDBC框架,資源管理和錯誤處理的代價都會被減輕。所以開發(fā)者只需寫statements和queries從數(shù)據(jù)存取數(shù)據(jù),JDBC也可以在Spring框架供應(yīng)的模板類的關(guān)心下更有效地被使用,這個模板叫JdbcTemplate(例子見這里here)

1)Jdb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論