>[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給離散度低的字段建立索引會出現什么問題,具體說下原因