10道熱門(mén)Java基礎(chǔ)面試題及答案

10道熱門(mén)Java基礎(chǔ)面試題及答案

長(zhǎng)沙達(dá)內(nèi)教育      2022-04-22 00:56:01     23

10道熱門(mén)Java基礎(chǔ)面試題及答案,1、什么是GC?為什么要有GC?GC(Garbage Collection)是垃圾收集的意思,負(fù)責(zé)清除對(duì)象并釋放內(nèi)存。Java提供的GC功能可以自動(dòng)檢

課程價(jià)格 請(qǐng)咨詢(xún)

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

1、什么是GC?為什么要有GC?

GC(Garbage Collection)是垃圾收集的意思,負(fù)責(zé)清除對(duì)象并釋放內(nèi)存。Java提供的GC功能可以自動(dòng)檢測(cè)對(duì)象是否超過(guò)作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,從而防止內(nèi)存泄漏。

2、final,finally和finalize的區(qū)別?

final用于聲明屬性,方法和類(lèi),表示屬性不可變,方法不可被重寫(xiě),類(lèi)不可被繼承。

finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。

finalize是object類(lèi)的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用這個(gè)對(duì)象回收的方法,工垃圾收集時(shí)其他資源的回收,比如關(guān)閉文件。

3、什么是單例模式?實(shí)現(xiàn)步驟?

單例模式保證了對(duì)象唯一。分為懶漢式(在類(lèi)加載時(shí)不初始化)和餓漢式(在類(lèi)加載時(shí)就完成了初始化,所以類(lèi)加載比較慢,但獲取對(duì)象的速度快)。

實(shí)現(xiàn)步驟:私有化構(gòu)造函數(shù)、創(chuàng)建一個(gè)靜態(tài)的私有對(duì)象、提供公共的訪問(wèn)方法。

4、ArrayList和linkedList有何區(qū)別?

ArrayList是基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),linkedList是基于鏈表的數(shù)據(jù)結(jié)構(gòu);對(duì)于隨機(jī)訪問(wèn)get和set,ArrayList較優(yōu),因?yàn)閘inkedList要移動(dòng)指針;對(duì)于新增和刪除操作add和remove,LinedList較優(yōu),因?yàn)锳rrayList要移動(dòng)數(shù)據(jù)。

5、HashMap和Hashtable的區(qū)別?

HashMap允許空鍵值,Hashtable不允許;

HashMap繼承自AbstractMap,Hashtable繼承自Dictionary類(lèi),兩者都實(shí)現(xiàn)了Map接口;HashMap的方法不是同步的,Hashtable的方法是同步的。

6、Iterater和ListIterator之間有什么區(qū)別?

Iterator用來(lái)遍歷Set和List集合,而ListIterator只能遍歷List;Iterator只可以向前遍歷,而LIstIterator可以雙向遍歷;ListIterator從Iterator接口繼承,然后添加了一些額外的功能,比如添加一個(gè)元素、替換一個(gè)元素、獲取前面或后面元素的索引位置。

7、創(chuàng)建線(xiàn)程的方式?

繼承Thread類(lèi)

實(shí)現(xiàn)Runnable接口

使用Executor框架

8、什么是死鎖?

兩個(gè)線(xiàn)程或兩個(gè)以上線(xiàn)程都在等待對(duì)方執(zhí)行完畢才能繼續(xù)往下執(zhí)行的時(shí)候就發(fā)生了死鎖。結(jié)果就是這些線(xiàn)程都陷入了無(wú)限的等待中。

9、wait()與sleep()的區(qū)別?

sleep()來(lái)自Thread類(lèi),wait()來(lái)自O(shè)bject類(lèi);

調(diào)用sleep()方法,線(xiàn)程不會(huì)釋放對(duì)象鎖。而調(diào)用wait方法線(xiàn)程會(huì)釋放對(duì)象鎖;

sleep()睡眠后不出讓系統(tǒng)資源,wait讓其他線(xiàn)程可以占用CPU;

sleep(milliseconds)需要指定一個(gè)睡眠時(shí)間,時(shí)間一到會(huì)自動(dòng)喚醒。而wait()需要配合notify()

或者notifyAll()使用。

10、什么是ThreadLocal?ThreadLocal和Synchonized的區(qū)別?

線(xiàn)程局部變量。是局限于線(xiàn)程內(nèi)部的變量,屬于線(xiàn)程自身所有,不在多個(gè)線(xiàn)程間共享。Java提供ThreadLocal類(lèi)來(lái)支持線(xiàn)程局部變量,是一種實(shí)現(xiàn)線(xiàn)程安全的方式。

synchronized是利用鎖的機(jī)制,使變量或代碼塊在某一時(shí)該只能被一個(gè)線(xiàn)程訪問(wèn)。而ThreadLocal為每一個(gè)線(xiàn)程都提供了變量的副本,使得每個(gè)線(xiàn)程在某一時(shí)間訪問(wèn)到的并不是同一個(gè)對(duì)象,這樣就隔離了多個(gè)線(xiàn)程對(duì)數(shù)據(jù)的數(shù)據(jù)共享。

以上就是長(zhǎng)沙達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“10道熱門(mén)Java基礎(chǔ)面試題及答案”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。

Java面試題及答案

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。