前言
![](http://static.javashuo.com/static/loading.gif)
還在機械地打代碼?咱們不少開發者在開發 Spring 的程序的時候,不少的狀況下,都是被動的接受了前輩們爲咱們作好的 Spring 特性案例。這樣以來,確實在很大的程度上減小了咱們開發的成本,可是也同時喪失了一個極好的學習機會,從而限制咱們開發員的橫向擴展能力。程序員
只知道如何使用,殊不知道作了什麼,那麼你註定只能是一個碼農。Spring 框架幾乎集成一半 Javaweb 開發的江山,可是你只知道如何寫,不知道爲何要這麼寫,也不知道要如何優化。web
Spring 做爲一個輕量級的 Java 開發框架,將面向接口的編程思想貫穿整個 Java 系統應用,所以在 Java 面試中常被提。本文經過代理模式和Spring面試中的一些問題來聊一聊Spring框架中的重要知識點!面試
代理模式相關問題
- 爲何須要代理模式?
- 講講靜態代理模式的優勢及其瓶頸?
- 對Java 接口代理模式的實現原理的理解?
- 如何使用 Java 反射實現動態代理?
- Java 接口代理模式的指定加強?
- 談談對Cglib 類加強動態代理的實現?
Spring AOP相關問題
- 什麼是 AOP?
- point cut,advice,Join point是什麼?
- join point 和 point cut 的區別?
- 怎麼理解面向切面編程的切面?
- 談談對SpringAOP Weaving(織入)的理解?
- 談談SpringAOP Introduction(引入)的理解?
- 講解OOP與AOP的簡單對比?
- 講解JDK 動態代理和 CGLIB 代理原理以及區別?
- 講解Spring 框架中基於 Schema 的 AOP 實現原理?
- 講解Spring 框架中如何基於 AOP 實現的事務管理?
Spring IOC相關問題
- 什麼是 IOC?
- 談談對控制反轉的設計思想的理解?
- 怎麼理解 Spring IOC 容器?
- Spring 中有多少種 IOC 容器?
- Spring IOC 怎麼管理 Bean 之間的依賴關係,怎麼避免循環依賴?
- 對Spring IOC 容器的依賴注入的理解?
- 說說對Spring IOC 的單例模式和高級特性?
- BeanFactory 和 FactoryBean 有什麼區別,BeanFactory 和 ApplicationContext 又有什麼不一樣?
- Spring 在 Bean 建立過程當中是如何解決循環依賴的?
- 談談Spring Bean 建立過程當中的設計模式?
註解相關問題
- 註解是一種什麼樣的編程思想?
- 爲什麼可以直接使用@Autowired進行依賴注入?是如何工做的?
- Spring 是如何經過@AutoWired 自動注入 Bean 屬性和 Map,List 集合的?
- @Required 是如何起到檢查xml裏面屬性有沒有被配置的?
- Spring 框架是如何把標註@Component 的 Bean 注入到容器?
- @Configuration,@ComponentScan,@Import,@Bean 註解是是如何工做的?
- 使用@PropertySource 引入配置文件,那麼配置文件裏面的配置是如何被註冊到 Spring 環境裏面的?
- 講解如何經過自定義註解實現一個簡單的樹形文檔生成?
事務相關問題
- 在 XML 裏面配置了一個 SqlSessionFactoryBean 後,其究竟作了什麼?
- 在 XML 裏面配置了一個 MapperScannerConfigurer 後,其究竟作了什麼?
- 在執行 Mapper 接口的查詢方法後,發生了什麼?
- <tx:advice/>、<aop:config> 標籤如何建立事務切面的?
- 標籤添加後爲什麼就可使用註解式事務了?
- 爲何會報 Transaction rolled back because it has been marked as rollback-only 異常?
- Transactional 註解是否能夠加在 private、protected 方法上?
- 事務的傳播屬性到底有什麼用,嵌套事務到底又是怎麼一回事?
- 爲何拋出了異常,事務卻沒有回滾?
- Spring 事務是如何保證線程安全的?
如何系統正確的學習
我認爲有三個維度來講明:這個框架是爲了解決什麼問題而誕生的?這個框架的核心思想是什麼?這個框架適合應用到哪些場景?說到思想,我以爲編程的靈魂就是思想,沒有思想的編程和鹹魚沒什麼區別。「不要重複造輪子」,當時聽了趕腳這句話挺高大上的,如今我認爲這句話只能在某一方面是正確了。sql
首先我來講一下爲何要學會造輪子--由於你會造輪子後,用別人的輪子時纔會明白其原理,用的時候纔會駕輕就熟,若是你對一個框架的理解只是停留在用,用的多熟練的階段的話,那麼你就是一個「碼畜」,別人隨時能夠替代你。或許有人會說,項目時間緊根本不容許你寫一個輪子、你寫的還有那些大牛們寫的好嗎等理由反駁。但我想說的是:我沒說項目中非得用本身寫的輪子,本身寫的輪子不必定要和別人比,由於造輪子的目的是要理解這些輪子的思想。編程
說這麼多其實就是想告訴你們學習框架要理解框架的底層的原理,要掌握的就是最經常使用的原理。在這我分享一個開源框架的系統的思惟學習樹圖給你們,但願能給有須要的朋友提供一些幫助!設計模式
![](http://static.javashuo.com/static/loading.gif)
結語
上文提到的關於Spring的面試問題和常見問題我總結成了面試題及視頻資料在羣裏免費分享還有更多關於Kafka、Mysql、Tomcat、Docker、MyBatis、Nginx、Netty、Dubbo、Redis、Spring cloud、分佈式、高併發、性能調優、微服務等架構技術資料和架構面試題資料分享給有須要的朋友!安全
![阿里的Spring框架面試題到底有多難?這五大問題你又掌握了多少!](http://static.javashuo.com/static/loading.gif)
資料領取方式:性能優化
推薦一個程序員學習秋秋羣:856443934。羣裏有分享的視頻,還有思惟導圖
羣公告有視頻,都是乾貨的,你能夠下載來看。主要分享分佈式架構、高可擴展、高性能、高併發、性能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分佈式項目實戰學習架構師視頻。架構