大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 2020年中級Java工程師筆試題

2020年中級Java工程師筆試題

更新時間:2020-06-24 13:09:03 來源:動力節(jié)點 瀏覽2786次

String str=new String("xyz");創(chuàng)建了幾個對象。

答:兩個

延伸:

String s1="a";
String s2="a";
System.out.print(s1==s2);

輸出是True

因為:原因是Java為了避免產生大量的String對象,設計了一個字符串常量池。工作原理是這樣的,創(chuàng)建一個字符串時,JVM首先為檢查字符串常量池中是否有值相等的字符串,如果有,則不再創(chuàng)建,直接返回該字符串的引用地址,若沒有,則創(chuàng)建,然后放到字符串常量池中,并返回新創(chuàng)建的字符串的引用地址。

4,說幾個你常見到的異常。

答:

空指針異常:NullPointerException

數(shù)組下表越界異常:ArrayIndexOutOfBoundsException

內存不足錯誤:java.lang.OutOfMemoryError

字符串轉換為數(shù)字異常:NumberFormatException

hashtable和hashmap的區(qū)別是什么?

答;

1)、繼承的父類不同

Hashtable繼承自Dictionary類,而HashMap繼承自AbstractMap類。但二者都實現(xiàn)了Map接口。

2)、線程安全性不同

javadoc中關于hashmap的一段描述如下:此實現(xiàn)不是同步的。如果多個線程同時訪問一個哈希映射,而其中至少一個線程從結構上修改了該映射,則它必須保持外部同步

Hashtable中的方法是Synchronize的

3)、是否提供contains方法

HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因為contains方法容易讓人引起誤解。

Hashtable則保留了contains,containsValue和containsKey三個方法,其中contains和containsValue功能相同。

4)、key和value是否允許null值

Hashtable中,key和value都不允許出現(xiàn)null值。但是如果在Hashtable中有類似put(null,null)的操作,編譯同樣可以通過,因為key和value都是Object類型,但運行時會拋出NullPointerException異常,這是JDK的規(guī)范規(guī)定的。

HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值為null。當get()方法返回null值時,可能是HashMap中沒有該鍵,也可能使該鍵所對應的值為null。因此,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵,而應該用containsKey()方法來判斷。

5)、兩個遍歷方式的內部實現(xiàn)上不同

Hashtable、HashMap都使用了Iterator。而由于歷史原因,Hashtable還使用了Enumeration的方式

6)、hash值不同

(另一種解釋:

Hashtable計算hash是直接使用key的hashcode對table數(shù)組的長度直接進行取模:

int hash=key.hashCode();

int index=(hash&0x7FFFFFFF)%tab.length;

2,HashMap計算hash對key的hashcode進行了二次hash,以獲得更好的散列值,然后對table數(shù)組長度取摸:

static int hash(int h){
h^=(h>>>20)^(h>>>12);
return h^(h>>>7)^(h>>>4);
}

static int indexFor(int h,int length){
return h&(length-1);
}
)

哈希值的使用不同,HashTable直接使用對象的hashCode。而HashMap重新計算hash值。

hashCode是jdk根據對象的地址或者字符串或者數(shù)字算出來的int類型的數(shù)值。

Hashtable計算hash值,直接用key的hashCode(),而HashMap重新計算了key的hash值,Hashtable在求hash值對應的位置索引時,用取模運算,而HashMap在求位置索引時,則用與運算,且這里一般先用hash&0x7FFFFFFF后,再對length取模,&0x7FFFFFFF的目的是為了將負的hash值轉化為正值,因為hash值有可能為負數(shù),而&0x7FFFFFFF后,只有符號外改變,而后面的位都不變。

7)、內部實現(xiàn)使用的數(shù)組初始化和擴容方式不同

HashTable在不指定容量的情況下的默認容量為11,而HashMap為16,Hashtable不要求底層數(shù)組的容量一定要為2的整數(shù)次冪,而HashMap則要求一定為2的整數(shù)次冪。

Hashtable擴容時,將容量變?yōu)樵瓉淼?倍加1,而HashMap擴容時,將容量變?yōu)樵瓉淼?倍。

Hashtable和HashMap它們兩個內部實現(xiàn)方式的數(shù)組的初始大小和擴容的方式。HashTable中hash數(shù)組默認大小是11,增加的方式是old*2+1。

hashmap的底層實現(xiàn)方式是什么?

HashMap的底層通過位桶實現(xiàn),位桶里面存的是鏈表(1.7以前)或者紅黑樹(有序,1.8開始),其實就是數(shù)組加鏈表(或者紅黑樹)的格式,通過判斷hashCode定位位桶中的下標,通過equals定位目標值在鏈表中的位置,所以如果你使用的key使用可變類(非final修飾的類),那么你在自定義hashCode和equals的時候一定要注意要滿足:如果兩個對象equals那么一定要hashCode相同,如果是hashCode相同的話不一定要求equals!所以一般來說不要自定義hashCode和equls,推薦使用不可變類對象做key,比如Integer、String等等。

2020年中級Java工程師筆試題

以上就是動力節(jié)點java培訓機構的小編針對“2020年中級Java工程師筆試題”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久日韩精品中文字幕网 | 亚洲女精品一区二区三区 | 国产一区三区二区中文在线 | 亚洲日韩aⅴ在线视频 | 成人久草 | 国产成人精品久久一区二区三区 | 欧美日本视频在线观看 | 九九艹| 午夜伦情电午夜伦情影院 | 美国成人毛片 | 青青久久国产成人免费网站 | 亚洲精品123区在线观看 | 性欧美video另类3d | 亚洲成年网站 | 日本又黄又爽又色的视频免费 | 久久久成人影院 | 日日摸夜夜摸狠狠摸97 | 四虎国产永久免费久久 | 手机在线观看亚洲国产精品 | 大色佬视频在线观看 | 色综合桃花网 | 精品国产调教最大网站女王 | 91日韩精品天海翼在线观看 | 欧美午夜在线 | 免费真实播放国产乱子伦 | 欧美视频亚洲 | 99爱免费观看视频在线 | 宅男看片午夜大片啪啪mv | 91麻豆精品国产91久久久久久 | 伊人久久中文字幕 | 亚洲国产一区二区三区四区五区 | 欧美性猛交xxxx免费看久久 | 91系列在线观看 | 四虎精品成人免费视频 | 中文字幕在线播 | 四虎永久在线精品国产免费 | 天天摸天天操天天干 | 亚洲国产人成在线观看69网站 | 国产欧美精品国产国产专区 | 国产剧情自拍 | 国产三级精品三级男人的天堂 |