前言
眾所周知,在Java的知識體系中,并發編程是非常重要的一環,也是面試的必問題,一個好的Java開發者是必須對并發編程這塊有所了解的,
而如何在并發場景中寫出優良的代碼,是一道繞不開的坎,也是考量一個 Java 開發者功底的關鍵技術,因此,不難發現 Java
并發問題一直是各個大廠面試的重點之一,然而我發現很多候選人在面試時,常常表示對各種并發原理一臉懵逼,好像知道一些卻又講不清楚,最終導致面試失敗,于是發奮學習,啃大部頭書又發現理論太多,頭疼,其實
Java 的并發問題雖然內容繁雜,然而整個脈絡還是很清晰的,那么接下來,一起來看看面試中會問到哪些并發的知識點,
執行緒池相關問題
問題一:Java 中的執行緒池是如何實作的?
問題二:創建執行緒池的幾個核心構造引數?
問題三:執行緒池中的執行緒是怎么創建的?是一開始就隨著執行緒池的啟動創建好的嗎?
問題四:既然提到可以通過配置不同引數創建出不同的執行緒池,那么 Java 中默認實作好的執行緒池又有哪些呢?請比較它們的異同,
問題五:如何在 Java 執行緒池中提交執行緒?
執行緒安全和執行緒同步器相關問題
問題一:java如何實作多執行緒之間的通訊和協作?
問題二:什么叫執行緒安全?servlet是執行緒安全嗎?
問題三:同步有幾種實作方法?
問題四:volatile有什么用?能否用一句話說明下volatile的應用場景?
問題五:請說明下java的記憶體模型及其作業流程,
問題六:為什么代碼會重排序?
問題七:分析下JUC 中倒數計數器 CountDownLatch 的使用與原理?
問題八:CountDownLatch 與執行緒的 Join 方法區別是什么?
問題九:講講對JUC 中回環屏障 CyclicBarrier 的使用?
問題十:CyclicBarrier內部的實作與 CountDownLatch 有何不同?
問題十一:Semaphore 的內部實作是怎樣的?
問題十二:簡單對比同步器實作,談談你的看法?
問題十三:并發組件CopyOnWriteArrayList 是如何通過寫時拷貝實作并發安全的 List?
記憶體模型相關問題
問題一:什么是 Java 的記憶體模型,Java 中各個執行緒是怎么彼此看到對方的變數的?
問題二:請談談 volatile 有什么特點,為什么它能保證變數對所有執行緒的可見性?
問題三:既然 volatile 能夠保證執行緒間的變數可見性,是不是就意味著基于 volatile 變數的運算就是并發安全的?
問題四:請對比下 volatile 對比 Synchronized 的異同,
問題五:請談談 ThreadLocal 是怎么解決并發安全的?
問題六:很多人都說要慎用 ThreadLocal,談談你的理解,使用 ThreadLocal 需要注意些什么?
鎖相關問題
問題一:什么是可重入鎖、樂觀鎖、悲觀鎖、公平鎖、非公平鎖、獨占鎖、共享鎖?
問題二:當一個執行緒進入某個物件的一個synchronized的實體方法后,其它執行緒是否可進入此物件的其它方法?
問題三:synchronized和java.util.concurrent.locks.Lock的異同?
問題四:什么是鎖消除和鎖粗化?
問題五:樂觀鎖和悲觀鎖的理解及如何實作,有哪些實作方式?
問題六:如何實作樂觀鎖(CAS)?如何避免ABA問題?
問題七:讀寫鎖可以用于什么應用場景?
問題八:什么是可重入性,為什么說 Synchronized 是可重入鎖?
問題九:什么時候應該使用可重入鎖?
問題十:什么場景下可以使用volatile替換synchronized?
并發框架和并發佇列相關問題
問題一:SynchronizedMap和ConcurrentHashMap有什么區別?
問題二:CopyOnWriteArrayList可以用于什么應用場景?
問題三:如何讓一段程式并發的執行,并最侄訓總結果?
問題四:任務非常多的時候,使用什么阻塞佇列能獲取最好的吞吐量?
問題五:如何使用阻塞佇列實作一個生產者和消費者模型?
問題六:多讀少寫的場景應該使用哪個并發容器,為什么使用它?
問題七:談下對基于鏈表的非阻塞無界佇列 ConcurrentLinkedQueue 原理的理解?
問題八:ConcurrentLinkedQueue 內部是如何使用 CAS 非阻塞演算法來保證多執行緒下入隊出隊操作的執行緒安全?
問題九:基于鏈表的阻塞佇列 LinkedBlockingQueue 原理,
問題十:阻塞佇列LinkedBlockingQueue 內部是如何使用兩個獨占鎖 ReentrantLock 以及對應的條件變數保證多執行緒先入隊出隊操作的執行緒安全?
問題十一:為什么不使用一把鎖,使用兩把為何能提高并發度?
問題十二:基于陣列的阻塞佇列 ArrayBlockingQueue 原理,
問題十三:ArrayBlockingQueue 內部如何基于一把獨占鎖以及對應的兩個條件變數實作出入隊操作的執行緒安全?
問題十四:談談對無界優先級佇列 PriorityBlockingQueue 原理?
問題十五:PriorityBlockingQueue 內部使用堆演算法保證每次出隊都是優先級最高的元素,元素入隊時候是如何建堆的,元素出隊后如何調整堆的平衡的?
CountDownLatch相關問題
問題一:介紹一下 CountDownLatch 作業原理?
問題二:CountDownLatch 和 CyclicBarrier 的區別?
問題三:CountDownLatch 的使用場景?
問題四:CountDownLatch 類中主要的方法?
由于文章篇幅原因,答案不能一起上傳,需要答案的一鍵三連后“加我小助理VX”即可免費獲取到

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/161912.html
標籤:其他
上一篇:傀儡行程學習

