1、双亲委派机制:(保证app加载的类,尤其是自定义的类不会覆盖上层加载器加载的同名类)

        1.1 每个类加载器对他加载过的类都有一个缓存;

        1.2 向上委托查找,向下委托加载;

砂箱保护机制就是说有些包名是不能自定义的;

类加载器都有哪些:启动类加载器(BootstrapClassLoader)->扩展类加载器(ExtensionClassLoader)->应用程序类加载器(AppClassLoader)

2、MySQL死锁案例

用户A查询一条纪录,然后修改该条纪录;这时用户B修改该条纪录,这时用户A的事务里锁的性质由查询的共享锁企图上升到独占锁,而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。这种死锁由于比较隐蔽,但在稍大点的项目中经常发生。

可以采用乐观锁解决,在表里增加字段version,每次修改记得加1

3、排序

collections.sort()排序,如果是基础类型则是按快排算法进行排序,不是基础类型则用堆排,堆排排序具有稳定性,时间复杂度和快排都是:O(N*logN), 堆排空间复杂度O(1),快排空间复杂度O(logn) ,这两个排序都是不稳定,冒泡,插入、归并排序都是稳定性排序。

4、Springboot框架中的@SpringbootApplication注解是一个复合注解,包括如下3个注解:

1. @SpringBootConfiguration 通过@Configuration 与@Bean结合,注册到Spring ioc 容器。
2. @ComponentScan 通过范围扫描的方式,扫描特定注解类,将其注册到Spring ioc 容器。
3. @EnableAutoConfiguration 通过spring.factories的配置,来实现bean的注册到Spring ioc 容器。

那么以上所有注解就只干一件事:把bean注册到spring ioc容器。

5、Seata分布式事务几种模式比较

大厂必问的几个面试题(面试含泪总结)_java

6、链表的介绍

链表是一系列的存储数据元素的单元通过指针串接起来形成的,因此每个单元至少有两个域,一个域用于数据元素的存储,另一个或两个域是指向其他单元的指针。这里具有一个数据域和多个指针域的存储单元通常称为节点(node)。
链表的第一个节点和最后一个节点,分别称为链表的头节点和尾节点。尾节点的特征是其 next 引用为空(null)。链表中每个节点的 next 引用都相当于一个指针,指向另一个节点,借助这些 next 引用,我们可以从链表的头节点移动到尾节点。
链表数据结构中主要包含单向链表、双向链表及循环链表。

链表这里经常会考算法,如:链表数据顺序倒置、判断链表是否有环等;

        6.1 判断链表是否有环

对于这个问题我们可以采用 “快慢指针” 的方法。就是有两个指针 fast 和 slow,开始的时候两个指针都指向链表头 head,然后在每一步操作中 slow 向前走一步即:slow = slow→next,而 fast 每一步向前两步即:fast = fast→next→next。由于 fast 要比 slow 移动的快,如果有环,fast 一定会先进入环,而 slow 后进入环。当两个指针都进入环之后,经过一定步的操作之后二者一定能够在环上相遇,并且此时 slow 还没有绕环一圈,也就是说一定是在 slow 走完第一圈之前相遇。

7、MySQL存储结构及索引介绍

MySQL存储结构为啥采用B+数:

B树的搜索:从根节点开始,对节点内的索引值序列采用二分法查找,如果命中就结束查找。没有命中会进入子节点重复查找过程,直到所对应的的节点指针为空,或已经是叶子节点了才结束。

B+Tree结构:

  • 非叶子节点不存储data数据,只存储索引值,这样便于存储更多的索引值
  • 叶子节点包含了所有的索引值和data数据
  • 叶子节点用指针连接,提高区间的访问性能
  • 相比B树,B+树进行范围查找时,只需要查找定位两个节点的索引值,然后利用叶子节点的指针进行遍历即可。而B树需要遍历范围内所有的节点和数据,显然B+Tree效率高。

聚簇索引和非聚簇索引:B+Tree的叶子节点存放主键索引值和行记录就属于聚簇索引;如果索引值和行记录分开存放就属于非聚簇索引。 主键索引和辅助索引:B+Tree的叶子节点存放的是主键字段值就属于主键索引;如果存放的是非主键值就属于辅助索引(二级索引)。 在InnoDB引擎中,主键索引采用的就是聚簇索引结构存储。

Mysql慢查询优化首先要定位慢查询语句

8、分布式事务

分布式事务主要是用数据库、缓存Redis,  Zookeaper三种方式来实现,性能比较Redis最高,可靠性方面Zookeaper最可靠;