吊打面试官之源码中用了哪些设计模式?

Posted 三太子敖丙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吊打面试官之源码中用了哪些设计模式?相关的知识,希望对你有一定的参考价值。

最近收到了小伙伴的捷报,已拿到阿里offer,菜鸟物流研发部,base杭州,虽然是个P6,但明显感觉到他很兴奋。
其实,我还是有点疑惑,他之前基础很一般,早就嚷嚷着要跳槽,大大小小的公司面试了很多,但总没有拿到一个满意的offer,要么薪酬太低,发展前景不好,要么就是面试被虐。咋就突然拿到了阿里的offer。后来没忍住,我问他:
你最近都干啥了,阿里面试都问你什么了?”
结果,这小伙最近半年居然一直在闭关修炼,把一些基础的源码慢慢都啃了一遍。像第三面中主要问到MyBatis,他之前已经把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整体架构
MyBatis在阿里等大厂十分流行,BAT等一线互联网公司面试也一定会涉及源码解析的问题。但是很多同学并没有真正掌握MyBatis。

你能答上这些吗?

1、MyBatis打开调试模式之后,能打印sql语句等信息,这是怎么实现的?实现过程中使用了什么设计模式?

2、MyBatis是如何为二级缓存动态添加日志、同步控制、阻塞、缓存淘汰策略等附加能力的?用了什么设计模式?

3、请描述从数据库连接池获取一个数据连接的过程;

4、什么是缓存雪崩?如何解决?

为了让大家从源码角度更好地掌握MyBatis,升职加薪、跳槽大厂更稳,我特地邀请资深架构师、复旦大学硕士Lison老师为大家带来 《MyBatis》 系列直播课,带你解密MyBatis的核心运行流程,更学会看源码的能力! 原价199元,公众号粉丝限时专享0.1元,限量200个名额!
在线直播,有疑问,现场解决!吊打面试官之源码中用了哪些设计模式?

《MyBatis从青铜到王者之路》吊打面试官之源码中用了哪些设计模式?

吊打面试官之源码中用了哪些设计模式?

Lison老师:

资深架构师,10余年java行业经验。

专精领域:精通JAVA、J2EE和前端开发,擅长互联网高并发、高可靠架构设计;

课程大纲

2.26

骨骼惊奇的MyBatis

1.摸清MyBatis的骨架

2.日志模块分析

2.27

MyBatis的精妙之处,数据源与缓存的实现

1.数据源模块分析

2.缓存模块分析

2.28

解密核心运行流程,学习源码的正确姿势

1.MyBatis的核心运行流程
2.看源码的正确姿势

附赠7.8G的Java架构进阶、视频资料

及程序员简历模板(简历做好,面试就成功了一半)


扫码添加肉兰老师报名

“掌握MyBatis要多久?”
“3天。”
“但是学会之后一定要不断练习。”


以上是关于吊打面试官之源码中用了哪些设计模式?的主要内容,如果未能解决你的问题,请参考以下文章

吊打面试官之ConcurrentHashMap和Hashtable

吊打面试官之一文吃透JS事件循环EventLoop

吊打面试官之消息队列基础

面试题:java源码中用到哪些设计模式,为什么这样用

吊打面试官-Java中高级面试题,进阶学习

Spring中用到了哪些设计模式?