更新時間:2020-08-21 15:57:37 來源:動力節(jié)點 瀏覽2672次
1、什么是GC?為什么要有GC?
GC(Garbage Collection)是垃圾收集的意思,負責(zé)清除對象并釋放內(nèi)存。Java提供的GC功能可以自動檢測對象是否超過作用域從而達到自動回收內(nèi)存的目的,從而防止內(nèi)存泄漏。
2、final,finally和finalize的區(qū)別?
final用于聲明屬性,方法和類,表示屬性不可變,方法不可被重寫,類不可被繼承。
finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
finalize是object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用這個對象回收的方法,工垃圾收集時其他資源的回收,比如關(guān)閉文件。
3、什么是單例模式?實現(xiàn)步驟?
單例模式保證了對象唯一。分為懶漢式(在類加載時不初始化)和餓漢式(在類加載時就完成了初始化,所以類加載比較慢,但獲取對象的速度快)。
實現(xiàn)步驟:私有化構(gòu)造函數(shù)、創(chuàng)建一個靜態(tài)的私有對象、提供公共的訪問方法。
4、ArrayList和LinkedList有何區(qū)別?
ArrayList是基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList是基于鏈表的數(shù)據(jù)結(jié)構(gòu);對于隨機訪問get和set,ArrayList較優(yōu),因為LinkedList要移動指針;對于新增和刪除操作add和remove,LinedList較優(yōu),因為ArrayList要移動數(shù)據(jù)。
5、HashMap和Hashtable的區(qū)別?
HashMap允許空鍵值,Hashtable不允許;
HashMap繼承自AbstractMap,Hashtable繼承自Dictionary類,兩者都實現(xiàn)了Map接口;HashMap的方法不是同步的,Hashtable的方法是同步的。
6、Iterater和ListIterator之間有什么區(qū)別?
Iterator用來遍歷Set和List集合,而ListIterator只能遍歷List;Iterator只可以向前遍歷,而LIstIterator可以雙向遍歷;ListIterator從Iterator接口繼承,然后添加了一些額外的功能,比如添加一個元素、替換一個元素、獲取前面或后面元素的索引位置。
7、創(chuàng)建線程的方式?
繼承Thread類
實現(xiàn)Runnable接口
使用Executor框架
8、什么是死鎖?
兩個線程或兩個以上線程都在等待對方執(zhí)行完畢才能繼續(xù)往下執(zhí)行的時候就發(fā)生了死鎖。結(jié)果就是這些線程都陷入了無限的等待中。
9、wait()與sleep()的區(qū)別?
sleep()來自Thread類,wait()來自O(shè)bject類;
調(diào)用sleep()方法,線程不會釋放對象鎖。而調(diào)用wait方法線程會釋放對象鎖;
sleep()睡眠后不出讓系統(tǒng)資源,wait讓其他線程可以占用CPU;
sleep(milliseconds)需要指定一個睡眠時間,時間一到會自動喚醒。而wait()需要配合notify()
或者notifyAll()使用。
10、什么是ThreadLocal?ThreadLocal和Synchonized的區(qū)別?
線程局部變量。是局限于線程內(nèi)部的變量,屬于線程自身所有,不在多個線程間共享。Java提供ThreadLocal類來支持線程局部變量,是一種實現(xiàn)線程安全的方式。
synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。而ThreadLocal為每一個線程都提供了變量的副本,使得每個線程在某一時間訪問到的并不是同一個對象,這樣就隔離了多個線程對數(shù)據(jù)的數(shù)據(jù)共享。
以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“10道熱門Java基礎(chǔ)面試題及答案”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743