更新時(shí)間:2019-08-12 13:43:52 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2888次
多線程和并發(fā)方面的問(wèn)題是Java程序員在面試中不可避免的問(wèn)題,想要在面試中從容面對(duì)這些問(wèn)題,那么在平時(shí)一定要對(duì)多線程和并發(fā)有清楚的了解。下面,動(dòng)力節(jié)點(diǎn)Java培訓(xùn)老師就分享五個(gè)常見(jiàn)的Java多線程面試題及回答。

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