前段時間剛被公司辭退的小夥突然發朋友,炫耀自己拿到了阿里的offer——菜鳥物流研發部、base杭州,雖然是個P6,但還是能感覺到他的興奮。

其實,我還是有點疑惑,他之前基礎就很一般(不然也不會被公司開了),也 面試了 大大小小 很多 公司,但總沒有拿到一個滿意的offer(用他的話說就是“要麼薪酬太低,發展前景不好,要麼就是面試被虐”)。

這麼突然拿到了阿里的offer,還是讓人覺得難以置信,所以我忍不住問他: 你最近都幹啥了,阿里面試都問你什麼了?”

這一問,就發現這小夥最近半年居然一直在閉關修煉,把一些基礎的源碼慢慢都啃了一遍!

所以當第三面中問到MyBatis的時候,他就很從容地從源碼這一塊講起,每個問題都細細展開,面試官聽完很驚訝,可以說是吊打面試官。

看完 源碼的我…

關於設計模式,Mybatis至少使用了以下這些:

Builder模式, 例如SqlSessionFactoryBuilder、XMLConfigBuilder等;

工廠模式 ,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;

單例模式 ,例如ErrorContext和LogFactory;

代理模式 ,Mybatis實現的核心,比如MapperProxy、ConnectionLogger,用的jdk的動態代理;還有executor.loader包使用了cglib或者javassist達到延遲加載的效果;

組合模式 ,例如SqlNode和各個子類ChooseSqlNode等;

模板方法模式 ,例如BaseExecutor和SimpleExecutor,還有BaseTypeHandler和所有的子類例如IntegerTypeHandler;

適配器模式 ,例如Log的Mybatis接口和它對jdbc、log4j等各種日誌框架的適配實現;

裝飾者模式 ,例如Cache包中的cache.decorators子包中等各個裝飾者的實現;

迭代器模式 ,例如迭代器模式PropertyTokenizer;

MyBatis整體架構

其實,不只是在阿里,BAT等一線互聯網公司面試也一定會 有涉及MyBatis的問題。接下來我沒做個測試,看看你能回答幾個?

1、MyBatis打開調試模式之後,能打印sql語句等信息,這是怎麼實現的?實現過程中使用了什麼設計模式?

2、MyBatis是如何爲二級緩存動態添加日誌、同步控制、阻塞、緩存淘汰策略等附加能力的?用了什麼設計模式?

3、請描述從數據庫連接池獲取一個數據連接的過程;

4、什麼是緩存雪崩?如何解決?

其實 MyBatis並不難掌握 ,抓住關鍵自然而然就學會了!

爲了讓大家從源碼角度更好地掌握MyBatis,升職加薪、跳槽大廠更穩,我特地邀請資深架構師、復旦大學碩士Lison老師爲大家帶來 《 MyBatis從青銅到王者之路》 系列直播課,帶你解密MyBatis的核心運行流程,更學會看源碼的能力!

原價199元

粉絲限時專享0.1元,限量200個名額!

在線直播,有疑問,現場解決!

《MyBatis從青銅到王者之路》

掃描二維碼,立即進羣

原價199元 ,本號粉絲專享限時 0.1元

Lison老師:

資深架構師,10餘年java行業經驗。

專精領域: 精通JAVA、J2EE和前端開發,擅長互聯網高併發、高可靠架構設計;

課程大綱

6.16

MyBatis骨骼驚奇 果然是必學的祕籍

1.這些問題不會?你對MyBatis一無所知!

2.摸一摸骨架,快速瞭解MyBatis的全貌;

3.格式化你的大腦,談談面向對象的設計原則;

4.隱藏在日誌模塊的兩個設計模式;

6.17

金三銀四必備,源碼必問面試題解答

1.如何給功能進行無侵入性的增強?

2.源碼中到底用了哪些設計模式?爲什麼要用?

3.有什麼優雅的方式創建複雜對象?

4.你能說清楚數據庫連接池的底層機制嗎?

6.18

深入剖析MyBatis兩級緩存的設計與實現

1.什麼是MyBatis的兩級緩存?

2.解決緩存設計與實現之殤;

3.解決緩存雪崩?源碼中找到答案;

4.十分鐘解密MyBatis運行流程;

附贈 7.8G的Java架構進階、視頻資料

掃碼進羣,你也能成爲大神

199元課程 限時0.1元

別猶豫, 3天帶你精通 MyBatis

相關文章