大家對vivo一定不陌生,vivo是一家全球性的移動互聯(lián)網(wǎng)智能終端公司,有很多小伙伴都想加入其中。要想進入vivo當java程序員,也會遇到j(luò)ava筆試題,小編整理了一下vivo校招JAVA筆試題總結(jié),希望能夠?qū)Υ蠹矣兴鶐椭?/p>
1、接口,抽象類,以及實現(xiàn),說明一下區(qū)別;優(yōu)缺點,大概這個樣子。
大致區(qū)別:
接口支持多實現(xiàn),類不支持多繼承,這樣接口更利于擴展;
實現(xiàn)接口,必須實現(xiàn)接口中的所有方法,繼承抽象類,卻不一定要實現(xiàn)他的所有方法;
接口中成員變量都必須被public static final,成員函數(shù)都必須被public abstract修飾,抽象類中可以用public protected default abstract;
抽象類的方法可以有默認實現(xiàn),但是接口不可以;
抽象類的速度要比接口快;
添加新方法:接口,要添加就必須修改實現(xiàn)類,抽象函數(shù)卻可以有默認的實現(xiàn);
2、HashMap與HashTable的區(qū)別:
底層數(shù)據(jù)結(jié)果哈希表,特點和HashMap是一樣的;
Hashtable線程安全集合,運行速度慢;
HashMap線程不安全的集合,運行速度快;
Hashtable命運和Vector是一樣的,從JDK1.2開始,被更先進的HashMap取代;
HashMap允許存儲nu11值,nu11鍵;
Hashtable 不允許存儲nu11值,nu11鍵;
3、HashMap存儲,兩個鍵值對中key如果哈希值相同是怎么存儲的?
哈希值相同,但內(nèi)容不相同,采用桶存儲;
哈希值相同,equals()比較內(nèi)容也相同的話,就不存儲,因為這個情況下,key相等,不允許這種情況發(fā)生;
擴充:
HashMap和和Hashtable都是基于哈希表存儲數(shù)據(jù)的,具體就是:內(nèi)部維護了一個存儲數(shù)據(jù)的Entry數(shù)組,HashMap采用鏈表解決沖突,每一個Entry本質(zhì)上是一個單向鏈表。當準備添加一個key-value對時,首先通過hash(key)方法計算hash值,然后通過indexFor(hash,length)求該key-value對的存儲位置,計算方法是先用hash&0x7FFFFFFF后,再對length取模,這就保證每一個key-value對都能存入HashMap中,當計算出的位置相同時,由于存入位置是一個鏈表,則把這個key-value對插入鏈表頭。
4、StringBuffer與StringBuilder的比較:
前者線程安全,但是速度慢,后者線程不安全,但速度快。
StringBuilder類提供與StringBuffer 相同的方法。
以上就是長沙牛耳教育java培訓機構(gòu)的小編針對“vivo校招JAVA筆試題總結(jié)”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
Java筆試題