Spring全家桶面試分享(BAT向)

java驢友 發佈 2020-04-02T23:28:18+00:00

Spring框架是一個為 Java 應用程式的開發提供了綜合、廣泛的基礎性支持的 Java 平台。SpringMvc 是 spring 的一個模塊,基於 MVC 的一個框架,無需中間整合層來整合。

前言

相比於前幾年來說,現在的面試難度提升了不少。你說說現在程式設計師這麼多,你投遞的公司可能與你一起投遞的就有300人,可人家只招5人,那怎麼辦?簡歷PASS掉一大批,然後面試再PASS掉一大批。從這樣來看,現在流行說的:「面試造火箭,工作擰螺絲」還是很有道理的,提高面試難度只是為了從很多人中招到自己需要的那些人。

今天在這裡分享的是一套Spring面試專題集合。其中包括了Spring、SpringBoot、SpringCloud、SpringMVC四個面試專題文檔,都是經過BAT面試實戰精選過的重點內容。

Spring是一個開源框架,它由Rod Johnson創建。Spring框架自誕生以來一直備受開發者青睞,它是為了解決企業應用開發的複雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。

需要的朋友轉發文章關注然後私信回復【面試】立即獲取。

以下為 spring 常見面試問題:

  1. 什麼是 Spring 框架?Spring 框架有哪些主要模塊
  2. 使用 Spring 框架能帶來哪些好處
  3. 什麼是控制反轉(IOC)?什麼是依賴注入
  4. 請解釋下 Spring 框架中的 IoC
  5. BeanFactory 和 ApplicationContext 有什麼區別
  6. Spring 有幾種配置方式
  7. 如何用基於 XML 配置的方式配置 Spring
  8. 如何用基於 Java 配置的方式配置 Spring
  9. 怎樣用註解的方式配置 Spring
  10. 請解釋 Spring Bean 的生命周期
  11. Spring Bean 的作用域之間有什麼區別
  12. 什麼是 Spring inner beans
  13. Spring 框架中的單例 Beans 是線程安全的麼
  14. 請舉例說明如何在 Spring 中注入一個 Java Collection
  15. 如何向 Spring Bean 中注入一個 Java.util.Properties
  16. 請解釋 Spring Bean 的自動裝配
  17. 請解釋自動裝配模式的區別
  18. 如何開啟基於註解的自動裝配
  19. 請舉例解釋@Required 註解
  20. 請舉例解釋@Autowired 註解
  21. 請舉例說明@Qualifier 註解
  22. 構造方法注入和設值注入有什麼區別
  23. Spring 框架中有哪些不同類型的事件
  24. FileSystemResource 和 ClassPathResource 有何區別
  25. 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面試專題

  1. Spring Boot 的優點有
  2. 什麼是 JavaConfig
  3. 如何重新加載 Spring Boot 上的更改,而無需重新啟動伺服器
  4. Spring Boot 中的監視器是什麼
  5. 如何在 Spring Boot 中禁用 Actuator 端點安全性
  6. 如何在自定義埠上運行 Spring Boot 應用程式
  7. 什麼是 YAML
  8. 如何實現 Spring Boot 應用程式的安全性
  9. 如何集成 Spring Boot 和 ActiveMQ
  10. 如何使用 Spring Boot 實現分頁和排序
  11. 什麼是 Swagger?你用 Spring Boot 實現了它嗎
  12. 什麼是 Spring Profiles
  13. 什麼是 Spring Batch
  14. 什麼是 FreeMarker 模板
  15. 如何使用 Spring Boot 實現異常處理
  16. 您使用了哪些 starter maven 依賴項
  17. 什麼是 CSRF 攻擊
  18. 什麼是 WebSockets
  19. 什麼是 AOP
  20. 什麼是 Apache Kafka
  21. 我們如何監視所有 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面試專題

  1. 使用 Spring Cloud 有什麼優勢
  2. 服務註冊和發現是什麼意思?Spring Cloud 如何實現
  3. 負載平衡的意義什麼
  4. 什麼是 Hystrix?它如何實現容錯
  5. 什麼是 Hystrix 斷路器?我們需要它嗎
  6. 什麼是 Netflix Feign?它的優點是什麼
  7. 什麼是 Spring Cloud Bus?我們需要它嗎

面試答案:

1、什麼是 Spring Cloud?

  • Spring cloud 流應用程式啟動器是基於 Spring Boot 的 Spring 集成應用程式,提供與外部系統的集成。
  • Spring cloud Task,一個生命周期短暫的微服務框架,用於快速構建執行有限數據處理的應用程式。

2、使用 Spring Cloud 有什麼優勢?

  • 使用 Spring Boot 開發分布式微服務時,我們面臨以下問題
  • 與分布式系統相關的複雜性-這種開銷包括網絡問題,延遲開銷,帶寬問題,安全問題。
  • 服務發現-服務發現工具管理群集中的流程和服務如何查找和互相交談。它涉及一個服務目錄,在該目錄中註冊服務,然後能夠查找並連接到該目錄中的服務。
  • 冗餘-分布式系統中的冗餘問題。
  • 負載平衡 --負載平衡改善跨多個計算資源的工作負荷,諸如計算機,計算機集群,網絡鏈路,中央處理單元,或磁碟驅動器的分布。
  • 性能-問題 由於各種運營開銷導致的性能問題。
  • 部署複雜性-Devops 技能的要求。

SpringMVC面試專題

  1. 什麼是 SpringMvcSpring MVC 的優點
  2. SpringMVC 工作原理
  3. SpringMVC 流程
  4. SpringMvc 的控制器是不是單例模式,如果是,有什麼問題,怎麼解決
  5. 如果你也用過 struts2.簡單介紹下 springMVC 和 struts2 的區別有哪些
  6. SpingMvc 中的控制器的註解一般用那個,有沒有別的註解可以替代
  7. @RequestMapping 註解用在類上面有什麼作用
  8. 怎麼樣把某個請求映射到特定的方法上面
  9. 如果在攔截請求中,我想攔截 get 方式提交的方法,怎麼配置
  10. 怎麼樣在方法裡面得到 Request,或者 Session
  11. 我想在攔截的方法裡面得到從前台傳入的參數,怎麼得到
  12. 如果前台有很多個參數傳入,並且這些參數都是一個對象的,那麼怎麼樣快速得到這個對象
  13. SpringMvc 中函數的返回值是什麼
  14. SpringMVC 怎麼樣設定重定向和轉發的
  15. SpringMvc 用什麼對象從後台向前台傳遞數據的
  16. SpringMvc 中有個類把視圖和數據都合併的一起的,叫什麼
  17. 怎麼樣把 ModelMap 裡面的數據放入 Session 裡面
  18. SpringMvc 怎麼和 AJAX 相互調用的
  19. 當一個方法向 AJAX 返回特殊對象,譬如 Object,List 等,需要做什麼處理
  20. SpringMvc 裡面攔截器是怎麼寫的
  21. 講下 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,找到指定視圖
  • 視圖將結果返回到客戶端

獲取原文件以及更多資源請關注轉發分享後,後台私信回復【面試】獲取全家桶原文件領取地址。


關鍵字: