自我介绍1. static能修饰abstract类/方法吗?2. 本地方法native是abstract的吗?3. 如何保证多线程安全4. synchronized 和lock 还有 volatile的区别 5. volatile是如何保证数据的可见性6. jvm双亲委派机制 简单说一下7. 自定义同包路径的String等,系统调用的是jdk的String还是我们的String8. 怎么保证我们自己写的不会替换掉jdk自己的9. 类加载器的顺序10. jvm是怎么给对象分配内存的?11. 堆内存分为几块?每块的区别是什么?12. 我们新建一个对象时候,这个对象会被堆分配在哪个区?一定会分配到这个区吗13. 要是我们new的对象内存大于新生区?这时候怎么办?14. 垃圾回收机制15. 垃圾回收的分代回收说一下16. 设计模式所遵循的原则17. jvm的指令重排18. 索引的底层数据结构19. B+树和B树的区别是什么20. 做过什么项目?简单谈一谈21. redis用来干什么22. redis为什么比数据库快