如果要進大廠,演算法、底層、專案經驗都要刷,猛哥以后會給大家更新各種面試題……
如果要進大廠,專案經驗、底層演算法、網路、資料機構等都要狂刷……
原來我進大廠之前就是這么干的,刷專案,刷題,
孟哥以后會給大家更新各種面試資料,走起!

前面,我們已經整理Spring、設計模式、資料結構和演算法、mysql等的面試題:
1,??爆肝!整理了一周的Spring面試大全【含答案】,吊打Java面試官【建議收藏】!??
2,??肝完了,一天掌握資料結構和演算法面試題,吊打面試官,建議收藏??
3,??集合很簡單?開什么玩笑?肝了一周,全是精華,萬字講解!面試再不怕集合問題了!!!??
4,肝完了,總結了SpringBoot與快取的知識點,快速掌握
5,Mysql面試大全,看完可以吊打面試官!!!
6,入計算機專業的師弟師妹,別再迷茫了,我整理一份CS的學習路線大全!幫你超越大部分的同學!
昨天小伙伴給我說看了面試題,拿到了京東的offer,大家繼續努力呀,

如果你想進大廠,一定要有非常明確的信念:
我必須進去!一定進去!
別猶豫猶豫的,整天自我否定,總有人要贏,贏得人為什么不是我呢???
我非常欣賞衡水中學的教學模式,我們普通人沒有別的逆襲方式,就是努力,就是干!!!!

廢話不多說!
今天猛哥給大家整理一波Mybatis、SprigMvc、Spring DataJpa的面試題:
目錄
Mybatis的面試題:
Q1:Mybatis 的優缺點?
Q2:Mybatis 的 XML ?件有哪些標簽屬性?
Q3:Mybatis 的?級快取是什么?
Q4:Mybatis 的?級快取是什么?
Q5:Mybatis #{}和${}的區別?
Q6、MyBatis實作一對多有幾種方式,怎么操作的?
Spring Data JPA ?試題:
Q1:ORM 是什么?
Q2:JPA 如何使??
Q3:JPA 物體類相關注解有哪些?
Q4:物件導航查詢是什么?
Spring MVC面試題:
Q1:Spring MVC 的處理流程?
Q2:Spring MVC 有哪些組件?
Q3:Spring MVC 的相關注解?
Spring的面試:
Q1:AOP 是什么?
Q2:AOP 的相關注解有哪些?
Q3:AOP 的相關術語有什么?
Q4:AOP 的程序?
Mybatis的面試題:
Q1:Mybatis 的優缺點?
優點:
相? JDBC 減少了?量代碼量,減少冗余代碼,
使?靈活,SQL 陳述句寫在 XML ?,從程式代碼中徹底分離,降低了耦合度,便于管理,提供 XML 標簽,?持撰寫動態 SQL 陳述句,
提供映射標簽,?持物件與資料庫的 ORM 欄位映射關系,
缺點:
SQL 陳述句撰寫?作量較?,尤其是欄位和關聯表多時,
SQL 陳述句依賴于資料庫,導致資料庫移植性差,不能隨意更換資料庫,
Q2:Mybatis 的 XML ?件有哪些標簽屬性?
select 、 insert 、 update 、 delete 標簽分別對應查詢、添加、更新、洗掉操作,
parameterType屬性表示引數的資料型別,包括基本資料型別和對應的包裝型別、String 和 JavaBean 型別,當有多個引數時可以使?#的形式表示第 n 個引數,除了基本資料型別都要以全限定類名的形式指定引數型別,
resultType表示回傳的結果型別,包括基本資料型別和對應的包裝型別、String 和 Java Bean 型別,
還可以使?把回傳結果封裝為復雜型別的resultMap,
Q3:Mybatis 的?級快取是什么?
?級快取是 SqlSession 級別,默認開啟且不能關閉,
操作資料庫時需要創建 SqlSession 物件,物件中有?個 HashMap 存盤快取資料,不同 SqlSession 之間快取資料區域互不影響,
?級快取的作?域是 SqlSession 范圍的,在同?個 SqlSession 中執?兩次相同的 SQL 陳述句時,第?次執?完畢會將結果保存在快取中,第?次查詢直接從快取中獲取,
如果 SqlSession 執行了 DML 操作(insert、update、delete),Mybatis 必須將快取清空保證資料有效性,
一級快取的作業原理如下所示:

Q4:Mybatis 的?級快取是什么?
?級快取是Mapper 級別,默認關閉,
使?二級快取時多個 SqlSession 使?同?個 Mapper 的 SQL 陳述句操作資料庫,得到的資料會存在?級快取區,同樣使? HashMap 進行資料存盤,相?于?級快取,?級快取范圍更?,多個 SqlSession 可以共??級快取,作?域是 Mapper 的同?個 namespace,不同 SqlSession 兩次執?相同的namespace 下的 SQL 陳述句,引數也相等,則第?次執行成功后會將資料保存在?級快取中,第?次可直接從?級快取中取出資料,
要使??級快取,需要在全域配置?件中配置<setting name="cacheEnabled" value="true"/>,再在對應的映射?件中配置?個<cache/>標簽,
二級快取的作業原理是:

Q5:Mybatis #{}和${}的區別?
使?${}相當于使?字串拼接,存在 SQL 注?的?險,
使?#{}相當于使用占位符,可以防? SQL 注入,不?持使?占位符的地?就只能使?${},典型情況就是動態引數,
${}是字串替換,相當于直接顯示資料,#{}是預編譯處理,相當于對資料加上雙引號,即#是將傳入的值當做字串的形式,先替換為?號,然后呼叫PreparedStatement的set方法來賦值,而$是將傳入的資料直接顯示生成sql陳述句
--Mybatis在處理#{}時
select id,name,age from teacher where id =#{id}
當前端把id值1傳入到后臺的時候,就相當于:
select id,name,age from teacher where id ='1'
--Mybatis在處理${}時
select id,name,age from teacher where id =${id}
當前端把id值1傳入到后臺的時候,就相當于:
select id,name,age from teacher where id = 1
Q6、MyBatis實作一對多有幾種方式,怎么操作的?
A.聯合查詢:幾個表聯合查詢,只查詢一次,通過在resultMap里面配置collection節點配置一對多的類就可以完成,
B.嵌套查詢:是先查一個表,根據這個表里面的結果的外鍵id去另外一個表里面查詢資料,也是通過配置collection,但另外一個表的查詢通過select節點配置,
Spring Data JPA ?試題:
Q1:ORM 是什么?
ORM 即 Object-Relational Mapping ,表示物件關系映射,映射的不只是物件的值還有物件之間的關系,通過 ORM 就可以把物件映射到關系型資料庫中,操作物體類就相當于操作資料庫表,可以不再重點關注 SQL 陳述句,
Q2:JPA 如何使用?
只需要持久層接?繼承 JpaRepository 即可,泛型引數串列中第?個引數是物體型別別,第?個引數是主鍵型別,
運?時通過JDKDynamicAopProxy的invoke方法創建了?個動態代理物件,
SimpleJpaRepository , SimpleJpaRepository中封裝了JPA的操作,通過 hibernate (封裝了
JDBC)完成資料庫操作,
Q3:JPA 物體類相關注解有哪些?
@Entity :表明當前類是?個物體類,
@Table:關聯物體類和資料庫表,
@Column:關聯物體類屬性和資料庫表中欄位,
@Id:宣告當前屬性為資料庫表主鍵對應的屬性,
@GeneratedValue : 配置主鍵?成策略,
@OneToMany:配置?對多關系,mappedBy 屬性值為主表物體類在從表物體類中對應的屬性名,
@ManyToOne:配置多對?關系,targetEntity 屬性值為主表對應物體類的位元組碼,
@JoinColumn :配置外鍵關系,name 屬性值為外鍵名稱,referencedColumnName 屬性值為主表主鍵名稱,
Q4:物件導航查詢是什么?
通過 get 方法查詢?個物件的同時,通過此物件可以查詢它的關聯物件,
物件導航查詢?到多默認使?延遲加載的形式,關聯物件是集合,因此使??即加載可能浪費資源,物件導航查詢多到?默認使??即加載的形式, 關聯物件是?個物件,因此使??即加載,
如果要改變加載方式,在物體類注解配置加上 fetch 屬性即可,LAZY 表示延遲加載,EAGER 表示?即加載,
Spring MVC面試題:
Q1:Spring MVC 的處理流程?
Web 容器啟動時會通知 Spring 初始化容器,加載 Bean 的定義資訊并初始化所有單例 Bean,然后遍歷容器中的 Bean,獲取每?個 Controller 中的所有?法訪問的 URL,將 URL 和對應的 Controller 保存 到?個 Map 集合中,
所有的請求會轉發給 DispatcherServlet 前端處理器處理,DispatcherServlet 會請求 HandlerMapping找出容器中被@Controler注解修飾的 Bean 以及被@RequestMapping
修飾的?法和類,?成Handler 和 HandlerInterceptor 并以?個 HandlerExcutionChain 處理器執?鏈的形式回傳,
之后 DispatcherServlet 使? Handler 找到對應的 HandlerApapter,通過 HandlerApapter 調?Handler 的?法,將請求引數系結到?法的形參上,執??法處理請求并得到 ModelAndView,最后 DispatcherServlet 根據使? ViewResolver 試圖決議器對得到的 ModelAndView 邏輯視圖進?決議得到 View 物理視圖,然后對視圖渲染,將資料填充到視圖中并回傳給客戶端,

Q2:Spring MVC 有哪些組件?
DispatcherServlet :SpringMVC 中的前端控制器,是整個流程控制的核?,負責接收請求并轉發給對應的處理組件,
Handler :處理器,完成具體業務邏輯,相當于 Servlet 或 Action,
HandlerMapping :完成 URL 到 Controller 映射,DispatcherServlet 通過 HandlerMapping 將不同請求映射到不同 Handler,
HandlerInterceptor :處理器攔截器,是?個介面,如果需要完成?些攔截處理,可以實作該介面,
HandlerExecutionChain :處理器執行鏈,包括兩部分內容:Handler 和 HandlerInterceptor,
HandlerAdapter :處理器配接器,Handler執行業務方法前需要進??系列操作,包括表單資料驗證、資料型別轉換、將表單資料封裝到JavaBean等,這些操作都由 HandlerAdapter 完成, DispatcherServlet 通過 HandlerAdapter 來執?不同的 Handler,
ModelAndView :裝載模型資料和視圖資訊,作為 Handler 處理結果回傳給 DispatcherServlet,
ViewResolver :視圖決議器,DispatcherServlet 通過它將邏輯視圖決議為物理視圖,最終將渲染的結果回應給客戶端,
Q3:Spring MVC 的相關注解?
@Controller :在類定義處添加,將類交給IoC容器管理,
@RequtestMapping :將URL請求和業務方法映射起來,在類和?法定義上都可以添加該注
解, value 屬性指定URL請求的實際地址,是默認值, method 屬性限制請求的?法型別,包括GET、POST、PUT、DELETE等,如果沒有使?指定的請求?法請求URL,會報405 Method Not Allowed 錯誤, params 屬性限制必須提供的引數,如果沒有會報錯,
@RequestParam :如果 Controller 方法的形參和 URL 引數名?致可以不添加注解,如果不?致可以使用該注解系結,value屬性表示HTTP請求中的引數名,required 屬性設定引數是否必要,默認false, defaultValue 屬性指定沒有給引數賦值時的默認值,
@PathVariable :Spring MVC ?持 RESTful風格 URL,通過的系結,
Spring的面試:

Q1:AOP 是什么?
AOP 即?向切?編程,簡單地說就是將代碼中重復的部分抽取出來,在需要執?的時候使?動態代理技術,在不修改原始碼的基礎上對方法進?增強,
Spring 根據類是否實作接?來判斷動態代理?式,如果實作接?會使? JDK 的動態代理,核?是 InvocationHandler 接?和 Proxy 類,如果沒有實作接?會使? CGLib 動態代理,CGLib 是在運?時動態?成某個類的子類,如果某個類被標記為 ?nal,不能使? CGLib ,
JDK 動態代理主要通過重組位元組碼實作,首先獲得被代理物件的引?和所有介面,?成新的類必須實作被代理類的所有接?,動態生成Java 代碼后編譯新?成的 ?件并重新加載到 JVM 運?,JDK代理直接寫 Class 位元組碼,CGLib 是采? ASM 框架寫位元組碼,生成代理類的效率低,但是 CGLib 調??法的效率?,因為 JDK 使?反射呼叫方法,CGLib 使? FastClass 機制為代理類和被代理類各生成?個類,這個類會為代理類或被代理類的?法?成?個 index,這個 index 可以作為引數直接定位要調?的?法,
常?場景包括權限認證、?動快取、錯誤處理、日志、除錯和事務等,
Q2:AOP 的相關注解有哪些?
@Aspect :宣告被注解的類是?個切? Bean,
@Before :前置通知,指在某個連接點之前執行的通知,
@After :后置通知,指某個連接點退出時執?的通知(不論正常回傳還是例外退出),
@AfterReturning :回傳后通知,指某連接點正常完成之后執行的通知,回傳值使?returning屬性接收,
@AfterThrowing :例外通知,指?法拋出例外導致退出時執行的通知,和 @AfterReturning 只會有?個執?,例外使用throwing屬性接收,
Q3:AOP 的相關術語有什么?
Aspect :切?,?個關注點的模塊化,這個關注點可能會橫切多個物件,
Joinpoint :連接點,程式執執程序中的某?行為,即業務層中的所有方法,,
Advice :通知,指切?對于某個連接點所產生的動作,包括前置通知、后置通知、回傳后通知、例外通知和環繞通知,
Pointcut :切入點,指被攔截的連接點,切?點?定是連接點,但連接點不?定是切?點,
Proxy :代理,Spring AOP 中有 JDK 動態代理和 CGLib 代理,目標物件實作了介面時采? JDK 動態代理,反之采用CGLib 代理,
Target :代理的目標物件,指?個或多個切?所通知的物件,
Weaving:織入,指把增強應?到目標物件來創建代理物件的程序,
Q4:AOP 的程序?
Spring AOP 由 BeanPostProcessor 后置處理器開始,后置處理器可以監聽容器觸發的 Bean 生命周期事件,向容器注冊后置處理器以后,容器中管理的 Bean 就具備了接收 IoC 容器回呼事件的能力,BeanPostProcessor 的呼叫發?在 Spring IoC 容器完成 Bean 實體物件的創建和屬性的依賴注入后,為 Bean 物件添加后置處理器的入口是initializeBean方法,

Spring 中 JDK 動態代理通過 JdkDynamicAopProxy 調? Proxy 的newInstance方法來?成代理類,
JdkDynamicAopProxy 也實作了 InvocationHandler 接?, invoke ?法的具體邏輯是先獲取應?到此?法上的攔截器鏈,如果有攔截器則創建 MethodInvocation 并調?其調?目標proceed方法,因此 Spring AOP 對目標物件的增強是通過攔截器實作的,
前面,我們已經整理Spring、設計模式、資料結構和演算法、mysql等的面試題:
1,??爆肝!整理了一周的Spring面試大全【含答案】,吊打Java面試官【建議收藏】!??
2,??肝完了,一天掌握資料結構和演算法面試題,吊打面試官,建議收藏??
3,??集合很簡單?開什么玩笑?肝了一周,全是精華,萬字講解!面試再不怕集合問題了!!!??
4,肝完了,總結了SpringBoot與快取的知識點,快速掌握
5,Mysql面試大全,看完可以吊打面試官!!!
6,入計算機專業的師弟師妹,別再迷茫了,我整理一份CS的學習路線大全!幫你超越大部分的同學!
好了,Java面試整理結束,小伙伴們點贊、收藏、評論,一鍵三連走起呀,下期見~~

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294935.html
標籤:java
