Java岗:拿到华为美团Java后端岗Offer后,收到腾讯三面通知,最后却被MyBatis挡住了去路!

发布于:2022-12-19 ⋅ 阅读:(359) ⋅ 点赞:(0)

前言

9月初大环境还可,有个小伙伴海投Java后端开发岗后拿到华为、美团、快手等公司的offer,当时一直在纠结去哪儿。后面接到腾讯4面HR的电话,有点惊喜,毕竟前面两轮面试后一直没信儿,以为没消息了。

大厂嘛,人人都想进,机会来了肯定想把握一下的,可惜面前自信满满,面后被虐体无完肤...

刚刚开始的时候一切进展都非常顺利,突然不知怎地那面试官一直揪着MyBatis源码问个不停,小伙伴MyBatis还是比较常用的,但是没深入看过源码,所以没回答好。

结果可想而知...因为才有了这篇MyBatis干货整理文章...

先来看看MyBatis常问面试题目(附带解析)

  • 什么是 MyBatis?讲下 MyBatis 的缓存
  • Mybatis 是如何进行分页的?分页插件的原理是什么?
  • 简述 Mybatis 的插件运行原理,以及如何编写一个插件?
  • Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
  • “#{}”和“${}”的区别是什么?
  • 为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
  • Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
  • MyBatis 与 Hibernate 有哪些不同?
  • MyBatis 的好处是什么?
  • 简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?
  • 什么是 MyBatis 的接口绑定,有什么好处?
  • 接口绑定有几种实现方式,分别是怎么实现的?
  • 什么情况下用注解绑定,什么情况下用 xml 绑定?
  • MyBatis 实现一对一有几种方式?具体怎么操作的?
  • Mybatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?
  • MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?
  • Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
  • Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
  • 当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?
  • 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, Dao 的工作原理,是否可以重载?
  • Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
  • Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
  • Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?
  • Mybatis 中如何指定使用哪一种 Executor 执行器?
  • Mybatis 执行批量插入,能返回数据库主键列表吗?
  • Mybatis 是否可以映射 Enum 枚举类?
  • 如何获取自动生成的(主)键值?
  • 在 mapper 中如何传递多个参数?
  • resultType resultMap 的区别?
  • 使用 MyBatis 的 mapper 接口调用时有哪些要求?
  • Mybatis 比 IBatis 比较大的几个改进是什么?
  • IBatis 和 MyBatis 在核心处理类分别叫什么?在细节上的不同有哪些?

其次是 关于Mybatis源码部分的题目:

1、Mybatis源码中用了哪些设计模式?为什么要用这些设计模式?

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

3、请详细描述从数据库连接池中获取一个连接资源的过程?

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

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

6、结合源码说说什么是缓存雪崩?如何解决?

估计问你你也懵逼,对不对?但是BAT等一线互联网公司面试一定会涉及源码解析的问题。

为什么面试官这么喜欢问源码?程序员又为什么要学会看源码呢?


image.png

再给大家分享一下阿里大神多隆的故事。多隆是淘宝创始团队三个工程师之一,非计算机出身,从底层码农写到阿里巴巴的合伙人。很多项目,从头到尾都是他一个人就完成了。他做的最多的就是在工位上,对着屏幕上的黑框写代码,看代码。他很热衷于看源码解决问题,经常有同事找到解决难题。第二天他已经看完了xxx的源码,改哪里哪里。

学会看源码,可以让你拥有:

1. 编写优雅、高效的代码经验;

2. 提升微观的架构设计能力,重点在思维和理念;

3. 解决工作中、学习中的各种疑难杂症;

4.学习大牛解决问题的思维。

如何高效的学习MyBatis源码呢?

市面上真正适合学习的MyBatis资料太少,有的书或资料虽然讲得比较深入,但是语言晦涩难懂,大多数人看完这些书基本都是从入门到放弃。学透MyBatis源码难道就真的就没有一种适合大多数同学的方法吗?

在这分享一份精通MyBatis学习指南(学习文档+视频讲解+Xmind思维导图),这份学习指南从MyBatis源码的角度,深入浅出,从入门到精通,同时介绍一些MyBatis的高级用法,并挖掘MyBatis源码中使用的设计模式等

整理不易,MyBatis学习指南都在这了

MyBatis学习文档

  1. mybatis的基本用法
  2. mybatis的体系结构
  3. 深入mybatis的配置文件
  4. 深入Mapper XML映射文件
  5. mybatis的关联映射和动态SQL
  6. mybatis的事务管理和缓存机制
  7. mybatis的注解配置
  8. Spring整合mybatis


image.png

Mybatis思维导图

  1. mybatis简介
  2. 与hibernate对比
  3. mybatis框架整体设计
  4. mybatis源码的几个主要部件
  5. XML映射配置文件
  6. mybatis的优缺点
  7. Spring整合mybatis
  8. mapper的xml文件
  9. 动态SQL
  10. resultMap子元素
  11. 鉴别器discriminator
  12. 插件拓展
  13. 常用注解

视频讲解(源码+ORM框架+基本应用+全局配置文件+映射文件+动态SQL语句)

本文含有隐藏内容,请 开通VIP 后查看