手撕面試官系列(七):面試必備之常問併發編程高級面試專題

併發編程高級面試面試題


(答案+領取方式見個人主頁)

Synchronized 相關問題

  1. Synchronized 用過嗎 , 其原理是什麼 ?
  2. 你剛纔提到獲取對象的鎖,這 個“ 鎖 ”到底是什麼?如何確定對象的鎖 ?
  3. 什麼是可重入性,爲什麼說 Synchronized 是可重入鎖?
  4. JVM 對 Java 的原生鎖做了哪些優化?
  5. 爲什麼說 Synchronized 是非公平鎖?
  6. 什麼是鎖消除和鎖粗化 ?
  7. 爲什麼說 Synchronized 是一個悲觀鎖?樂觀鎖的實現原又是什麼?什麼是 CAS,它有什麼特性?
  8. 樂觀鎖一定就是好的嗎?

可重入鎖 ReentrantLock 及其他顯式鎖相關問題

  1. 跟 Synchronized 相 比 , 可重入鎖 ReentrantLock 其實現原理有什麼不同?
  2. 那麼請談談 AQS 框架是怎麼回事兒?
  3. 請儘可能詳盡地對比下 Synchronized 和 ReentrantLock0 的異同。
  4. ReentrantLock 是如何實現可重入性的?
  5. 除了 ReetrantLock,你還接觸過 JUC 中的哪些併發工具?
  6. 請談談 ReadWriteLock 和 StampedLock。
  7. 如何讓 Java 的線程彼此同步?你瞭解過哪些同步器?請分別介紹下 。
  8. CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢?

Java 線程池相關問題

  1. Java 中的線程池是如何實現的?
  2. 創建線程池的幾個核心構造參數?
  3. 線程池中的線程是怎麼創建的?是一開始就隨着線程池的啓動創建好的嗎?
  4. 既然提到可以通過配置不同參數創建出不同的線程池,那麼Java 中默認實現好的線程池又有哪些呢?請比較它們的異同。
  5. 如何在 Java 線程池中提交線程?

Java內存模型相關問題

  1. 什麼是 Java 的內存模型, Java 中各個線程是怎麼彼此看到對方的變量的?
  2. 請談談 volatile 有什麼特點,爲什麼它能保證變量對所有線程的可見性?
  3. 既然 volatile 能夠保證線程間的變量可見性,是不是就意味着基於 volatile 變量的運算就是併發安全的?
  4. 請對比下 volatile 對比 Synchronized 的異同。
  5. 請談談 ThreadLocal 是怎麼解決併發安全的?
  6. 很多人都說要慎用 ThreadLocal,談談你的理解,使用 ThreadLocal 需要注意些什麼?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章