以下爲大家整理了今年一線大廠面試被問頻率較高的多線程面試題,由於本人的見識侷限性,所以可能不是很全面,也歡迎大家在後面留言補充,謝謝。
1、什麼是線程?
2、什麼是線程安全和線程不安全?
3、什麼是自旋鎖?
4、什麼是Java內存模型?
5、什麼是CAS?
6、什麼是樂觀鎖和悲觀鎖?
7、什麼是AQS?
8、什麼是原子操作?在Java Concurrency API中有哪些原子類(atomic classes)?
9、什麼是Executors框架?
10、什麼是阻塞隊列?如何使用阻塞隊列來實現生產者-消費者模型?
11、什麼是Callable和Future?
12、什麼是FutureTask?
13、什麼是同步容器和併發容器的實現?
14、什麼是多線程?優缺點?
15、什麼是多線程的上下文切換?
16、ThreadLocal的設計理念與作用?
17、ThreadPool(線程池)用法與優勢?
18、Concurrent包裏的其他東西:ArrayBlockingQueue、CountDownLatch等等。
19、synchronized和ReentrantLock的區別?
20、Semaphore有什麼作用?
21、Java Concurrency API中的Lock接口(Lock interface)是什麼?對比同步它有什麼優勢?
22、Hashtable的size()方法中明明只有一條語句”return count”,爲什麼還要做同步?
23、ConcurrentHashMap的併發度是什麼?
24、ReentrantReadWriteLock讀寫鎖的使用?
25、CyclicBarrier和CountDownLatch的用法及區別?
26、LockSupport工具?
27、Condition接口及其實現原理?
28、Fork/Join框架的理解?
29、wait()和sleep()的區別?
30、線程的五個狀態(五種狀態,創建、就緒、運行、阻塞和死亡)?
31、start()方法和run()方法的區別?
32、Runnable接口和Callable接口的區別?
33、volatile關鍵字的作用?
34、Java中如何獲取到線程dump文件?
35、線程和進程有什麼區別?
36、線程實現的方式有幾種(四種)?
37、高併發、任務執行時間短的業務怎樣使用線程池?併發不高、任務執行時間長的業務怎樣使用線程池?併發高、業務執行時間長的業務怎樣使用線程池?
38、如果你提交任務時,線程池隊列已滿,這時會發生什麼?
39、鎖的等級:方法鎖、對象鎖、類鎖?
40、如果同步塊內的線程拋出異常會發生什麼?
41、併發編程(concurrency)並行編程(parallellism)有什麼區別?
42、如何保證多線程下 i++ 結果正確?
43、一個線程如果出現了運行時異常會怎麼樣?
44、如何在兩個線程之間共享數據?
45、生產者消費者模型的作用是什麼?
46、怎麼喚醒一個阻塞的線程?
47、Java中用到的線程調度算法是什麼
48、單例模式的線程安全性?
49、線程類的構造方法、靜態塊是被哪個線程調用的?
50、同步方法和同步塊,哪個是更好的選擇?
關注以下公衆號回覆 "多線程" 獲取全部面試題整理及參考答案。