2019年全網最熱門的123個Java併發面試題總結

前言

併發編程幾乎是所有互聯網公司面試必問的問題,併發編程是Java程序員最重要的技能之一,也是最難掌握的一種技能。它要求編程者對計算機最底層的運作原理有深刻的理解,同時要求編程者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多線程併發程序。

v2-63bb634faea8925a0d909808c4897da3_b.jpg


關於Java併發編程的知識總結了個思維導圖,分享給大家

v2-cd7d2c4611d05d93c9a7123bda47070b_b.jpeg


整理了網絡上熱門的123道Java併發面試題,看看你都遇到過哪些?

Java 併發編程(一)

1、在 java 中守護線程和本地線程區別?

2、線程與進程的區別?

3、什麼是多線程中的上下文切換?

4、死鎖與活鎖的區別,死鎖與飢餓的區別?

5、Java 中用到的線程調度算法是什麼?

6、什麼是線程組,爲什麼在 Java 中不推薦使用?

7、爲什麼使用 Executor 框架?

8、在 Java 中 Executor 和 Executors 的區別?

9、如何在 Windows 和 Linux 上查找哪個線程使用的 CPU 時間最長?

10、什麼是原子操作?在 Java Concurrency API 中有哪些原子類(atomic classes)?

11、Java Concurrency API 中的 Lock 接口(Lock interface)是什麼?對比同步它有什麼優勢?

12、什麼是 Executors 框架?

13、什麼是阻塞隊列?阻塞隊列的實現原理是什麼?如何使用阻塞隊列來實現生產者-消費者模型?

14、什麼是 Callable 和 Future?

15、什麼是 FutureTask?使用 ExecutorService 啓動任務。

16、什麼是併發容器的實現?

17、多線程同步和互斥有幾種實現方法,都是什麼?

18、什麼是競爭條件?你怎樣發現和解決競爭?

19、你將如何使用 thread dump?你將如何分析 Thread dump?

20、爲什麼我們調用 start()方法時會執行 run()方法,爲什麼我們不能直接調用 run()方法?

21、Java 中你怎樣喚醒一個阻塞的線程?

22、在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?

23、什麼是不可變對象,它對寫併發應用有什麼幫助?

24、什麼是多線程中的上下文切換?

25、Java 中用到的線程調度算法是什麼?

26、什麼是線程組,爲什麼在 Java 中不推薦使用?

27、爲什麼使用 Executor 框架比使用應用創建和管理線程好?

28、java 中有幾種方法可以實現一個線程?

29、如何停止一個正在運行的線程?

30、notify()和 notifyAll()有什麼區別?

31、什麼是 Daemon 線程?它有什麼意義?

32、java 如何實現多線程之間的通訊和協作?

33、什麼是可重入鎖(ReentrantLock)?

34、當一個線程進入某個對象的一個 synchronized 的實例方法後,其它線程是否可進入此對象的其它方法?

35、樂觀鎖和悲觀鎖的理解及如何實現,有哪些實現方式?

36、SynchronizedMap 和 ConcurrentHashMap 有什麼區別?

37、CopyOnWriteArrayList 可以用於什麼應用場景?

38、什麼叫線程安全?servlet 是線程安全嗎?

39、volatile 有什麼用?能否用一句話說明下 volatile 的應用場景?

40、爲什麼代碼會重排序?

41、在 java 中 wait 和 sleep 方法的不同?

42、用 Java 實現阻塞隊列

43、一個線程運行時發生異常會怎樣?

44、如何在兩個線程間共享數據?

45、Java 中 notify 和 notifyAll 有什麼區別?

46、爲什麼 wait, notify 和 notifyAll 這些方法不在 thread 類裏面?

47、什麼是 ThreadLocal 變量?

48、Java 中 interrupted 和 isInterrupted 方法的區別?

49、爲什麼 wait 和 notify 方法要在同步塊中調用?

50、爲什麼你應該在循環中檢查等待條件?

51、Java 中的同步集合與併發集合有什麼區別?

52、什麼是線程池? 爲什麼要使用它?

53、怎麼檢測一個線程是否擁有鎖?

54、你如何在 Java 中獲取線程堆棧?

56、Thread 類中的 yield 方法有什麼作用?

57、Java 中 ConcurrentHashMap 的併發度是什麼?

58、Java 中 Semaphore 是什麼?

59、Java 線程池中 submit() 和 execute()方法有什麼區別?

60、什麼是阻塞式方法?

61、Java 中的 ReadWriteLock 是什麼?

62、volatile 變量和 atomic 變量有什麼不同?

63、可以直接調用 Thread 類的 run ()方法麼?

64、如何讓正在運行的線程暫停一段時間?

65、你對線程優先級的理解是什麼?

66 、 什 麼 是 線 程 調 度 器 (Thread Scheduler) 和 時 間 分 片 (TimeSlicing )?

67、你如何確保 main()方法所在的線程是 Java 程序最後結束的線程?

68、線程之間是如何通信的?

69、爲什麼線程通信的方法 wait(), notify()和 notifyAll()被定義在Object 類裏?

70、爲什麼 wait(), notify()和 notifyAll ()必須在同步方法或者同步塊中被調用?

71、爲什麼 Thread 類的 sleep()和 yield ()方法是靜態的?

72、如何確保線程安全?

73、同步方法和同步塊,哪個是更好的選擇?

74、如何創建守護線程?

75、什麼是 Java Timer 類?如何創建一個有特定時間間隔的任務?

v2-4e030493bd5f2c0bf531721c0d5c22d8_b.jpg

Java 併發編程(二)

1、併發編程三要素?

2、實現可見性的方法有哪些?

3、多線程的價值?

4、創建線程的有哪些方式?

5、創建線程的三種方式的對比?

6、線程的狀態流轉圖

7、Java 線程具有五中基本狀態

8、什麼是線程池?有哪幾種創建方式?

9、四種線程池的創建:

10、線程池的優點?

11、常用的併發工具類有哪些?

12、CyclicBarrier 和 CountDownLatch 的區別

13、synchronized 的作用?

14、volatile 關鍵字的作用.

15、什麼是 CAS

16、CAS 的問題

17、什麼是 Future?

18、什麼是 AQS

19、AQS 支持兩種同步方式:

20、ReadWriteLock 是什麼

21、FutureTask 是什麼

22、synchronized 和 ReentrantLock 的區別

23、什麼是樂觀鎖和悲觀鎖

24、線程 B 怎麼知道線程 A 修改了變量

25、synchronized、volatile、CAS 比較

26、sleep 方法和 wait 方法有什麼區別?

27、ThreadLocal 是什麼?有什麼用?

28、爲什麼 wait()方法和 notify()/notifyAll()方法要在同步塊中被調用

29、多線程同步有哪幾種方法?

30、線程的調度策略

31、ConcurrentHashMap 的併發度是什麼

32、Linux 環境下如何查找哪個線程使用 CPU 最長

33、Java 死鎖以及如何避免?

34、死鎖的原因

35、怎麼喚醒一個阻塞的線程

36、不可變對象對多線程有什麼幫助

37、什麼是多線程的上下文切換

38、如果你提交任務時,線程池隊列已滿,這時會發生什麼

39、Java 中用到的線程調度算法是什麼

40 、 什 麼 是 線 程 調 度 器 (Thread Scheduler) 和 時 間 分 片 (TimeSlicing)?

41、什麼是自旋

42、Java Concurrency API 中的 Lock 接口(Lock interface)是什麼?對比同步它有什麼優勢?

43、單例模式的線程安全性

44、Semaphore 有什麼作用

45、Executors 類是什麼?

46、線程類的構造方法、靜態塊是被哪個線程調用的

47、同步方法和同步塊,哪個是更好的選擇?

48、Java 線程數過多會造成什麼異常?

v2-78f99011f284f2d5fa5f2e58d1063e63_b.jpg

上面的這些問題只是給大家一個借鑑作用,最主要的是給自己增加知識的儲備,有備無患。

關於這123個熱門的Java併發面試題總結了50多頁pdf文檔~

關注我的公種浩:程序員追風,回覆 0111 即可領取!

v2-851d00b57a53a4f1a5a35774fff92952_b.jpg


希望能幫助到你面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。

最後

歡迎大家一起交流,喜歡文章記得關注我點贊轉發喲,感謝支持!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章