1星:Java的基本數(shù)據(jù)類型有哪些
boolean,char,byte,short,int,long,float,double
1星:==和equals的區(qū)別
引用地址比較和對象內(nèi)容比較
1星:String類型在Java中是不可變的
不可變對象可以提高String Pool(字符串常量池)的效率和安全性
1星:HashMap 和 Hashtable 有什么區(qū)別?
一. HashMap可以接受null鍵和值,HashTable不行
二. HashTable是線程安全的,通過synchronized來保證,而HashMap線程不安全
三. HashMap的迭代器是fail-fast迭代器,而HashTable的enumerator迭代器不是fail-fast.
2星:在程序開發(fā)中晴叨,異常的處理方式
2星:值傳遞和引用傳遞
值傳遞是對基本型變量而言的,傳遞的是該變量的一個副本,改變副本不影響原變量.
引用傳遞一般是對于對象型變量而言的,傳遞的是該對象地址的一個副本, 并不是原對象本身 初厚。 所以對引用對象進行操作會同時改變原對象.
2星:深拷貝和淺拷貝的區(qū)別是什么?
淺拷貝:被復(fù)制對象的所有變量都含有與原來的對象相同的值,而所有的對其他對象的引用仍然指向原來的對象产禾。換言之绪杏,淺拷貝僅僅復(fù)制所考慮的對象下愈,而不復(fù)制它所引用的對象蕾久。
深拷貝:被復(fù)制對象的所有變量都含有與原來的對象相同的值,而那些引用其他對象的變量將指向被復(fù)制過的新對象履因,而不再是原有的那些被引用的對象盹愚。換言之,深拷貝把要復(fù)制的對象所引用的對象都復(fù)制了一遍皆怕。
3星:當(dāng)一個線程調(diào)用了cancel方法時,內(nèi)部如何處理的
調(diào)用calcel方法憋活,傳入true會中斷線程停止任務(wù)虱黄,傳入false則會讓線程正常執(zhí)行至完成
1:主線程調(diào)用子線程的cancel方法時,會在子線程內(nèi)部設(shè)置中斷標(biāo)志位置為true
2:當(dāng)子線程此時為運行狀態(tài)橱乱,則不會對此線程產(chǎn)生任何影響
3:當(dāng)子線程從等待狀態(tài)進入到運行狀態(tài)時取视,會判斷當(dāng)前線程的中斷標(biāo)志是否為true
4:結(jié)束任務(wù)的正常運行狀態(tài)嗤锉,并拋出InterruptedException
3星:如果你提交任務(wù)時系宫,線程池隊列已滿刀崖。會時發(fā)會生什么?
如果你使用的LinkedBlockingQueue属韧,也就是無界隊列的話蛤吓,沒關(guān)系,繼續(xù)添加任務(wù)到阻塞隊列中等待執(zhí)行锅棕,因為LinkedBlockingQueue可以近乎認為是一個無窮大的隊列淌山,可以無限存放任務(wù);
如果你使用的是有界隊列比方說ArrayBlockingQueue的話泼疑,任務(wù)首先會被添加到ArrayBlockingQueue中,ArrayBlockingQueue滿了移稳,則會使用拒絕策略RejectedExecutionHandler處理滿了的任務(wù)会油,默認是AbortPolicy。
3星:Java的內(nèi)存劃分
寄存器:記錄正在執(zhí)行的JVM指令的地址
本地方法棧:保存native方法進入?yún)^(qū)域的地址
方法區(qū):method(方法區(qū))又叫靜態(tài)區(qū)翻翩,存放所有的①類(class),②靜態(tài)變量(static變量)胶征,③靜態(tài)方法絮吵,④常量和⑤成員方法
堆內(nèi)存:類的對象放在heap中
棧內(nèi)存:對象的引用存放在堆內(nèi)存中
3星:Java的垃圾回收算法有哪些
引用計數(shù)法
可達性分析算法
標(biāo)記-清除算法
分代收集算法
4星:請簡述可達性分析算法和垃圾回收過程
GCRoots的對象做為起點,從起點開始向下搜索暇昂,搜索的走過路徑叫引用鏈,當(dāng)一個對象到GCRoots沒有引用鏈時急波,判斷對象死亡瘪校。
在jvm中名段,做為GCRoots的對象:
虛擬機棧(棧楨中的本地變量表)中的引用的對象
方法區(qū)中的類靜態(tài)屬性引用的對象
方法區(qū)中的常量引用的對象
本地方法棧中JNI的引用的對象
當(dāng)一個對象進入到垃圾回收過程時泣懊,會調(diào)用對象的finalize方法