前言:(開源框架學(xué)習(xí)思維導(dǎo)圖)
Spring5概述(面試題)
Spring5 是一個重要的版本,距離SpringFramework4差不多四年。在此期間,大多數(shù)增強(qiáng)都是在 SpringBoot 項(xiàng)目中完成的。
Spring 是一個開源的輕量級 Java SE(Java 標(biāo)準(zhǔn)版本)/Java EE(Java 企業(yè)版本)開發(fā)應(yīng)用框架, 其目的是用于簡化企業(yè)級應(yīng)用程序開發(fā)。應(yīng)用程序是由一組相互協(xié)作的對象組成。而在傳統(tǒng)應(yīng)用程序開發(fā)中,一個完整的應(yīng)用是由一組相互協(xié)作的對象組成。所以開發(fā)一個應(yīng)用除了要開發(fā)業(yè)務(wù)邏輯之外,最多的是關(guān)注如何使這些對象協(xié)作來完成所需功能,而且要低耦合、高內(nèi)聚。業(yè)務(wù)邏輯開發(fā)是不可避免的, 那如果有個框架出來幫我們來創(chuàng)建對象及管理這些對象之間的依賴關(guān)系。
一切從 Bean 開始
1、什么是Spring beans?
2、一個 Spring Bean 定義 包含什么?
3、如何給Spring 容器提供配置元數(shù)據(jù)?
4、你怎樣定義類的作用域?
5、解釋Spring支持的幾種bean的作用域。
6、Spring框架中的單例bean是線程安全的嗎?
7、解釋Spring框架中bean的生命周期。
8、哪些是重要的bean生命周期方法? 你能重載它們嗎?
9、什么是Spring的內(nèi)部bean?
10、在 Spring中如何注入一個java集合?
Spring IoC(面試題)
IoC——控制反轉(zhuǎn)(Inversion of Control,英文縮寫為IoC)是框架的重要特征,如果程序員清楚框架和工具箱的差別,可以無視本術(shù)語。
可以使用C語言設(shè)計(jì)框架,因此,IoC并非面向?qū)ο缶幊痰膶S眯g(shù)語。
Spring的DI/依賴注入(Dependency Injection,簡稱DI)僅僅是一個工具箱,因此與IoC沒有關(guān)系。
Spring最基礎(chǔ)的部分就是IOC,對IOC的理解程度從某個方面代表著你對Spring 的理解程度,看了網(wǎng)上的一些面試題,針對Spring IOC相關(guān)的重點(diǎn)是下面幾個:
1、Spring中Bean 的生命周期是怎么樣的?
2、Spring IOC是如何實(shí)現(xiàn)的,如何加載Bean,如何創(chuàng)建單例Bean?
3、BeanFactory和ApplicationContext之間的關(guān)系?
4、BeanFactory和FactoryBean之間的關(guān)系?
5、Spring Bean有哪些擴(kuò)展點(diǎn)?
Spring AOP(面試題)
AOP稱為面向切面編程,在程序開發(fā)中主要用來解決一些系統(tǒng)層面上的問題,比如日志,事務(wù),權(quán)限等待,Struts2的攔截器設(shè)計(jì)就是基于AOP的思想,是個比較經(jīng)典的例子。
AOP的基本概念
(1)Aspect(切面):通常是一個類,里面可以定義切入點(diǎn)和通知
(2)JointPoint(連接點(diǎn)):程序執(zhí)行過程中明確的點(diǎn),一般是方法的調(diào)用
(3)Advice(通知):AOP在特定的切入點(diǎn)上執(zhí)行的增強(qiáng)處理,有before,after,afterReturning,afterThrowing,around
(4)Pointcut(切入點(diǎn)):就是帶有通知的連接點(diǎn),在程序中主要體現(xiàn)為書寫切入點(diǎn)表達(dá)式
(5)AOP代理:AOP框架創(chuàng)建的對象,代理就是目標(biāo)對象的加強(qiáng)。Spring中的AOP代理可以使JDK動態(tài)代理,也可以是CGLIB代理,前者基于接口,后者基于子類
1、說出Spring的通知類型有哪些?
2、談?wù)勀繕?biāo)對象實(shí)現(xiàn)接口與目標(biāo)對象不實(shí)現(xiàn)接口有什么區(qū)別?
3、請描述JDK動態(tài)代理和CGLI代理的區(qū)別?
4、簡述ProxyFactoryBean的作用是什么?
5、敘述Spring中的自動代理的原理?
6、寫出代理的兩種方式分別是什么?
7、請簡述:什么是AOP?
8.、簡述AOP核心?
9、請敘述AOP事務(wù)的含義?
10、寫出創(chuàng)建代理對象需指定的三要素是什么?
Mybatis(面試題)
MyBATIS 目前提供了三種語言實(shí)現(xiàn)的版本,包括:Java、.NET以及Ruby。它提供的持久層架包括SQL Maps和Data Access Objects(DAO)。
mybatis提供一種“半自動化”的ORM實(shí)現(xiàn)。 這里的“半自動化”,是相對Hibernate等提供了全面的數(shù)據(jù)庫封裝機(jī)制的“全自動化”O(jiān)RM實(shí)現(xiàn)而言,“全自動”O(jiān)RM實(shí)現(xiàn)了POJO和數(shù)據(jù)庫表之間的映射,以及 SQL 的自動生成和執(zhí)行。而mybatis的著力點(diǎn),則在于POJO與SQL之間的映射關(guān)系。
1、JDBC編程有哪些不足之處,MyBatis是如何解決這些問題的?
2、MyBatis編程步驟是什么樣的?
3、MyBatis與Hibernate有哪些不同?
4、使用MyBatis的mapper接口調(diào)用時有哪些要求?
5、SqlMapConfig.xml中配置有哪些內(nèi)容?
6、簡單的說一下MyBatis的一級緩存和二級緩存?
7、Mapper編寫有哪幾種方式?
8、Mybatis是如何進(jìn)行分頁的?分頁插件的原理是什么?
9、簡述Mybatis的插件運(yùn)行原理,以及如何編寫一個插件。
10、Mybatis執(zhí)行批量插入,能返回?cái)?shù)據(jù)庫主鍵列表嗎?
Spring MVC(面試題)
在Spring MVC應(yīng)用程序中,模型通常由POJO對象組成,它在業(yè)務(wù)層中被處理,在持久層中被持久化。視圖通常是用JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSTL)編寫的JSP模板??刂破鞑糠质怯蒬ispatcher servlet負(fù)責(zé),在本教程中我們將會了解更多它的相關(guān)細(xì)節(jié)。
一些開發(fā)人員認(rèn)為業(yè)務(wù)層和DAO層類是MVC模型組件的一部分。我對此持有不同的意見。我不認(rèn)為業(yè)務(wù)層及DAO層類為MVC框架的一部分。通常一個web應(yīng)用是3層架構(gòu),即數(shù)據(jù)-業(yè)務(wù)-表示。MVC實(shí)際上是表示層的一部分。
1、 講下SpringMvc的執(zhí)行流程
2、SpringMvc中函數(shù)的返回值是什么.
3、SpringMvc怎么處理返回值的
4、SpringMVC怎么樣設(shè)定重定向和轉(zhuǎn)發(fā)的
5、SpringMvc用什么對象從后臺向前臺傳遞數(shù)據(jù)的
6、SpringMvc中有個類把視圖和數(shù)據(jù)都合并的一起的,叫什么
7、怎么樣把ModelMap里面的數(shù)據(jù)放入Session里面
9、SpringMvc怎么和AJAX相互調(diào)用的
10、當(dāng)一個方法向AJAX返回特殊對象,譬如Object,List等,需要做什么處理
面試資料:
需要面試題匯總(可私信我免費(fèi)領(lǐng)取答案)私信【面試資料】即可免費(fèi)領(lǐng)取
附加java開發(fā)的資料(面試資源與經(jīng)驗(yàn)總結(jié),Dubbo、Redis、設(shè)計(jì)模式、Netty、zookeeper、Spring cloud、分布式、高并發(fā)等架構(gòu)技術(shù)視頻教程資料,架構(gòu)思維導(dǎo)圖,以及面試資料,了解最新的學(xué)習(xí)動態(tài);了解最新的阿里、京東招聘資訊)