天天看点

京东一面

面试过后自己的不足

给的建议:理论联系实践,今后从事Java会接触到微服务,并且面试时也会是加分项。

1.InnoDB的可重复读底层实现

答:使用MVCC(多版本并发控制)。

InnoDB为每行记录添加一个版本号(系统版本号),每当修改数据时版本号加一。

读取事务开始时,系统会给事务一个当前版本号,事务会读取版本号<=当前版本号的数据,这时另一个事务插入一条数据,并立马提交,新插入这条数据的版本号会比读取事务的版本号高,因此,读取事务读的数据还是不会变。

2.ThreadLocal作用及使用场景 详细链接

答:

  1. 介绍
  • 同一个ThreadLocal所包含对象在不同Thread中有不同的副本,其它Thread不可访问,所以不存在多线程间共享问题。
  • ThreadLocal可以使用其它方法达到效果,不过这样实现更简洁。
  • 每一个Thread存在每个线程专属的ThreadLocalMap,维护着ThreadLocal对象与具体实例的映射,
  • ThreadLocalMap 的 Entry 对 ThreadLocal 的引用为弱引用,避免了 ThreadLocal 对象无法被回收的问题
  • ThreadLocalMap 的 set 方法中,通过 replaceStaleEntry 方法将所有键为 null 的 Entry 的值设置为 null,从而使得该值可被回收。
  1. 使用场景:
  • 每个线程需要自己独立的实例
  • 实例需要在多个方法中共享,但不希望在多个线程中共享。

3.Mysql函数 链接1 链接2

  • join 是两张表做交连后里面条件相同的部分记录产生一个记录集,
  • union是产生的两个记录集并在一起,成为一个新的记录集 。

4.ConcurrentHashMap 详细介绍

5.JUC 中的 Atomic 原子类 详细介绍

JUC下底层原理是CAS操作

6.Volatile和Transient

  • Transient代表不会序列化。
  • Volatile有可见性不具有原子性。(如果具有原子性就不需要juc下的atomic包了)

7.Spring的单例 / 多例模式 详细介绍

类有一个普通属性和一个静态属性

  • 多例,多个线程共享静态属性,普通属性是独立的。
  • 单例,多个线程共享静态属性和普通属性。

8.微服务Spring Cloud 详细介绍

继续阅读