内容非常全面
Posted 程序员DCS阿里
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内容非常全面相关的知识,希望对你有一定的参考价值。
前言
锁是一种用来控制多线程访问共享资源的工具。通常,锁可以独占共享资源:同一时间只有一个线程可以获得锁,并且所有访问共享资源的线程都必须首先获得锁。前面我们介绍过了synchronized,使用synchronized的方法和代码块作用域机制使得使用监视器锁更加简单,并且帮助避免了许多关于锁的常见编程错误,比如锁未及时释放等问题。但是有时候我们需要更灵活的使用锁资源,例如,一些遍历并发访问的数据结构的算法需要使用“手动”方法,或者“锁链”:你先获得节点A的锁,然后是节点B,然后释放A获得C,再释放B获得D,以此类推。这种方式如果要使用synchronized就不是很好实现,但是有了Lock就不一样了,Lock接口允许以不同的范围去获取和释放锁,并且允许同时获得多把锁,也可以以任意的顺序释放。
我朋友去年九月份换工作,简历投了很多大厂,美团、京东的offer都到手了。
阿里的面试进行到了第三轮,刚开始聊得还好,直到阿里面试官揪着MyBatis源码一直问,他自己MyBatis还是比较常用的,但是没深入看过源码,所以没回答好,结果可想而知了。
现在给大家分享一下阿里面试官问他的一些mybatis的部分题目:
- MyBatis 与 Hibernate 有哪些不同?
- Mybatis源码中用了哪些设计模式?为什么要用这些设计模式?
- MyBatis是如何为二级缓存动态添加日志、同步控制、阻塞、缓存淘汰策略等附加能力的?用了什么设计模式?
- Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
- 简述Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?
- Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
估计问你你也懵逼,对不对?但是BAT等一线互联网公司面试一定会涉及源码解析的问题。
为什么面试官这么喜欢问源码?程序员又为什么要去学源码呢?
学会看源码,可以让你拥有:
- 编写优雅、高效的代码经验;
- 提升微观的架构设计能力,重点在思维和理念;
- 解决工作中、学习中的各种疑难杂症;
- 学习大牛解决问题的思维。
怎样高效系统性的学习Mybatis呢?
从目前的情况来看,国内图书市场上没有介绍MyBatis的书籍,有的只是官方的API和少数的几篇博客文章,国外图书市场上的这类书籍也是凤毛麟角,这使得系统学习MyBatis困难重重。
官方的API只是简单介绍了 MyBatis有些什么功能和一些基本的使用方法,没有告诉我们如何用好,其中原理是什么,需要注意哪些问题,这显然是不够的。
有些文章虽然讲解得比较深入,但是内容支离破碎,没有形成一个完整的知识体系,不易于初学者对MyBatis进行系统学习。
随着移动互联网应用的兴起,系统掌握MyBatis编程技巧已经成了用Java构建移动互联网网站的必要条件。
- mybatis简介
- 搭建MyBatis源码环境
- JDBC规范详解
- MyBatis常用工具类
- MyBatis核心组件介绍
- MyBatis缓存
- MyBatis日志实现
- 动态SQL实现原理
- MyBatis插件原理及应用
- MyBatis级联映射与懒加载
- MyBatis与Spring整合案例
- MyBatis Spring的实现原理
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?
mybatis思维导图
- 快速入门
- 主要配置文件
- 映射文件
- 映射关系
- 逆向工程
- 缓存
- mapper代理
- 动态SQL
总结
总的来说,面试是有套路的,一面基础,二面架构,三面个人。
最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友,点击这里即可免费获取
jBnUx-1624694380772)]
[外链图片转存中…(img-SyVpjtdb-1624694380773)]
[外链图片转存中…(img-FN798hhS-1624694380774)]
以上是关于内容非常全面的主要内容,如果未能解决你的问题,请参考以下文章