0074 几道面试题
昨天參加了惠裝網(wǎng)的面試,有些題不會(huì)做的,記錄下來(lái)
switch語(yǔ)句能否作用在byte、long、String上
Java1.7以前:byte、short、int、char
Java1.7開(kāi)始:新增String
因此switch語(yǔ)句不能作用在long上,看下面代碼:
Java中如何跳出當(dāng)前的多重嵌套循環(huán)
先看代碼:
public class Test {public static void main(String[] args) {lable1:for(int i=0;i<8;i++) { //循環(huán)1System.out.println("i= "+i); lable2:for(int j=0;j<5;j++) { //循環(huán)2System.out.println(" j= " + j); lable3:for(int m=0;m<2;m++) { //循環(huán)3if (j == 2) {System.out.println(" j==2 break lable2;");break lable2; //j==2時(shí),退出循環(huán)2,也就是上層循環(huán)}System.out.println(" m= " + m);}}}} }break語(yǔ)句一般只能退出當(dāng)前循環(huán)
嵌套循環(huán)中如果要退出上面幾層的循環(huán),那得先給該層循環(huán)定義一個(gè)標(biāo)簽,在break語(yǔ)句處指定標(biāo)簽名即可
注意的是,break只能退出包含了這個(gè)break語(yǔ)句的代碼塊,包括直接和間接的
break除了可用于退出嵌套循環(huán),實(shí)際上可用于用標(biāo)簽定義的代碼塊,比如下面這樣
HashTable與HashMap的區(qū)別
同步:HashTable的方法是同步的,而HashMap不是
null:HashTable的key和value都不能有null,而HashMap的key可以有一個(gè)null,value可以有多個(gè)null
遍歷:HashTable和HashMap都有values()、entrySet()、keySet()方法返回key的集合進(jìn)行遍歷,但HashTable多了個(gè)elements()方法,可以返回Enumeration對(duì)象進(jìn)行遍歷
hash值:HashTable直接使用Object的hashCode()的返回值,但HashMap還要進(jìn)行一番計(jì)算
數(shù)組大小:HashTable默認(rèn)大小是11,增加方式是2*old+1; 而HashMap默認(rèn)是16,成倍增加
參考:http://blog.csdn.net/tianfeng701/article/details/7588091
hashCode()方法的作用
在HashMap、HashTable等集合類中,用于確定元素的存放位置,可以實(shí)現(xiàn)快速查找
其他: 兩個(gè)對(duì)象equals那么其hashCode一定要想等,反過(guò)來(lái),hashCode相等,不一定equals,一個(gè)桶里可以放多個(gè)不equals的對(duì)象
序列化接口的id有什么用
可以將一個(gè)對(duì)象保存到硬盤或者在網(wǎng)絡(luò)上傳輸,這就需要對(duì)象的序列化。
查看Java標(biāo)準(zhǔn)庫(kù)中的類,很多都有一個(gè)“serialVersionUID”的屬性,比如HashMap是這樣的:
這個(gè)serialVersionUID的作用是什么呢?
就是為了保證對(duì)象在反序列化后的類跟序列化前的類能夠兼容。誰(shuí)知道一個(gè)對(duì)象序列化后多久會(huì)反序列化呢,幾秒、幾天還是幾年,萬(wàn)一反序列化的時(shí)候,原來(lái)的那個(gè)類進(jìn)行了很多修改呢,還能反序列化為那個(gè)類型嗎?
簡(jiǎn)單的說(shuō),這個(gè)id就是為了版本的兼容性。
那么如何指定這個(gè)id呢?
如果不特別指定,那系統(tǒng)會(huì)根據(jù)這個(gè)類的成員變量等信息計(jì)算一個(gè)hash。這種情況下,如果一個(gè)類后來(lái)增加刪除了幾個(gè)屬性,就很可能導(dǎo)致反序列化的失敗。因此最好還是自己指定一個(gè)id。
是不是id相同,就一定能反序列化成功呢?不是。如果那個(gè)類進(jìn)行了一些非兼容性改動(dòng),那即使id相同,也會(huì)失敗。
構(gòu)造器是否能被重寫
不能。構(gòu)造器不能被繼承,不能被重寫??梢灾剌d
Java中是否存在內(nèi)存泄漏
Java有垃圾回收機(jī)制,不可達(dá)對(duì)象都會(huì)被垃圾回收器自動(dòng)回收,一般而言,不會(huì)出現(xiàn)內(nèi)存泄漏,但還是有可能的。
如果內(nèi)存中存在大量的無(wú)用但可達(dá)的對(duì)象、長(zhǎng)生命周期對(duì)象持有短生命周期對(duì)象,內(nèi)存就可能會(huì)爆掉??紤]這兩種情況
轉(zhuǎn)載于:https://www.cnblogs.com/sonng/p/7246238.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的0074 几道面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 银行卡怎么进行区分?(信用卡、借记卡、储
- 下一篇: ubantu之Git使用