最近收到了小伙伴的捷报,已拿到阿里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,升职加薪、跳槽大厂更稳,我特地邀请资深架构师、复旦大学硕士Lison老师为大家带来
《MyBatis》
系列直播课,带你解密MyBatis的核心运行流程,更学会看源码的能力!
原价199元,公众号粉丝限时专享0.1元,限量200个名额!
在线直播,有疑问,现场解决!
《MyBatis从青铜到王者之路》
原价199元,本公众号粉丝专享限时
0.1元
Lison老师:
资深架构师,10余年java行业经验。
专精领域:
精通JAVA、J2EE和前端开发,擅长互联网高并发、高可靠架构设计;
课程大纲
2.日志模块分析
2.缓存模块分析