JAVA面試解析之Spring

語言: CN / TW / HK

先說下自己的情況,本科,也算不上很好的大學,專業也是Java相關的,可能在學校確實學的太少,畢業之後感覺啥都不會,還不如我身邊的朋友不是這個專業的去培訓機構學幾個月的好,面試都回答不上來的感覺。

後來通過朋友介紹找到了一位老哥,他給我總結了很多重點和要點,我順利通過了面試,接下來我也想分享給大家幫助大家一起進步~(看到最後)

01 Spring 概述

  • 1. 什麼是spring?
  • 2. 使用Spring框架的好處是什麼?
  • 3. Spring由哪些模組組成?
  • 4. 核心容器(應用上下文) 模組。
  • 5. BeanFactory – BeanFactory 實現舉例。
  • 6. XMLBeanFactory
  • 7. 解釋AOP模組
  • 8. 解釋JDBC抽象和DAO模組。
  • 9. 解釋物件/關係對映整合模組。
  • 10. 解釋WEB 模組。
  • 11. Spring配置檔案
  • 12. 什麼是Spring IOC 容器?
  • 13. IOC的優點是什麼?
  • 14. ApplicationContext通常的實現是什麼?
  • 15. Bean 工廠和 Application contexts 有什麼區別?
  • 16. 一個Spring的應用看起來xiang像什麼?
  • 需要的小夥伴私信滴滴我即可~

1. 什麼是spring?

Spring 是個java企業級應用的開源開發框架。Spring主要用來開發Java應用,但是有些擴充套件是針對構建J2EE平臺的web應用。Spring 框架目標是簡化Java企業級應用開發,並通過POJO為基礎的程式設計模型促進良好的程式設計習慣。

2. 使用Spring框架的好處是什麼?

  • 輕量: Spring 是輕量的,基本的版本大約2MB。
  • 控制反轉: Spring通過控制反轉實現了鬆散耦合,物件們給出它們的依賴,而不是建立或查詢依賴的物件們。
  • 面向切面的程式設計(AOP): Spring支援面向切面的程式設計,並且把應用業務邏輯和系統服務分開。
  • 容器: Spring 包含並管理應用中物件的生命週期和配置。
  • MVC框架 :Spring的WEB框架是個精心設計的框架,是Web框架的一個很好的替代品。
  • 事務管理: Spring 提供一個持續的事務管理介面,可以擴充套件到上至本地事務下至全域性事務(JTA)。
  • 異常處理: Spring 提供方便的API把具體技術相關的異常(比如由JDBC,Hibernate or JDO丟擲的)轉化為一致的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 實現舉例。

Bean 工廠是工廠模式的一個實現,提供了控制反轉功能,用來把應用的配置和依賴從正真的應用程式碼中分離。

最常用的BeanFactory 實現是XmlBeanFactory 類。

6. XMLBeanFactory

最常用的就是

org.springframework.beans.factory.xml.XmlBeanFactory ,它根據XML檔案中的定義載入beans。該容器從XML 檔案讀取配置元資料並用它去建立一個完全配置的系統或應用。

02 依賴注入

  • 18. 什麼是Spring的依賴注入?
  • 19. 有哪些不同型別的IOC(依賴注入)方式?
  • 20. 哪種依賴注入方式你建議使用,構造器注入,還是 Setter方法注入?

03 Spring beans

  • 21.什麼是Spring beans?
  • 22. 一個 Spring Bean 定義 包含什麼?
  • 23. 如何給Spring 容器提供配置元資料?
  • 24. 你怎樣定義類的作用域?
  • 25. 解釋Spring支援的幾種bean的作用域。
  • 26. Spring框架中的單例bean是執行緒安全的嗎?
  • 27. 解釋Spring框架中bean的生命週期。
  • 28. 哪些是重要的bean生命週期方法? 你能過載它們嗎?
  • 29. 什麼是Spring的內部bean?
  • 30. 在 Spring中如何注入一個java集合?
  • 31. 什麼是bean裝配?
  • 32. 什麼是bean的自動裝配?
  • 33. 解釋不同方式的自動裝配 。
  • 34.自動裝配有哪些侷限性 ?
  • 35. 你可以在Spring中注入一個null 和一個空字串嗎?

21.什麼是Spring beans?

Spring beans 是那些形成Spring應用的主幹的java物件。它們被Spring IOC容器初始化,裝配,和管理。這些beans通過容器中配置的元資料建立。比如,以XML檔案中 的形式定義。

Spring 框架定義的beans都是單件beans。在bean tag中有個屬性”singleton”,如果它被賦為TRUE,bean 就是單件,否則就是一個 prototype bean。預設是TRUE,所以所有在Spring框架中的beans 預設都是單件。

22. 一個 Spring Bean 定義 包含什麼?

一個Spring Bean 的定義包含容器必知的所有配置元資料,包括如何建立一個bean,它的生命週期詳情及它的依賴。

23. 如何給Spring 容器提供配置元資料?

這裡有三種重要的方法給Spring 容器提供配置元資料。

  • XML配置檔案。
  • 基於註解的配置。
  • 基於java的配置。

04 Spring註解

  • 36. 什麼是基於Java的Spring註解配置? 給一些註解的例子.
  • 37. 什麼是基於註解的容器配置?
  • 38. 怎樣開啟註解裝配?
  • 39. @Required 註解
  • 40. @Autowired 註解
  • 41. @Qualifier 註解

36. 什麼是基於Java的Spring註解配置? 給一些註解的例子.

基於Java的配置,允許你在少量的Java註解的幫助下,進行你的大部分Spring配置而非通過XML檔案。

以@Configuration 註解為例,它用來標記類可以當做一個bean的定義,被Spring IOC容器使用。另一個例子是@Bean註解,它表示此方法將要返回一個物件,作為一個bean註冊進Spring應用上下文。

37. 什麼是基於註解的容器配置?

相對於XML檔案,註解型的配置依賴於通過位元組碼元資料裝配元件,而非尖括號的宣告。

開發者通過在相應的類,方法或屬性上使用註解的方式,直接元件類中進行配置,而不是使用xml表述bean的裝配關係。

05 Spring資料訪問

  • 42.在Spring框架中如何更有效地使用JDBC?
  • 43. JdbcTemplate
  • 44. Spring對DAO的支援
  • 45. 使用Spring通過什麼方式訪問Hibernate?
  • 46. Spring支援的ORM
  • 47.如何通過HibernateDaoSupport將Spring和Hibernate結合起來?
  • 48. Spring支援的事務管理型別
  • 49. Spring框架的事務管理有哪些優點?
  • 50. 你更傾向用那種事務管理型別?

42.在Spring框架中如何更有效地使用JDBC?

使用SpringJDBC 框架,資源管理和錯誤處理的代價都會被減輕。所以開發者只需寫statements 和 queries從資料存取資料,JDBC也可以在Spring框架提供的模板類的幫助下更有效地被使用,這個模板叫JdbcTemplate (例子見這裡here)

43. JdbcTemplate

JdbcTemplate 類提供了很多便利的方法解決諸如把資料庫資料轉變成基本資料型別或物件,執行寫好的或可呼叫的資料庫操作語句,提供自定義的資料錯誤處理。

44. Spring對DAO的支援

  • Spring對資料訪問物件(DAO)的支援旨在簡化它和資料訪問技術如JDBC,Hibernate or JDO 結合使用。這使我們可以方便切換持久層。編碼時也不用擔心會捕獲每種技術特有的異常。

06 Spring面向切面程式設計(AOP)

  • 51. 解釋AOP
  • 52. Aspect 切面
  • 53. 在Spring AOP 中,關注點和橫切關注的區別是什麼?
  • 54. 連線點
  • 55. 通知
  • 56. 切點
  • 57. 什麼是引入?
  • 58. 什麼是目標物件?
  • 59. 什麼是代理?
  • 60. 有幾種不同型別的自動代理?
  • 61. 什麼是織入。什麼是織入應用的不同點?
  • 62. 解釋基於XML Schema方式的切面實現。
  • 63. 解釋基於註解的切面實現

51. 解釋AOP

面向切面的程式設計,或AOP, 是一種程式設計技術,允許程式模組化橫向切割關注點,或橫切典型的責任劃分,如日誌和事務管理。

52. Aspect 切面

AOP核心就是切面,它將多個類的通用行為封裝成可重用的模組,該模組含有一組API提供橫切功能。比如,一個日誌模組可以被稱作日誌的AOP切面。根據需求的不同,一個應用程式可以有若干切面。在Spring AOP中,切面通過帶有@Aspect註解的類實現。

53. 在Spring AOP 中,關注點和橫切關注的區別是什麼?

關注點是應用中一個模組的行為,一個關注點可能會被定義成一個我們想實現的一個功能。

橫切關注點是一個關注點,此關注點是整個應用都會使用的功能,並影響整個應用,比如日誌,安全和資料傳輸,幾乎應用的每個模組都需要的功能。因此這些都屬於橫切關注點。

07 Spring MVC

  • 64. 什麼是Spring的MVC框架?
  • 65. DispatcherServlet
  • 66. WebApplicationContext
  • 67. 什麼是Spring MVC框架的控制器?
  • 68. @Controller 註解
  • 69. @RequestMapping 註解

64. 什麼是Spring的MVC框架?

Spring 配備構建Web 應用的全功能MVC框架。Spring可以很便捷地和其他MVC框架整合,如Struts,Spring 的MVC框架用控制反轉把業務物件和控制邏輯清晰地隔離。它也允許以宣告的方式把請求引數和業務物件繫結。

以及 JAVA核心知識整理(PDF) :JVM, JAVA集合,JAVA多執行緒併發 ,JAVA基礎, Spring原理,微服務 ,Netty與RPC,網路,日誌,Zookeeper, Kafka,RabbitMQ,MongoDB設計模式,負載均衡,資料庫 ,一致性雜湊,JAVA演算法,資料結構,加密演算法,分散式快取

希望可以幫助到大家,需要的滴滴我哦~