Java面試中,一些常見的有關多執行緒問題!

千鋒武漢發表於2021-05-17

  面試作為入職的第一道門檻,其重要性不言而喻。對於從事IT的很多工作人員而言,對面試往往信心不足,畢竟在真實面試中,會遇到很多技術問題,萬一哪塊技術點不熟,就會與心儀的offer失之交臂。接下來, 小千以Java面試為例,為大家精心總結了一些常見的有關多執行緒問題,希望大家能夠對這些知識點有所準備。

圖片14

   一、現在有執行緒 T1、T2 和 T3。你如何確保 T2 執行緒在 T1 之後執行,並且 T3 執行緒在 T2 之後執行?

  有關執行緒面試題通常在第一輪面試或電話面試時會被問到,這道多執行緒問題為了測試面試者是否熟悉join方法的概念。答案也非常簡單:可以用Thread類的join 方法實現這一效果。

   二、Java中新的Lock介面相對於同步程式碼塊有什麼優勢?如果讓你實現一個高效能快取,支援併發讀取和單一寫入,你如何保證資料完整性?

  多執行緒和併發程式設計中使用lock介面的最大優勢是它為讀和寫提供兩個單獨的鎖,可以讓你構建高效能資料結構,比如Concurrent HashMap和條件阻塞。這道Java 執行緒面試題越來越多見,而且隨後的面試題都基於面試者對這道題的回答。 強烈建議在任何Java多執行緒面試前都要多看看有關鎖的知識。

   三、Java中wait和sleep方法有什麼區別?

  兩者主要的區別就是等待釋放鎖和監視器。sleep方法在等待時不會釋放任何鎖或監視器。wait方法多用於執行緒間通訊,而sleep只是在執行時暫停。

  四、如何在Java中實現一個阻塞佇列?

  這道題目考察了面試者是否真正寫過Java多執行緒程式碼,考察了面試者對併發場景的理解。並且可以根據面試者的程式碼問很多後續問題,如果他用wait()和notify()方法成功實現了阻塞佇列,可以讓他用Java5的併發類重新實現一次。

   五、如何在Java中編寫程式碼解決生產者消費者問題?

  這個問題在工作中很典型,但有時面試官會問這類問題,比如“在Java 中如何解決生產者消費者問題?”其實,有很多解決方式。其中Java中BlockingQueue即可解決。

   六、在Java中如何解決死鎖?

  死鎖在多執行緒併發程式設計中十分常見,只需要問他們如果有N個資源和N個執行緒去執行某個操作,然後請求所有資源。

  七、什麼是原子操作?Java 中有哪些原子操作?

  這是個簡單的Java執行緒面試題。另一個緊隨其後的問題將是:你需要同步原子操作嗎?

  以上是最常問的Java執行緒面試題,不僅有助於大家面試,掌握相關問題的答案後,還可為大家開啟多執行緒概念的大門。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2771613/,如需轉載,請註明出處,否則將追究法律責任。

相關文章