欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring面試題50道,應(yīng)該至少答對(duì)30個(gè)(附答案)

  發(fā)布時(shí)間:2020-06-16 17:00:13   作者:Java小咖秀   我要評(píng)論
這篇文章主要介紹了Spring面試題50道,應(yīng)該至少答對(duì)30個(gè)(附答案),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

作為一個(gè)Java程序員,Spring沒得商量,對(duì)我們是必須會(huì)的,而且很重要,幾乎我們大多項(xiàng)目都用得它,作為一個(gè)優(yōu)質(zhì)且生態(tài)系統(tǒng)非常全面的框架,不僅在使用上很給力,源碼也有很大的學(xué)習(xí)價(jià)值。小編給大家整理了50道面試題,或者說(shuō)50個(gè)知識(shí)點(diǎn),可以先收藏起來(lái)了😊。

1.Spring框架?
Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的,Spring使用的是基本的JavaBean來(lái)完成以前只可能由EJB完成的事。從簡(jiǎn)單性、可測(cè)性和松耦合性角度而言,絕大部分Java應(yīng)用都可以用Spring。

2.Spring的整體架構(gòu)?

大約分為20個(gè)模塊。

3.Spring可以做什么?

4.Spring的優(yōu)點(diǎn)?缺點(diǎn)?
優(yōu)點(diǎn):

  • Spring屬于低侵入設(shè)計(jì)。
  • IOC將對(duì)象之間的依賴關(guān)系交給Spring,降低組件之間的耦合,實(shí)現(xiàn)各個(gè)層之間的解耦,讓我們更專注于業(yè)務(wù)邏輯。
  • 提供面向切面編程。
  • 對(duì)各種主流插件提供很好的集成支持。
  • 對(duì)事務(wù)支持的很好,只要配置即可,無(wú)須手動(dòng)控制。

缺點(diǎn):

  • 依賴反射,影響性能。

5.你能說(shuō)幾個(gè)Spring5的新特性嗎?

  • spring5整個(gè)框架基于java8
  • 支持http/2
  • Spring Web MVC支持最新API
  • Spring WebFlux 響應(yīng)式編程
  • 支持Kotlin函數(shù)式編程

6.IOC?
負(fù)責(zé)創(chuàng)建對(duì)象、管理對(duì)象(通過依賴注入)、整合對(duì)象、配置對(duì)象以及管理這些對(duì)象的生命周期。

7.什么是依賴注入?
依賴注入是Spring實(shí)現(xiàn)IoC的一種重要手段,將對(duì)象間的依賴關(guān)系的控制權(quán)從開發(fā)人員手里轉(zhuǎn)移到容器。

8.IOC注入哪幾種方式?
1.構(gòu)造器注入
2.setter注入
3.接口注入(我們幾乎不用)

9.IOC優(yōu)點(diǎn)?缺點(diǎn)?
優(yōu)點(diǎn):

  • 組件之間的解耦,提高程序可維護(hù)性、靈活性。

缺點(diǎn):

  • 創(chuàng)建對(duì)象步驟復(fù)雜,有一定學(xué)習(xí)成本。
  • 利用反射創(chuàng)建對(duì)象,效率上有損。(對(duì)于代碼的靈活性和可維護(hù)性來(lái)看,Spring對(duì)于我們的開發(fā)帶來(lái)了很大的便利,這點(diǎn)損耗不算什么哦)

10.bean的生命周期?
1.Spring 對(duì)bean進(jìn)行實(shí)例化。
2.Spring將值和bean的引用注入到 bean對(duì)應(yīng)的屬性中。
3.如果bean實(shí)現(xiàn)了BeanNameAware接口,Spring將bean的ID傳遞給setBeanName()方法。
4.如果bean實(shí)現(xiàn)了BeanFactoryAware接口, Spring將調(diào)用setBeanFactory()方法,將 bean所在的應(yīng)用引用傳入進(jìn)來(lái)。
5.如果bean實(shí)現(xiàn)了ApplicationContextAware接口,Spring將調(diào)用setApplicationContext()方法,將bean所在的應(yīng)用引用傳入進(jìn)來(lái)。
6.如果bean實(shí)現(xiàn)了BeanPostProcessor 接口,Spring將調(diào)用他們的post-ProcessBeforeInitalization()方法。
7.如果bean實(shí)現(xiàn)了InitializingBean接口,Spring將調(diào)用他們的after-PropertiesSet()方法,類似地,如果bean使用init-method聲明了初始化方法,該方法也會(huì)被調(diào)用。
8.如果bean實(shí)現(xiàn)了BeanPostProcessor接口,Spring將調(diào)用它們的post-ProcessAfterInitialization()方法。
9.此時(shí), bean已經(jīng)準(zhǔn)備就緒,可以被應(yīng)用程序使用了,他們將一直駐留在應(yīng)用上下文中,直到該應(yīng)用被銷毀。
10.如果bean實(shí)現(xiàn)了DisposableBean接口,Spring將調(diào)用它的destory()接口方法,同樣,如果bean使用destroy-method聲明了銷毀方法,該方法也會(huì)被調(diào)用。

11.Spring有幾種配置方式?

  • 基于xml
  • 基于注解
  • 基于Java
     

12.Spring中的bean有幾種scope?

  • singleton: 單例,每一個(gè)bean只創(chuàng)建一個(gè)對(duì)象實(shí)例。
  • prototype,原型,每次對(duì)該bean請(qǐng)求調(diào)用都會(huì)生成各自的實(shí)例。
  • request,請(qǐng)求,針對(duì)每次HTTP請(qǐng)求都會(huì)生成一個(gè)新的bean。表示在一次 HTTP 請(qǐng)求內(nèi)有效。
  • session,在一個(gè)http session中,一個(gè)bean定義對(duì)應(yīng)一個(gè)bean實(shí)例。
  • global session:在一個(gè)全局http session中,一個(gè)bean定義對(duì)應(yīng)一個(gè)bean實(shí)例
     

13.什么是AOP(面向切面編程)?
在軟件業(yè),AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期間動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。

14.切面有幾種類型的通知?分別是?
前置通知(Before): 目標(biāo)方法被調(diào)用之前調(diào)用通知功能。
后置通知(After): 目標(biāo)方法完成之后調(diào)用通。
返回通知(After-returning): 目標(biāo)方法成功執(zhí)行之后調(diào)用通知。
異常通知(After-throwing): 目標(biāo)方法拋出異常后調(diào)用通知。
環(huán)繞通知(Around):  在被通知的方法調(diào)用之前和調(diào)用之后執(zhí)行自定義的行為。

15.什么是連接點(diǎn) (Join point)?
連接點(diǎn)是在應(yīng)用執(zhí)行過程中能夠插入切面的一個(gè)點(diǎn)。這個(gè)點(diǎn)可以是調(diào)用方法時(shí)、拋出異常時(shí)、甚至修改一個(gè)字段時(shí)。

16.什么是切點(diǎn)(Pointcut)?
切點(diǎn)的定義會(huì)匹配通知所要織入的一個(gè)或多個(gè)連接點(diǎn)。我們通常使用明確的類和方法名稱,或是利用正則表達(dá)式定義所匹配的類和方法名稱來(lái)指定這些切點(diǎn)。有些AOP框架允許我們創(chuàng)建動(dòng)態(tài)的切點(diǎn),可以根據(jù)運(yùn)行時(shí)的決策(比如方法的參數(shù)值)來(lái)決定是否應(yīng)用通知。

17.什么是切面(Aspect)?
切面是通知和切點(diǎn)的結(jié)合。通知和切點(diǎn)共同定義了切面的全部?jī)?nèi)容。

18.織入(Weaving)?
織入是把切面應(yīng)用到目標(biāo)對(duì)象并創(chuàng)建新的代理對(duì)象的過程。切面在指定的連接點(diǎn)被織入到目標(biāo)對(duì)象中。

19.引入(Introduction)?
引入允許我們向現(xiàn)有的類添加新方法或?qū)傩浴?/p>

20.在目標(biāo)對(duì)象的生命周期里有多個(gè)點(diǎn)可以進(jìn)行織入?

  • 編譯期:切面在目標(biāo)類編譯時(shí)被織入。AspectJ的織入編譯器就是以這種方式織入切面的。
  • 類加載期:切面在目標(biāo)類加載到JVM時(shí)被織入。它可以在目標(biāo)類被引入應(yīng)用之前增強(qiáng)該目標(biāo)類的字節(jié)碼。AspectJ 5的加載時(shí)織入(load-time weaving,LTW)就支持以這種方式織入切面。
  • 運(yùn)行期:切面在應(yīng)用運(yùn)行的某個(gè)時(shí)刻被織入。一般情況下,在織入切面時(shí),AOP容器會(huì)為目標(biāo)對(duì)象動(dòng)態(tài)地創(chuàng)建一個(gè)代理對(duì)象。Spring AOP就是以這種方式織入切面的。

21.AOP動(dòng)態(tài)代理策略?

  • 如果目標(biāo)對(duì)象實(shí)現(xiàn)了接口,默認(rèn)采用JDK 動(dòng)態(tài)代理??梢詮?qiáng)制轉(zhuǎn)為CgLib實(shí)現(xiàn)AOP。
  • 如果沒有實(shí)現(xiàn)接口,采用CgLib進(jìn)行動(dòng)態(tài)代理。
     

22.什么是MVC框架?
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。
MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。

23.什么是SpringMVC?
SpringMVC是Spring框架的一個(gè)模塊。是一個(gè)基于MVC的框架。

24.SpringMVC的核心?
DispatcherServlet

25.SpringMVC的幾個(gè)組件?
DispatcherServlet : 前端控制器,也叫中央控制器。相關(guān)組件都是它來(lái)調(diào)度。
HandlerMapping : 處理器映射器,根據(jù)URL路徑映射到不同的Handler。
HandlerAdapter : 處理器適配器,按照HandlerAdapter的規(guī)則去執(zhí)行Handler。
Handler  : 處理器,由我們自己根據(jù)業(yè)務(wù)開發(fā)。
ViewResolver : 視圖解析器,把邏輯視圖解析成具體的視圖。
View : 一個(gè)接口,它的實(shí)現(xiàn)支持不同的視圖類型(freeMaker,JSP等)

26.SpringMVC工作流程?
1.用戶請(qǐng)求旅程的第一站是DispatcherServlet。
2.收到請(qǐng)求后,DispatcherServlet調(diào)用HandlerMapping,獲取對(duì)應(yīng)的Handler。
3.如果有攔截器一并返回。
4.拿到Handler后,找到HandlerAdapter,通過它來(lái)訪問Handler,并執(zhí)行處理器。
5.執(zhí)行Handler的邏輯。
6.Handler會(huì)返回一個(gè)ModelAndView對(duì)象給DispatcherServlet。
7.將獲得到的ModelAndView對(duì)象返回給DispatcherServlet。
8.請(qǐng)求ViewResolver解析視圖,根據(jù)邏輯視圖名解析成真正的View。
9.返回View給DispatcherServlet。
10.DispatcherServlet對(duì)View進(jìn)行渲染視圖。
11.DispatcherServlet響應(yīng)用戶。

27.SpringMVC的優(yōu)點(diǎn)?
1.具有Spring的特性。
2.可以支持多種視圖(jsp,freemaker)等。
3.配置方便。
4.非侵入。
5.分層更清晰,利于團(tuán)隊(duì)開發(fā)的代碼維護(hù),以及可讀性好。
Tips:Jsp目前很少有人用了。

28.單例bean是線程安全的嗎?
不是。具體線程問題需要開發(fā)人員來(lái)處理。

29.Spring從哪兩個(gè)角度實(shí)現(xiàn)自動(dòng)裝配?
組件掃描(component scanning):Spring會(huì)自動(dòng)發(fā)現(xiàn)應(yīng)用上下文中所創(chuàng)建的bean。
自動(dòng)裝配(autowiring):Spring自動(dòng)滿足bean之間的依賴。

30.自動(dòng)裝配有幾種方式?分別是?
no -  默認(rèn)設(shè)置,表示沒有自動(dòng)裝配。
byName : 根據(jù)名稱裝配。
byType : 根據(jù)類型裝配。
constructor : 把與Bean的構(gòu)造器入?yún)⒕哂邢嗤愋偷钠渌鸅ean自動(dòng)裝配到Bean構(gòu)造器的對(duì)應(yīng)入?yún)⒅小?br /> autodetect :先嘗試constructor裝配,失敗再嘗試byType方式。
default:由上級(jí)標(biāo)簽的default-autowire屬性確定。

31.說(shuō)幾個(gè)聲明Bean 的注解?

  • @Component
  • @Service
  • @Repository
  • @Controller
     

32.注入Java集合的標(biāo)簽?

  • 允許有相同的值。
  • 不允許有相同的值。
  • 鍵和值都只能為String類型。
  • < map > 鍵和值可以是任意類型。

33.「Spring支持的ORM」?

  • Hibernate
  • iBatis
  • JPA (Java Persistence API)
  • TopLink
  • JDO (Java Data Objects)
  • OJB

34.@Repository注解?
Dao 層實(shí)現(xiàn)類注解,掃描注冊(cè) bean。

35.@Value注解?
講常量、配置中的變量值、等注入到變量中。

36.@Controller注解?
定義控制器類。

37.聲明一個(gè)切面注解是哪個(gè)?
@Aspect

38.映射web請(qǐng)求的注解是?
@RequestMapping

39.@ResponseBody注解?
作用是將返回對(duì)象通過適當(dāng)?shù)霓D(zhuǎn)換器轉(zhuǎn)成置頂格式,寫進(jìn)response的body區(qū)。通常用來(lái)返回json、xml等。

40.@ResponseBody + @Controller =?
@RestController

41.接收路徑參數(shù)用哪個(gè)注解?
@PathVariable

42.@Cacheable注解?
用來(lái)標(biāo)記緩存查詢。

43.清空緩存是哪個(gè)注解?
@CacheEvict

44.@Component注解?
泛指組件,不好歸類時(shí),可以用它。

45.「BeanFactory 和 ApplicationContext」區(qū)別?

46.@Qualifier注解?
當(dāng)創(chuàng)建多個(gè)相同類型的 bean 時(shí),并且想要用一個(gè)屬性只為它們其中的一個(gè)進(jìn)行裝配,在這種情況下,你可以使用 @Qualifier 注釋和 @Autowired 注釋通過指定哪一個(gè)真正的 bean 將會(huì)被裝配來(lái)消除混亂。

47.事務(wù)的注解是?
@Transactional

48.Spring事務(wù)實(shí)現(xiàn)方式有?
聲明式:聲明式事務(wù)也有兩種實(shí)現(xiàn)方式。

xml 配置文件的方式。注解方式(在類上添加 @Transaction 注解)。
編碼式:提供編碼的形式管理和維護(hù)事務(wù)。

49.什么是事務(wù)傳播?
事務(wù)在嵌套方法調(diào)用中如何傳遞,具體如何傳播,取決于事務(wù)傳播行為。

50.Spring事務(wù)傳播行為有哪些?

參考:

《Spring in action 4》
《SPRING技術(shù)內(nèi)幕》
《Spring源碼深度解析》
《Spring5企業(yè)級(jí)開發(fā)實(shí)戰(zhàn)》
https://spring.io
百度百科

到此這篇關(guān)于Spring面試題50道,應(yīng)該至少答對(duì)30個(gè)(附答案)的文章就介紹到這了,更多相關(guān)Spring面試題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringMVC常見面試題總結(jié)(超詳細(xì)回答)

    這篇文章主要介紹了SpringMVC常見面試題總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2020-05-27
  • 一文帶你輕松應(yīng)對(duì)Springboot面試小結(jié)

    這篇文章主要介紹了一文帶你輕松應(yīng)對(duì)Springboot面試小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2020-05-12
  • 2020最新版Spring Cloud面試題

    這篇文章主要介紹了2020最新版Spring Cloud面試題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2020-03-17
  • 2020最新版Spring面試題

    這篇文章主要介紹了2020最新版Spring面試題 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2020-03-17
  • 2019 最新「Spring 全家桶」高頻面試題(小結(jié))

    這篇文章主要介紹了2019 最新「Spring 全家桶」高頻面試題(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-08-26
  • 27道高頻Spring面試題,你能答對(duì)幾個(gè)?

    這篇文章主要介紹了27道高頻Spring面試題,你能答對(duì)幾個(gè)?小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-08-08
  • Java研發(fā)面試99題(含答案):JVM+Spring+MySQL+線程池+鎖

    這篇文章主要介紹了Java研發(fā)面試99題,主要包括了JVM,Spring,MySQL,線程池,鎖等,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-07-16
  • 35道SpringBoot面試題及答案(小結(jié))

    這篇文章主要介紹了35道SpringBoot面試題及答案(小結(jié))的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-05-21
  • 49個(gè)Spring經(jīng)典面試題總結(jié)(附帶答案)

    這篇文章主要介紹了49個(gè)Spring經(jīng)典面試題總結(jié)(附帶答案)的相關(guān)資料,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-04-29
  • 騰訊這套SpringMvc面試題你懂多少知識(shí)(面試必備)

    本文詳細(xì)的介紹了SpringMvc面試題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-04-28

最新評(píng)論