前言
相比於前幾年來說,現在的面試難度提升了不少。你說說現在程式設計師這麼多,你投遞的公司可能與你一起投遞的就有300人,可人家只招5人,那怎麼辦?簡歷PASS掉一大批,然後面試再PASS掉一大批。從這樣來看,現在流行說的:「面試造火箭,工作擰螺絲」還是很有道理的,提高面試難度只是為了從很多人中招到自己需要的那些人。
今天在這裡分享的是一套Spring面試專題集合。其中包括了Spring、SpringBoot、SpringCloud、SpringMVC四個面試專題文檔,都是經過BAT面試實戰精選過的重點內容。
Spring是一個開源框架,它由Rod Johnson創建。Spring框架自誕生以來一直備受開發者青睞,它是為了解決企業應用開發的複雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。
需要的朋友轉發文章關注然後私信回復【面試】立即獲取。
以下為 spring 常見面試問題:
- 什麼是 Spring 框架?Spring 框架有哪些主要模塊
- 使用 Spring 框架能帶來哪些好處
- 什麼是控制反轉(IOC)?什麼是依賴注入
- 請解釋下 Spring 框架中的 IoC
- BeanFactory 和 ApplicationContext 有什麼區別
- Spring 有幾種配置方式
- 如何用基於 XML 配置的方式配置 Spring
- 如何用基於 Java 配置的方式配置 Spring
- 怎樣用註解的方式配置 Spring
- 請解釋 Spring Bean 的生命周期
- Spring Bean 的作用域之間有什麼區別
- 什麼是 Spring inner beans
- Spring 框架中的單例 Beans 是線程安全的麼
- 請舉例說明如何在 Spring 中注入一個 Java Collection
- 如何向 Spring Bean 中注入一個 Java.util.Properties
- 請解釋 Spring Bean 的自動裝配
- 請解釋自動裝配模式的區別
- 如何開啟基於註解的自動裝配
- 請舉例解釋@Required 註解
- 請舉例解釋@Autowired 註解
- 請舉例說明@Qualifier 註解
- 構造方法注入和設值注入有什麼區別
- Spring 框架中有哪些不同類型的事件
- FileSystemResource 和 ClassPathResource 有何區別
- Spring 框架中都用到了哪些設計模式
面試答案:
1、什麼是 Spring 框架?Spring 框架有哪些主要模塊?
- Spring 框架是一個為 Java 應用程式的開發提供了綜合、廣泛的基礎性支持的 Java 平台。
- Spring 幫助開發者解決了開發中基礎性的問題,使得開發人員可以專注於應用程式的發。
- Spring 框架本身亦是按照設計模式精心打造,這使得我們可以在開發環境中安心的集成Spring 框架,不必擔心 Spring 是如何在後台進行工作的。
- Spring 框架至今已集成了 20 多個模塊。這些模塊主要被分如下圖所示的核心容器、數據訪問/集成,、Web、AOP(面向切面編程)、工具、消息和測試模塊。
2、使用 Spring 框架能帶來哪些好處?
下面列舉了一些使用 Spring 框架帶來的主要好處:
- Dependency Injection(DI) 方法使得構造器和 JavaBean properties 文件中的依賴關係一 目瞭然。
- 與 EJB 容器相比較,IoC 容器更加趨向於輕量級。這樣一來 IoC 容器在有限的內存和 CPU資 源的情況下進行應用程式的開發和發布就變得十分有利。
- Spring 並沒有閉門造車,Spring 利用了已有的技術比如 ORM 框架、logging 框架、J2EE、Quartz 和 JDK Timer,以及其他視圖技術。
- Spring 框架是按照模塊的形式來組織的。由包和類的編號就可以看出其所屬的模塊,開發者僅僅需要選用他們需要的模塊即可。
- 要測試一項用 Spring 開發的應用程式十分簡單,因為測試相關的環境代碼都已經囊括在框架中了。更加簡單的是,利用 JavaBean 形式的 POJO 類,可以很方便的利用依賴注入來寫入測試數據。
- Spring 的 Web 框架亦是一個精心設計的 Web MVC 框架,為開發者們在 web 框架的選擇上提供了一個除了主流框架比如 Struts、過度設計的、不流行 web 框架的以外的有力選項。
- Spring 提供了一個便捷的事務管理接口,適用於小型的本地事物處理(比如在單 DB 的環境 下)和複雜的共同事物處理(比如利用 JTA 的複雜 DB 環境)。
由於篇幅限制,太長看下去會很乏味,也會影響閱讀體驗,下面展現將以圖片形式展示。
SpringBoot面試專題
- Spring Boot 的優點有
- 什麼是 JavaConfig
- 如何重新加載 Spring Boot 上的更改,而無需重新啟動伺服器
- Spring Boot 中的監視器是什麼
- 如何在 Spring Boot 中禁用 Actuator 端點安全性
- 如何在自定義埠上運行 Spring Boot 應用程式
- 什麼是 YAML
- 如何實現 Spring Boot 應用程式的安全性
- 如何集成 Spring Boot 和 ActiveMQ
- 如何使用 Spring Boot 實現分頁和排序
- 什麼是 Swagger?你用 Spring Boot 實現了它嗎
- 什麼是 Spring Profiles
- 什麼是 Spring Batch
- 什麼是 FreeMarker 模板
- 如何使用 Spring Boot 實現異常處理
- 您使用了哪些 starter maven 依賴項
- 什麼是 CSRF 攻擊
- 什麼是 WebSockets
- 什麼是 AOP
- 什麼是 Apache Kafka
- 我們如何監視所有 Spring Boot 微服務
面試答案:
1、什麼是 Spring Boot?
多年來,隨著新功能的增加,spring 變得越來越複雜。只需訪問 https://spring.io/projects頁面,我們就會看到可以在我們的應用程式中使用的所有 Spring 項目的不同功能。如果必須啟動一個新的 Spring 項目,我們必須添加構建路徑或添加 Maven 依賴關係,配置應用程式伺服器,添加 spring 配置。因此,開始一個新的 spring 項目需要很多努力,因為我們現在必須從頭開始做所有事情。
Spring Boot 是解決這個問題的方法。Spring Boot 已經建立在現有 spring 框架之上。使用spring 啟動,我們避免了之前我們必須做的所有樣板代碼和配置。因此,Spring Boot 可以幫助我們以最少的工作量,更加健壯地使用現有的 Spring 功能。
2、Spring Boot 有哪些優點?
Spring Boot 的優點有:
- 減少開發,測試時間和努力。
- 使用 JavaConfig 有助於避免使用 XML。
- 避免大量的 Maven 導入和各種版本衝突。
- 提供意見發展方法。
- 通過提供默認值快速開始開發。
- 沒有單獨的 Web 伺服器需要。這意味著你不再需要啟動 Tomcat,Glassfish 或其他任何東 西。
- 需要更少的配置 因為沒有 web.xml 文件。只需添加用@ Configuration 注釋的類,然後添加用@Bean 注釋的方法,Spring 將自動加載對象並像以前一樣對其進行管理。您甚至可以將 @Autowired 添加到 bean 方法中,以使 Spring 自動裝入需要的依賴關係中。 基於環境的配置 使用這些屬性,您可以將您正在使用的環境傳遞到應用程式:- Dspring.profiles.active = {enviornment}。在加載主應用程式屬性文件後,Spring 將在 (application{environment} .properties)中加載後續的應用程式屬性文件。
SpringCloud面試專題
- 使用 Spring Cloud 有什麼優勢
- 服務註冊和發現是什麼意思?Spring Cloud 如何實現
- 負載平衡的意義什麼
- 什麼是 Hystrix?它如何實現容錯
- 什麼是 Hystrix 斷路器?我們需要它嗎
- 什麼是 Netflix Feign?它的優點是什麼
- 什麼是 Spring Cloud Bus?我們需要它嗎
面試答案:
1、什麼是 Spring Cloud?
- Spring cloud 流應用程式啟動器是基於 Spring Boot 的 Spring 集成應用程式,提供與外部系統的集成。
- Spring cloud Task,一個生命周期短暫的微服務框架,用於快速構建執行有限數據處理的應用程式。
2、使用 Spring Cloud 有什麼優勢?
- 使用 Spring Boot 開發分布式微服務時,我們面臨以下問題
- 與分布式系統相關的複雜性-這種開銷包括網絡問題,延遲開銷,帶寬問題,安全問題。
- 服務發現-服務發現工具管理群集中的流程和服務如何查找和互相交談。它涉及一個服務目錄,在該目錄中註冊服務,然後能夠查找並連接到該目錄中的服務。
- 冗餘-分布式系統中的冗餘問題。
- 負載平衡 --負載平衡改善跨多個計算資源的工作負荷,諸如計算機,計算機集群,網絡鏈路,中央處理單元,或磁碟驅動器的分布。
- 性能-問題 由於各種運營開銷導致的性能問題。
- 部署複雜性-Devops 技能的要求。
SpringMVC面試專題
- 什麼是 SpringMvcSpring MVC 的優點
- SpringMVC 工作原理
- SpringMVC 流程
- SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決
- 如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些
- SpingMvc 中的控制器的註解一般用那個,有沒有別的註解可以替代
- @RequestMapping 註解用在類上面有什麼作用
- 怎麼樣把某個請求映射到特定的方法上面
- 如果在攔截請求中,我想攔截 get 方式提交的方法,怎麼配置
- 怎麼樣在方法裡面得到 Request,或者 Session
- 我想在攔截的方法裡面得到從前台傳入的參數,怎麼得到
- 如果前台有很多個參數傳入,並且這些參數都是一個對象的,那麼怎麼樣快速得到這個對象
- SpringMvc 中函數的返回值是什麼
- SpringMVC 怎麼樣設定重定向和轉發的
- SpringMvc 用什麼對象從後台向前台傳遞數據的
- SpringMvc 中有個類把視圖和數據都合併的一起的,叫什麼
- 怎麼樣把 ModelMap 裡面的數據放入 Session 裡面
- SpringMvc 怎麼和 AJAX 相互調用的
- 當一個方法向 AJAX 返回特殊對象,譬如 Object,List 等,需要做什麼處理
- SpringMvc 裡面攔截器是怎麼寫的
- 講下 SpringMvc 的執行流程
面試答案:
1、什麼是 SpringMvc?
SpringMvc 是 spring 的一個模塊,基於 MVC 的一個框架,無需中間整合層來整合。
2、Spring MVC 的優點:
- 它是基於組件技術的.全部的應用對象,無論控制器和視圖,還是業務對象之類的都是 java 組件.並且和 Spring 提供的其他基礎結構緊密集成.
- 不依賴於 Servlet API(目標雖是如此,但是在實現的時候確實是依賴於 Servlet 的)
- 可以任意使用各種視圖技術,而不僅僅局限於 JSP
- 支持各種請求資源的映射策略
- 它應是易於擴展的
3、SpringMVC 工作原理?
- 客戶端發送請求到 DispatcherServlet
- DispatcherServlet 查詢 handlerMapping 找到處理請求的 Controller
- Controller 調用業務邏輯後,返回 ModelAndView
- DispatcherServlet 查詢 ModelAndView,找到指定視圖
- 視圖將結果返回到客戶端
獲取原文件以及更多資源請關注轉發分享後,後台私信回復【面試】獲取全家桶原文件領取地址。