2020年最新Java框架的面試題總結(jié)

2020年最新Java框架的面試題總結(jié)

天津卓眾教育      2022-04-05 18:35:01     8

2020年最新Java框架的面試題總結(jié),  什么是Spring框架?Spring框架有哪些主要模塊?  Spring框架是一個(gè)為Java應(yīng)用程序的開發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的Ja

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹


  什么是Spring框架?Spring框架有哪些主要模塊?


  Spring框架是一個(gè)為Java應(yīng)用程序的開發(fā)提供了綜合、廣泛的基礎(chǔ)性支持的Java平臺(tái)。Spring幫助開發(fā)者解決了開發(fā)中基礎(chǔ)性的問(wèn)題,使得開發(fā)人員可以專注于應(yīng)用程序的開發(fā)。Spring框架本身亦是按照設(shè)計(jì)模式精心打造,這使得我們可以在開發(fā)環(huán)境中安心的集成Spring框架,不必?fù)?dān)心Spring是如何在后臺(tái)進(jìn)行工作的。


  Spring框架至今已集成了20多個(gè)模塊。這些模塊主要被分如下圖所示的核心容器、數(shù)據(jù)訪問(wèn)/集成,、Web、AOP(面向切面編程)、工具、消息和測(cè)試模塊。



  使用Spring框架能帶來(lái)哪些好處?


  DependencyInjection(DI)方法使得構(gòu)造器和JavaBeanproperties文件中的依賴關(guān)系一目了然。與EJB容器相比較,IoC容器更加趨向于輕量級(jí)。這樣一來(lái)IoC容器在有限的內(nèi)存和CPU資源的情況下進(jìn)行應(yīng)用程序的開發(fā)和發(fā)布就變得十分有利。Spring并沒(méi)有閉門造車,Spring利用了已有的技術(shù)比如ORM框架、logging框架、J2EE、Quartz和JDKTimer,以及其他視圖技術(shù)。Spring框架是按照模塊的形式來(lái)組織的。由包和類的編號(hào)就可以看出其所屬的模塊,開發(fā)者僅僅需要選用他們需要的模塊即可。要測(cè)試一項(xiàng)用Spring開發(fā)的應(yīng)用程序十分簡(jiǎn)單,因?yàn)闇y(cè)試相關(guān)的環(huán)境代碼都已經(jīng)囊括在框架中了。更加簡(jiǎn)單的是,利用JavaBean形式的POJO類,可以很方便的利用依賴注入來(lái)寫入測(cè)試數(shù)據(jù)。Spring的Web框架亦是一個(gè)精心設(shè)計(jì)的WebMVC框架,為開發(fā)者們?cè)趙eb框架的選擇上提供了一個(gè)除了主流框架比如Struts、過(guò)度設(shè)計(jì)的、不流行web框架的以外的有力選項(xiàng)。Spring提供了一個(gè)便捷的事務(wù)管理接口,適用于小型的本地事物處理(比如在單DB的環(huán)境下)和復(fù)雜的共同事物處理(比如利用JTA的復(fù)雜DB環(huán)境)。


  什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?


  控制反轉(zhuǎn)是應(yīng)用于軟件工程領(lǐng)域中的,在運(yùn)行時(shí)被裝配器對(duì)象來(lái)綁定耦合對(duì)象的一種編程技巧,對(duì)象之間耦合關(guān)系在編譯時(shí)通常是未知的。在傳統(tǒng)的編程方式中,業(yè)務(wù)邏輯的流程是由應(yīng)用程序中的早已被設(shè)定好關(guān)聯(lián)關(guān)系的對(duì)象來(lái)決定的。在使用控制反轉(zhuǎn)的情況下,業(yè)務(wù)邏輯的流程是由對(duì)象關(guān)系圖來(lái)決定的,該對(duì)象關(guān)系圖由裝配器負(fù)責(zé)實(shí)例化,這種實(shí)現(xiàn)方式還可以將對(duì)象之間的關(guān)聯(lián)關(guān)系的定義抽象化。而綁定的過(guò)程是通過(guò)“依賴注入”實(shí)現(xiàn)的。


  控制反轉(zhuǎn)是一種以給予應(yīng)用程序中目標(biāo)組件更多控制為目的設(shè)計(jì)范式,并在我們的實(shí)際工作中起到了有效的作用。


  依賴注入是在編譯階段尚未知所需的功能是來(lái)自哪個(gè)的類的情況下,將其他對(duì)象所依賴的功能對(duì)象實(shí)例化的模式。這就需要一種機(jī)制用來(lái)激活相應(yīng)的組件以提供特定的功能,所以依賴注入是控制反轉(zhuǎn)的基礎(chǔ)。否則如果在組件不受框架控制的情況下,框架又怎么知道要?jiǎng)?chuàng)建哪個(gè)組件?


  在Java中依然注入有以下三種實(shí)現(xiàn)方式:


  1.構(gòu)造器注入2.Setter方法注入3.接口注入


  Spring有幾種配置方式?


  將Spring配置到應(yīng)用開發(fā)中有以下三種方式:


  1.基于XML的配置2.基于注解的配置3.基于Java的配置


  SpringBean的作用域之間有什么區(qū)別?


  Spring容器中的bean可以分為5個(gè)范圍。所有范圍的名稱都是自說(shuō)明的,但是為了避免混淆,我還是來(lái)解釋一下:singleton:這種bean范圍是默認(rèn)的,這種范圍確保不管接受到多少個(gè)請(qǐng)求,每個(gè)容器中只有一個(gè)bean的實(shí)例,單例的模式由beanfactory自身來(lái)維護(hù)。prototype:原形范圍與單例范圍相反,為每一個(gè)bean請(qǐng)求提供一個(gè)實(shí)例。request:在請(qǐng)求bean范圍內(nèi)會(huì)每一個(gè)來(lái)自客戶端的網(wǎng)絡(luò)請(qǐng)求創(chuàng)建一個(gè)實(shí)例,在請(qǐng)求完成以后,bean會(huì)失效并被垃圾回收器回收。Session:與請(qǐng)求范圍類似,確保每個(gè)session中有一個(gè)bean的實(shí)例,在session過(guò)期后,bean會(huì)隨之失效。global-session:global-session和Portlet應(yīng)用相關(guān)。當(dāng)你的應(yīng)用部署在Portlet容器中工作時(shí),它包含很多portlet。如果你想要聲明讓所有的portlet共用全局的存儲(chǔ)變量的話,那么這全局變量需要存儲(chǔ)在global-session中。全局作用域與Servlet中的session作用域效果相同。


  Spring框架中的單例Beans是線程安全的么?


  Spring框架并沒(méi)有對(duì)單例bean進(jìn)行任何多線程的封裝處理。關(guān)于單例bean的線程安全和并發(fā)問(wèn)題需要開發(fā)者自行去搞定。但實(shí)際上,大部分的Springbean并沒(méi)有可變的狀態(tài)(比如Serview類和DAO類),所以在某種程度上說(shuō)Spring的單例bean是線程安全的。如果你的bean有多種狀態(tài)的話(比如ViewModel對(duì)象),就需要自行保證線程安全。最淺顯的解決辦法就是將多態(tài)bean的作用域由“singleton”變更為“prototype”



    以上就是天津卓眾教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“2020年最新Java框架的面試題總結(jié)”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


Java面試題

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。