你先回去等通知
面試官:看你簡歷寫的不錯,先簡單自我介紹下?
我:大佬好!我是小程,工作時長兩年半,目前負責在公司打雜,啊不
,負責維護公司的兩個項目…
面試官:hmmm,你們項目中Spring用的多麼?
我:還可以,基本上都用得到。(平時都是百度著用用啊)
面試官:那你講講使用Spring的AOP具體是指什麼?
我:(這個我背過答案!)AOP是面向切面編程,能夠將那些與業務無關,卻為業務模塊所共同調用的邏輯或責任封裝起來,便於減少系統的重複代碼,降低模塊間的耦合度,並有利於未來的可擴展性和可維護性。
面試官:嗯,理解的很棒啊,
那你知道有哪些Spring的擴展點嗎?
我:擴展點?BeanDefinition?BeanFactory?
面試官:還有呢?
我:沒了呀。
面試官:好吧,你知道市面上哪些主流框架擴展了Spring,如何擴展?
我:我知道MyBatis擴展了Spring!如何擴展的…呃,不太清楚,其他的沒怎麼接觸過,不太瞭解。我也…
面試官:我懂了,那你簡單闡述一下Spring bean的生命週期。
我:這個,我只記得過程有點複雜,具體的,記不清了…
面試官:那再問你一點別的吧,
Spring 是否支持循環依賴;哪些情況下支持?
Spring體系中的beanDefinition怎麼理解?
講講 Spring在出來循環依賴為什麼需要使用三級緩存?
Spring體系中有些後置處理器?能講講主要作用不?
我:這個…
面試官看了看錶:喲,已經下午3點了,這麼晚了啊?今天就到這裡吧,你有什麼問題要問我嗎?
我:我掛了嗎?
面試官:沒沒沒,你先回去等通知吧!
Spring作為現在最流行java 開發技術,其內部源碼設計非常優秀。如果你不會Spring,那麼很可能面試官會讓你回家等通知。
Spring是什麼?
有一個工地,幾百號人在用鐵鍬鏟子挖坑。
如果開一輛挖掘機來,用一天時間乾的活就相當於一個工人一個月的工作量。而且這個挖掘機是免費開源的,不用花錢買,僅僅需要學習掌握如何操作。
你會如何選擇?
這幾百號人的工地就是企業應用項目實施團隊,而挖掘機就是Spring。
Spring框架為開發Java應用程序提供了全面的基礎架構支持。Spring包含了一些很好的功能,如依賴注入和開箱即用的模塊:
Spring JDBC
Spring MVC
Spring Security
Spring AOP
Spring ORM
Spring Test
這些模塊能極大縮短應用程序的開發時間,提高我們的工作效率。
![如果你不懂Spring,那麼大廠面試官也不會懂你為什麼敢來面試?](http://p2.ttnews.xyz/loading.gif)
Spring bean的生命週期
但是現在很多程序員對於Spring的理解只停留在很淺的層面。很多人只關注自己用的那部分代碼的邏輯,而並不真正去理解框架。
如果你不懂Spring,那麼大廠面試官也不會懂你為什麼敢來面試?
以下為 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 環境)。
3、請解釋下Spring框架中的IoC?
Spring中的or g. spr ingfr amework. beans包和org. spr ingframework. context包構成了Spring框架IoC容器的基礎。
BeanFactory接口提供了一個先進的配置機制,使得任何類型的對象的配置成為可能。
ApplicationContex接口對BeanFactory (是一個子接口)進行了擴展,在BeanFactory的基礎上添加了其他功能,比如與Spring的AOP更容易集成,也提供了處理message resource的機制(用於國際化)、事件傳播以及應用層的特別配置,比如針對Web應用的WebApplicationContext。
org. springf ramework. beans. factory. BeanFac tory是Spring IoC容器的具體實現,用來包裝和管理前面提到的各種bean。BeanFactory接口是SpringIoC容器的核心接口。
IOC:把對象的創建、初始化、銷燬交給spring來管理,而不是由開發者控制,實現控制反轉。
4、BeanFactory和ApplicationContext有什麼區別?
BeanFactory可以理解為含有bean集合的工廠類。BeanFactory 包含了種bean的定義,以便在接收到客戶端請求時將對應的bean實例化。
BeanFactory還能在實例化對象的時生成協作類之間的關係。此舉將bean自身與bean客戶端的配置中解放出來。BeanFactory 還包含了bean生命週期的控制,調用客戶端的初始化方法( initialization methods)和銷燬方法( destruction methods)。
從表面.上看,application context如同bean factory一樣具有bean定義、bean關聯關係的設置,根據請求分發bean的功能。但applicationcontext在此基礎上還提供了其他的功能。
1. 提供了支持國際化的文本消息.
2.統- -的資源文件讀取方式
3.已在監聽器中註冊的bean的事件
以下是三種較常見的ApplicationContext實現方式:
1、ClassPathXmlApplicationContext:從classpath的XML配置文件中讀取上下文,並生成上下文定義。應用程序,上下文從程序環境變量中
ApplicationContext context = new
ClassPathXmlAppl icat ionContext(“bean. xml”);
2、FileSystemXmlApplicationContext :由文件系統中的XML配置文件讀取上下文。
Appl icationContext context = new
FileSys temXmlApplicationContext(“bean. xml" );
3、XmIWebApplicationContext:由Web應用的XML文件讀取上下文。
4.AnnotationConfigApplicationContext(基於Java配置啟動容器)
![如果你不懂Spring,那麼大廠面試官也不會懂你為什麼敢來面試?](http://p2.ttnews.xyz/loading.gif)
5、如何用於XML配的方式配tSpring?
在Spring框架中,依賴和服務需要在專門的配置文件來實現,我常用的XML格式的配置文件。這些配置文件的格式通常用<beans>開頭,然後- -系列的bean定義和專門的應用配置選項組成。/<beans>
SpringXML配置的主要目的時候是使所有的Spring組件都可以用xmI文件的形式來進行配置。這意味著不會出現其他的Spring配置類型(比如聲明的方式或基於Java Class的配置方式)Spring的XML配置方式是使用被Spring命名空間的所支持的一系列的XML標籤來實現的。Spring有以下主要的命名空間: context、 beans. jdbc、 tx、 aop、 mvc和aso.
如:
<beans>
閱讀更多 互聯網架構小馬哥 的文章