更新時(shí)間:2019-08-12 13:43:52 來源:動力節(jié)點(diǎn) 瀏覽2549次
多線程和并發(fā)方面的問題是Java程序員在面試中不可避免的問題,想要在面試中從容面對這些問題,那么在平時(shí)一定要對多線程和并發(fā)有清楚的了解。下面,動力節(jié)點(diǎn)Java培訓(xùn)老師就分享五個常見的Java多線程面試題及回答。
1、現(xiàn)在有T1、T2、T3三個線程,你怎樣保證T2在T1執(zhí)行完后執(zhí)行,T3在T2執(zhí)行完后執(zhí)行?
這個線程問題通常會在第一輪或電話面試階段被問到,目的是檢測你對”join”方法是否熟悉。這個多線程問題比較簡單,可以用join方法實(shí)現(xiàn)。
2、在Java中Lock接口比synchronized塊的優(yōu)勢是什么?你需要實(shí)現(xiàn)一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實(shí)現(xiàn)它?
lock接口在多線程和并發(fā)編程中最大的優(yōu)勢是它們?yōu)樽x和寫分別提供了鎖,它能滿足你寫像ConcurrentHashMap這樣的高性能數(shù)據(jù)結(jié)構(gòu)和有條件的阻塞。Java線程面試的問題越來越會根據(jù)面試者的回答來提問。我強(qiáng)烈建議在你去參加多線程的面試之前認(rèn)真讀一下Locks,因?yàn)楫?dāng)前其大量用于構(gòu)建電子交易終統(tǒng)的客戶端緩存和交易連接空間。
3、在Java中wait和sleep方法的不同?
通常會在電話面試中經(jīng)常被問到的Java線程面試問題。最大的不同是在等待時(shí)Wait會釋放鎖,而sleep一直持有鎖。Wait通常被用于線程間交互,sleep通常被用于暫停執(zhí)行。
4、用Java實(shí)現(xiàn)阻塞隊(duì)列。
這是一個相對艱難的多線程面試問題,它能達(dá)到很多的目的。第一,它可以檢測侯選者是否能實(shí)際的用Java線程寫程序;第二,可以檢測侯選者對并發(fā)場景的理解,并且你可以根據(jù)這個問很多問題。如果他用wait()和notify()方法來實(shí)現(xiàn)阻塞隊(duì)列,你可以要求他用最新的Java5中的并發(fā)類來再寫一次。
5、用Java編程一個會導(dǎo)致死鎖的程序,你將怎么解決?
因?yàn)榧词顾梨i問題在寫多線程并發(fā)程序時(shí)非常普遍,但是很多侯選者并不能寫deadlockfreecode(無死鎖代碼?),他們很掙扎。只要告訴他們,你有N個資源和N個線程,并且你需要所有的資源來完成一個操作。為了簡單這里的n可以替換為2,越大的數(shù)據(jù)會使問題看起來更復(fù)雜。通過避免Java中的死鎖來得到關(guān)于死鎖的更多信息。
以上就是動力節(jié)點(diǎn)Java培訓(xùn)老師分享的面試官經(jīng)常會問的5個Java多線程問題及答案解析。當(dāng)下Java應(yīng)用廣泛,對于擁有Java技術(shù)的程序員來說,職業(yè)道路的選擇十分的寬廣,行業(yè)前景之廣闊都是可以預(yù)見。
如果你想擁有過硬的Java技術(shù),動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)是你的不二之選。動力節(jié)點(diǎn)Java培訓(xùn)課程采用100%全程面授教學(xué),拒絕視頻同步授課,拒絕雙元視頻班教學(xué),拒絕直播授課,教師一對一指導(dǎo)學(xué)員做項(xiàng)目,全新打造“主流技術(shù)+前沿技術(shù)+企業(yè)級聯(lián)動”教學(xué)課程,重新優(yōu)化和定義JavaEE,采用最新版本技術(shù)開展教學(xué),致力于為學(xué)員打造最牛的、最新的技術(shù),助力學(xué)員拿下BAT級企業(yè)Offer。
選擇動力節(jié)點(diǎn)Java培訓(xùn),將帶領(lǐng)你成功入門,走上Java開發(fā)工程師之路。想了解更多Java行業(yè)動態(tài)和學(xué)習(xí)資料,登錄動力節(jié)點(diǎn)IT培訓(xùn)官網(wǎng)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743