>[info] 1.`private`修饰的方法可以通过反射访问,那么`private`的意义是什么
`private`更多是想表达封装而不是安全,反射是一种更底层的`hack`技术,类似的如 `asm`,`javaassit` 等都可以实现。
>[success]2.`Java`类初始化顺序
1. 初始化类静态变量/静态块(类加载时执行一次);
2. 初始化实例变量,执行构造器构造实例。1,2中如果有父类的话,先执行父类。
>[warning] 3.对方法区和永久区的理解以及它们之间的关系
方法区是`JVM`规范中的一个区域用于存放运行时数据,永久区是`Hotspot`虚拟机(1.8之前)中的一种方法区实现,类似的有`JDK 1.8`引入的元空间。
>[danger] 4.一个`java`文件有3个类,编译后有几个`class`文件
>[info] 5.局部变量使用前需要显式地赋值,否则编译通过不了,为什么这么设计
> 这样设计是一种约束,尽量大程度减少使用者犯错的可能(假使局部变量能够使用默认值,可能总会无意间忘记赋值,进而导致不可预期的情况出现)。
>[success] 6.`ReadWriteLock`读写之间互斥吗
`ReadWriteRock` 读写锁,使用场景可分为读/读、读/写、写/写,除了读和读之间是共享的,其它都是互斥的,接着会讨论下怎样实现互斥锁和同步锁的, 想了解对方对`AQS`,`CAS`的掌握程度,技术学习的深度。
>[warning] 7.`Semaphore`拿到执行权的线程之间是否互斥
`Semaphore`拿到执行权的线程之间是否互斥,`Semaphore`、`CountDownLatch`、`CyclicBarrier`、`Exchanger` 为`Java`并发编程的4个辅助类,面试中常问的`CountDownLatch`和`CyclicBarrier`之间的区别,面试者肯定是经常碰到的,所以问起来意义不大,`Semaphore`问的相对少一些,有些知识点如果没有使用过还是会忽略,`Semaphore`可有多把锁,可允许多个线程同时拥有执行权,这些有执行权的线程如并发访问同一对象,会产生线程安全问题。
>[info] 8.写一个你认为最好的单例模式
>[success] 9.`B`树和`B+`树是解决什么样的问题的,怎样演化过来,之间区别
>[success] 10.写一个生产者消费者模式
>[warning] 11.写一个死锁
>[info] 12.`cpu 100%`怎样定位
>[success] 13.`String a = "ab";` `String b = "a" + "b";` ` a == b` 是否相等,为什么
>[danger] 14.`int a = 1`; 是原子性操作吗
>[warning] 15.可以用for循环直接删除`ArrayList`的特定元素吗?可能会出现什么问题?怎样解决
>[info] 16.新的任务提交到线程池,线程池是怎样处理
>[success] 17.`AQS`和`CAS`原理
>[danger] 18.`synchronized`底层实现原理
>[warning] 19.`volatile`作用,指令重排相关
>[info] 20.`AOP`和`IOC`原理
>[success] 21.`Spring`怎样解决循环依赖的问题
>[danger]22.`dispatchServlet`怎样分发任务的
>[info] 23.`mysq`l给离散度低的字段建立索引会出现什么问题,具体说下原因