雖名為"面試題",但一定要面試前才刷面試題嘛?
其實在日常工作中多刷一些面試題對自己也是挺有幫助的.
為此收集了160道Spring中高級面試題給大家學習,可查漏補缺!! !

一、Spring 面試題(基礎篇)
1.什么是 spring?
2.使用 Spring 框架的好處是什么?
3.Spring 由哪些模塊組成?
4.核心容器(應用上下文) 模塊。
5.BeanFactory – BeanFactory 實現(xiàn)舉例。
6.XMLBeanFactory
7.解釋 AOP 模塊
8.解釋 JDBC 抽象和 DAO 模塊。
9.解釋對象/關系映射集成模塊。
10.解釋 WEB 模塊。
11.Spring 配置文件
12.什么是 Spring IOC 容器?
13.IOC 的優(yōu)點是什么?
14.ApplicationContext 通常的實現(xiàn)是什么?
15.Bean 工廠和 Application contexts 有什么區(qū)別?
16.一個 Spring 的應用看起來象什么?
17.什么是 Spring 的依賴注入?
18.有哪些不同類型的 IOC(依賴注入)方式?
19.哪種依賴注入方式你建議使用,構(gòu)造器注入,還是 Setter 方法注入?
20.什么是 Spring beans?
21.一個 Spring Bean 定義 包含什么?
22.你怎樣定義類的作用域?
23.解釋 Spring 支持的幾種 bean 的作用域。
24.Spring 框架中的單例 bean 是線程安全的嗎?
25.解釋 Spring 框架中 bean 的生命周期。
26.哪些是重要的 bean 生命周期方法?
27.什么是 Spring 的內(nèi)部 bean?
28.在 Spring 中如何注入一個 java 集合?
29.什么是 bean 裝配?
30.什么是 bean 的自動裝配?
31.解釋不同方式的自動裝配 。
32.自動裝配有哪些局限性 ?
33.你可以在 Spring 中注入一個 null 和一個空字符串嗎?
34.什么是基于 Java 的 Spring 注解配置?
35.什么是基于注解的容器配置?
36.怎樣開啟注解裝配?
37.@Required 注解
38.@Autowired 注解
39.@Qualifier 注解
40.在 Spring 框架中如何更有效地使用 JDBC?
41.JdbcTemplate
42.Spring 對 DAO 的支持
43.使用 Spring 通過什么方式訪問 Hibernate?
44.Spring 支持的 ORM
45.如何通過 HibernateDaoSupport 將 Spring 和 Hibernate 結(jié)合起來?
46.Spring 支持的事務管理類型
47.Spring 框架的事務管理有哪些優(yōu)點?
48.你更傾向用那種事務管理類型?
49.解釋 AOP
50.Aspect 切面
51.在 Spring AOP 中,關注點和橫切關注的區(qū)別是什 么?
52.連接點
53.通知
54.切點
55.什么是引入?
56.什么是目標對象?
57.什么是代理?
58.有幾種不同類型的自動代理?
59.什么是織入。什么是織入應用的不同點?
60.解釋基于 XML Schema 方式的切面實現(xiàn)。
61.解釋基于注解的切面實現(xiàn)
62.什么是 Spring 的 MVC 框架?
63.DispatcherServlet
64.WebApplicationContext
65.什么是 Spring MVC 框架的控制器?
66.@Controller 注解 67.@RequestMapping 注解
部分參考答案
1. 什么是 spring?
Spring 是個 java 企業(yè)級應用的開源開發(fā)框架。
Spring 主要用來開發(fā) Java 應用,但是有些擴展是針對構(gòu)建 J2EE 平臺的 web 應用。
Spring 框架目標是簡化 Java 企業(yè)級應用開發(fā),并通過 POJO 為基礎的編程模型促進 良好的編程習慣。
2. 使用 Spring 框架的好處是什么?
輕量:Spring 是輕量的,基本的版本大約 2MB。 控制反轉(zhuǎn):Spring 通過控制反轉(zhuǎn)實現(xiàn)了松散耦合,對象 們給出它們的依賴,而不是創(chuàng)建或查找依賴的對象們。 面向切面的編程(AOP):Spring 支持面向切面的編程, 并且把應用業(yè)務邏輯和系統(tǒng)服務分開。 容器:Spring 包含并管理應用中對象的生命周期和配 置。 MVC 框架:Spring 的 WEB 框架是個精心設計的框架, 是 Web 框架的一個很好的替代品。 事務管理:Spring 提供一個持續(xù)的事務管理接口,可以 擴展到上至本地事務下至全局事務(JTA)。 異常處理:Spring 提供方便的 API 把具體技術(shù)相關的異 常(比如由 JDBC,Hibernate or JDO 拋出的)轉(zhuǎn)化為 一致的 unchecked 異常。
3. Spring 由哪些模塊組成?
以下是 Spring 框架的基本模塊:
- Core module Bean module Context module Expression Language module JDBC module ORM module OXM module Java Messaging Service(JMS) module Transaction module Web module Web-Servlet module Web-Struts module Web-Portlet module
4. 核心容器(應用上下文) 模塊。
這是基本的 Spring 模塊,提供 spring 框架的基礎功 能,BeanFactory 是 任何以 spring 為基礎的應用的核 心。Spring 框架建立在此模塊之上,它使 Spring 成為 一個容器。
5. BeanFactory – BeanFactory 實現(xiàn)舉例。
Bean 工廠是工廠模式的一個實現(xiàn),提供了控制反轉(zhuǎn)功 能,用來把應用的配置和依賴從正真的應用代碼中分 離。最常用的 BeanFactory 實現(xiàn)是 XmlBeanFactory 類。
二、Spring面試題(高級篇)
1.什么是 Spring 框架?Spring 框架有哪些主要模塊?
2.使用 Spring 框架能帶來哪些好處?
3.什么是控制反轉(zhuǎn)(IOC)?什么是依賴注入?
4.請解釋下 Spring 框架中的 IoC?
5.BeanFactory 和 ApplicationContext 有什么區(qū)別?
6.Spring 有幾種配置方式?
7.如何用基于 XML 配置的方式配置 Spring?
8.如何用基于 Java 配置的方式配置 Spring?
9.怎樣用注解的方式配置 Spring?
10.請解釋 Spring Bean 的生命周期?
11.Spring Bean 的作用域之間有什么區(qū)別?
12.什么是 Spring inner beans?
13.Spring 框架中的單例 Beans 是線程安全的么?
14.請舉例說明如何在 Spring 中注入一個 Java Collection?
15.如何向 Spring Bean 中注入一個
16.請解釋 Spring Bean 的自動裝配?
17.請解釋自動裝配模式的區(qū)別?
18.如何開啟基于注解的自動裝配?
19.請舉例解釋@Required 注解?
20.請舉例解釋@Autowired 注解?
21.請舉例說明@Qualifier 注解?
22.構(gòu)造方法注入和設值注入有什么區(qū)別?
23.Spring 框架中有哪些不同類型的事件?
24.FileSystemResource 和 ClassPathResource 有何區(qū)別?
25.Spring 框架中都用到了哪些設計模式?
部分參考答案
1. 什么是 Spring 框架?Spring 框架有哪些主要模塊?
Spring 框架是一個為 Java 應用程序的開發(fā)提供了綜合、廣泛的基礎性支持的 Java 平臺。Spring 幫助開發(fā)者解決了開發(fā)中基礎性的問題,使得開發(fā)人員可以專注于應用程序的開發(fā)。Spring 框架本身亦是按照設計模式精心打造,這使得我們可以在開發(fā)環(huán)境中安心的集成 Spring 框架,不必擔心 Spring 是如何在后臺進行工作的。
2. Spring 有幾種配置方式?
將 Spring 配置到應用開發(fā)中有以下三種方式: 基于 XML 的配置 基于注解的配置 基于 Java 的配置
3. 請解釋 Spring Bean 的自動裝配?
在 Spring 框架中,在配置文件中設定 bean 的依賴關系是一個很好的機制,Spring 容器還可以自動裝配合作關系 bean 之間的關聯(lián)關系。這意味著 Spring 可以通過向 Bean Factory 中注入的方式自動搞定 bean 之間的依賴關系。自動裝配可以設置在每個 bean 上,也可以設定在特定的 bean 上。
4. Spring 框架中有哪些不同類型的事件?
Spring 的 ApplicationContext 提供了支持事件和代碼中監(jiān)聽器的功能。 我們可以創(chuàng)建 bean 用來監(jiān)聽在ApplicationContext 中發(fā)布的事件。ApplicationEvent 類和在 ApplicationContext 接口中處理的事件,如果一個 bean實現(xiàn)了 ApplicationListener 接口,當一個 ApplicationEvent 被發(fā)布以后,bean 會自動被通知。
5. Spring 框架中都用到了哪些設計模式?
Spring 框架中使用到了大量的設計模式,下面列舉了比較有代表性的: 代理模式——在 AOP 和 remoting 中被用的比較多。 單例模式——在 spring 配置文件中定義的 bean 默認為單例模 式。 模板方法——用來解決代碼重復的問題。比如. RestTemplate, JmsTemplate, JpaTemplate。 前端控制器——Spring 提供了 DispatcherServlet 來對請求進行 分發(fā)。 視圖幫助(View Helper )——Spring 提供了一系列的 JSP 標簽, 高效宏來輔助將分散的代碼整合在視圖里。 依賴注入——貫穿于 BeanFactory / ApplicationContext 接口 的核心理念。 工廠模式——BeanFactory 用來創(chuàng)建對象的實例。
三、Spring面試題(進階篇)
1.談談你對 spring IOC 和 DI 的理解,它們有什么區(qū)別?
2.BeanFactory 接口和 ApplicationContext 接口有什么區(qū)別 ?
3.spring 配置 bean 實例化有哪些方式?
4.簡單的說一下 spring 的生命周期?
5.請介紹一下 Spring 框架中 Bean 的生命周期和作用域
6.Bean 注入屬性有哪幾種方式?
7.什么是 AOP,AOP 的作用是什么?
8.Spring 的核心類有哪些,各有什么作用?
9.Spring 里面如何配置數(shù)據(jù)庫驅(qū)動?
10.Spring 里面 applicationContext.xml 文件能不能改成其他文件名?
11.Spring 里面如何定義 hibernate mapping?
12.Spring 如何處理線程并發(fā)問題?
13.為什么要有事物傳播行為?
14.介 紹 一 下 Spring 的 事 物 管 理
15.解釋一下 Spring AOP 里面的幾個名詞 16.通知有哪些類型?
部分參考答案
1. 談談你對 spring IOC 和 DI 的理解,它們有什么區(qū)別?
IoC控制反轉(zhuǎn),指將對象的創(chuàng)建權(quán),反轉(zhuǎn)到Spring容器,DI依賴注入,指Spring創(chuàng)建對象的過程中,將對象依賴屬性通過配置進行注入
2. Bean 注入屬性有哪幾種方式?
spring支持構(gòu)造器注入和setter方法注入構(gòu)造器注入,通過元素完成注入setter方法注入,通過元素完成注入【開發(fā)中常用方式】
3. 什么是 AOP,AOP 的作用是什么?
面向切面編程( AOP)提供另外一種角度來思考程序結(jié)構(gòu),通過這種方式彌補了面向?qū)ο缶幊? OOP)的不足,除了類( classes )以外,AOP提供了切面。切面對關注點進行模塊化,例如橫切多個類型和對象的事務管理 Spring的一個關鍵的組件就是AOP框架,可以自由選擇是否使用AOP提供聲明式企業(yè)服務,特別是為了替代EJB聲明式服務。最重要的服務是聲明性事務管理,這個服務建立在Spring 的抽象事物管理之上。允許用戶實現(xiàn)自定義切面,用AOP來完善OOP的使用,可以把Spring AOP看作是對Spring的一種增強
4. Spring的核心類有哪些,各有什么作用?
BeanFactory——產(chǎn)生一個新的實例,可以實現(xiàn)單例模式 BeanWrapper——提供統(tǒng)一的get及set方法 ApplicationContext——提供框架的實現(xiàn),包括BeanFactory的所有功能
四、Spring Boot面試題
1.什么是 Spring Boot?
2.Spring Boot 有哪些優(yōu)點?
3.什么是 JavaConfig?
4.如何重新加載 Spring Boot 上的更改,而無需重新啟動服務器?
5.Spring Boot 中的監(jiān)視器是什么?
6.如何在 Spring Boot 中禁用 Actuator 端點安全性?
7.如何在自定義端口上運行 Spring Boot 應用程序?
8.什么是 YAML?
9.如何實現(xiàn) Spring Boot 應用程序的安全性?
10.如何集成 Spring Boot 和 ActiveMQ?
11.如何使用 Spring Boot 實現(xiàn)分頁和排序?
12.什么是 Swagger?你用 Spring Boot 實現(xiàn)了它嗎?
13.什么是 Spring Profiles?
14.什么是 Spring Batch?
15.什么是 FreeMarker 模板?
16.如何使用 Spring Boot 實現(xiàn)異常處理?
17.您使用了哪些 starter maven 依賴項?
18.什么是 CSRF 攻擊?
19.什么是 WebSockets?
20.什么是 AOP?
21.什么是 Apache Kafka?
22.我們?nèi)绾伪O(jiān)視所有 Spring Boot 微服務?
部分參考答案:
1. 什么是 Spring Boot?
多年來,隨著新功能的增加,spring 變得越來越復雜。只需訪問Spring Projects頁面,我們就會看到可以在我們的應用程序中使用的所有 Spring 項目的不同功能。如果必 須啟動一個新的 Spring 項目,我們必須添加構(gòu)建路徑或添加 Maven 依賴關系,配置應用程 序服務器,添加 spring 配置。因此,開始一個新的 spring 項目需要很多努力,因為我們現(xiàn) 在必須從頭開始做所有事情。 Spring Boot 是解決這個問題的方法。Spring Boot 已經(jīng)建立在現(xiàn)有 spring 框架之上。使用 spring 啟動,我們避免了之前我們必須做的所有樣板代碼和配置。因此,Spring Boot 可以 幫助我們以最少的工作量,更加健壯地使用現(xiàn)有的 Spring 功能。
2. Spring Boot 中的監(jiān)視器是什么?
Spring boot actuator 是 spring 啟動框架中的重要功能之一。Spring boot 監(jiān)視器可幫助您訪 問生產(chǎn)環(huán)境中正在運行的應用程序的當前狀態(tài)。有幾個指標必須在生產(chǎn)環(huán)境中進行檢查和 監(jiān)控。即使一些外部應用程序可能正在使用這些服務來向相關人員觸發(fā)警報消息。監(jiān)視器 模塊公開了一組可直接作為 HTTP URL 訪問的 REST 端點來檢查狀態(tài)。
3. 如何在 Spring Boot 中禁用 Actuator 端點安全性?
默認情況下,所有敏感的 HTTP 端點都是安全的,只有具有 ACTUATOR 角色的用戶才能訪 問它們。安全性是使用標準的 HttpServletRequest.isUserInRole方法實施的。 我們可以使用 management.security.enabled = false來禁用安全性。只有在執(zhí)行機構(gòu)端點在防火墻后訪問時,才建議禁用安全性。
4. 如何實現(xiàn) Spring Boot 應用程序的安全性?
為了實現(xiàn) Spring Boot 的安全性,我們使用 spring-boot-starter-security 依賴項,并且必須添 加安全配置。它只需要很少的代碼。配置類將必須擴展 WebSecurityConfigurerAdapter 并覆 蓋其方法。
5. 如何集成 Spring Boot 和 ActiveMQ?
對于集成 Spring Boot 和 ActiveMQ,我們使用spring-boot-starter-activemq 依賴關系。 它只需要很少的配置,并且不需要樣板代碼。
五、Spring Cloud面試題
1.什么是Spring Cloud? 2.使用Spring Cloud有什么優(yōu)勢? 3.服務注冊和發(fā)現(xiàn)是什么意思? 4.Spring Cloud如何實現(xiàn)? 5.負載平衡的意義什么? 6.什么是Hystrix?它如何實現(xiàn)容錯? 7.什么是Hystrix斷路器?我們需要它嗎? 8.什么是Netflix Feign?它的優(yōu)點是什么? 9.什么是Spring Cloud Bus?我們需要它嗎?
1. 什么是Spring Cloud?
Spring cloud流應用程序啟動器是基于Spring Boot的Spring集成應用程序,提供與外部系統(tǒng)的集成。 Spring cloud Task,一個生命周期短暫的微服務框架,用于快速構(gòu)建執(zhí)行有限數(shù)據(jù)處理的應用程序。
2. 服務注冊和發(fā)現(xiàn)是什么意思?Spring Cloud如何實現(xiàn)?
當我們開始一個項目時,我們通常在屬性文件中進行所有的配置。隨著越來越多的服務開發(fā)和部署,添加 和修改這些屬性變得更加復雜。有些服務可能會下降,而某些位置可能會發(fā)生變化。手動更改屬性可能會 產(chǎn)生問題。 Eureka服務注冊和發(fā)現(xiàn)可以在這種情況下提供幫助。由于所有服務都在Eureka服務器上注 冊并通過調(diào)用Eureka服務器完成查找,因此無需處理服務地點的任何更改和處理。
3. 負載平衡的意義什么?
在計算中,負載平衡可以改善跨計算機,計算機集群,網(wǎng)絡鏈接,中央處理單元或磁盤驅(qū)動器等多種計算 資源的工作負載分布。負載平衡旨在優(yōu)化資源使用,最大化吞吐量,最小化響應時間并避免任何單一資源 的過載。使用多個組件進行負載平衡而不是單個組件可能會通過冗余來提高可靠性和可用性。負載平衡通 常涉及專用軟件或硬件,例如多層交換機或域名系統(tǒng)服務器進程。
六、Spring MVC面試題
1.什么是 SpringMvc? 2.Spring MVC 的優(yōu)點? 3.SpringMVC 工作原理? 4.SpringMVC 流程? 5.SpringMvc 的控制器是不是單例模式,如果是,有什么問題,怎么解決? 6.如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區(qū)別有哪些? 7.SpingMvc 中的控制器的注解一般用那個,有沒有別的注解可以替代? 8.@RequestMapping 注解用在類上面有什么作用? 9.怎么樣把某個請求映射到特定的方法上面? 10.如果在攔截請求中,我想攔截 get 方式提交的方法,怎么配置? 11.怎么樣在方法里面得到 Request,或者 Session? 12.我想在攔截的方法里面得到從前臺傳入的參數(shù),怎么得到? 13.如果前臺有很多個參數(shù)傳入,并且這些參數(shù)都是一個對象的,那么怎么樣快速得到這個對 象? 14.SpringMvc 中函數(shù)的返回值是什么? 15.SpringMVC 怎么樣設定重定向和轉(zhuǎn)發(fā)的? 16.SpringMvc 用什么對象從后臺向前臺傳遞數(shù)據(jù)的? 17.SpringMvc 中有個類把視圖和數(shù)據(jù)都合并的一起的,叫什么? 18.怎么樣把 ModelMap 里面的數(shù)據(jù)放入 Session 里面? 19.SpringMvc 怎么和 AJAX 相互調(diào)用的? 20.當一個方法向 AJAX 返回特殊對象,譬如 Object,List 等,需要做什么處理? 21.SpringMvc 里面攔截器是怎么寫的 22.講下 SpringMvc 的執(zhí)行流程
1. 什么是 SpringMvc?
SpringMvc 是 spring 的一個模塊,基于 MVC 的一個框架,無需中間整合層來整合
2. SpringMVC 工作原理?
- 客戶端發(fā)送請求到 DispatcherServlet DispatcherServlet 查詢 handlerMapping 找到處理請求的 Controller Controller 調(diào)用業(yè)務邏輯后,返回 ModelAndView DispatcherServlet 查詢 ModelAndView,找到指定視圖 視圖將結(jié)果返回到客戶端
3. SpringMvc 的控制器是不是單例模式,如果是,有什么問題,怎么解決?
是單例模式,所以在多線程訪問的時候有線程安全問題,不要用同步,會影響性能的,解決 方案是在控制器里面不能寫字段
4. SpingMvc 中的控制器的注解一般用那個,有沒有別的注解可以替代?
一般用@Conntroller 注解,表示是表現(xiàn)層,不能用用別的注解代替。
5. @RequestMapping 注解用在類上面有什么作用?
是一個用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所 有響應
請求的方法都是以該地址作為父路徑。
七、Spring學習書籍
Spring源碼分析

Spring Cloud微服務進階

深入理解Spring+Cloud與微服務構(gòu)建

除了上面spring知識點分享外,還收集了各方面的,當前公司的,還有自己收集總結(jié)的面試題,下面的圖片截取的有pdf,有如果有需要的自取.
各大公司面試題集合:

簡歷模板:

鏈接: https://pan.baidu.com/s/1DO6XGkbmak7KIt6Y7JQqyw
提取碼:fgj6
不知道會不會失效,如果失效點擊(778490892)或者掃描下面二維碼,進群獲取,鏈接補發(fā)不過來,謝謝。

最后
歡迎大家評論區(qū)一起交流,相互提升;整理資料不易,如果喜歡文章記得點個贊哈,感謝大家支持?。?!