一面
设计题:如何做出类似朋友圈的时间显示
Sql题
为什么选择Spring boot,spring的优点
ACID 原子性,一致性,隔离性,持久性
生产者消费者
Redis的事务
AOP的实现 (代码层面,底层实现是动态代理)
Static方法里能用static变量吗 不能
二面
写一道sql
抽象类和接口的区别
抽象类:可以有具体实现的方法和抽象方法,成员变量不受限制,可以有构造函数,一个类只能继承一个抽象类;
接口:只能有抽象方法,成员变量只能是public static final,不能有构造函数,一个类可以实现多个接口。
实现接口的类,必须全部实现方法;继承抽象类,一般要重写方法,实现抽象方法。
接口是对类行为的抽象,抽象类是对类的自身进行抽象
代码层面 怎么设计表的
Synchronize的底层原理
对象在堆中的包含三部分:对象头,实例数据,对齐填充
对象头又分为两部分:Mark Word 和 地址指针
Mark Word 包含 存储对象的哈希码、GC分代年龄、锁信息等
synchronized有四种状态:无锁 偏向锁 轻量级锁 重量级锁
偏向锁:如果一个线程获得了锁,那么锁进入偏向模式,Mark Word就变为了偏向锁结构,当该线程再次请求锁时,只需要检查mark word 为偏向锁,以及当前线程ID等于mark word的线程ID
写选择排序,问选择排序的优化
可以同时处理最小和最大,优化
双亲委派机制