更新時間:2019-04-09 08:56:17 來源:動力節(jié)點 瀏覽7215次
想讓面試官在短短的幾十分鐘內(nèi)認可你的能力?想在最短的時間內(nèi)收獲Java技術(shù)棧最核心的知識點?想要更全面更深入的了解Java技術(shù)?這篇Java常見面試題文章給你想要的所有答案。
1.集合的作用是什么?
數(shù)據(jù)的傳送增、刪、改、查、constainsAll,可以存放不同類型的對象。
2.集合的通用方法有那些?通用方法是什么?(操作)
集合List的遍歷方法有:
Collection的通用方法有:
3.說出ArrayList,Vector,LinkedList的存儲性能和特性HashMap和Hashtable的區(qū)別
HashMap與Hashtable都實現(xiàn)的Map接口,HashTable線程安全,HashMap線程不安全。
4.Collection和Collections的區(qū)別。
Collection是集合的根接口,其下有set及l(fā)ist
Collections是集合的算法。
5.Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢?是用==還是equals()?它們有何區(qū)別?用contains來區(qū)分是否有重復(fù)的對象,還是都不用。
在比較時先調(diào)用hashCode方法,如果不相同,證明不相等。
如果相同,再調(diào)用equals方法,如果equals方法相同,證明相等,不相同,證明不相等。
==:主要用在基本數(shù)據(jù)類型及引用
Equals:主要是對象或?qū)ο笠玫谋容^。
集合中是否包含某一個元素用contains來判斷。
6.List,Set,Map是否繼承自Collection接口?
List,set繼承于Collection
Map沒有繼承于Collection,其相對是獨立的。
屬于Collection類型的對象,可以通過構(gòu)造函數(shù)將一個集合構(gòu)造成另外一個集合。
7.面向?qū)ο蟮奶卣饔心男┓矫?
8.String是最基本的數(shù)據(jù)類型嗎?
基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。
java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節(jié)省空間,我們應(yīng)該用StringBuffer類
9.int和Integer有什么區(qū)別?
Int是基本數(shù)據(jù)類型,不是對象,占一個內(nèi)存空間,沒有方法。與其同類的有l(wèi)ong,char,doble
Integer是封裝類,具有方法及屬性。與其同類的有Long,Double.Float
10.運行時異常與一般異常有何異同?
運行時異常:javaJVM拋出的異常,代碼中不用處理。
一般異常:用戶拋出的異常,如果用throws聲明了,調(diào)用這個方法的代碼必須對其處理。
11.&和&&的區(qū)別?
&:與:左邊若為false右邊還執(zhí)行。
&&:短路與,左邊若為false右邊不執(zhí)行。
12.final,finally,finalize的區(qū)別?
final用于聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
finally是異常處理語句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
finalize是Object類的一個方法,在垃圾收集器執(zhí)行的時候會調(diào)用被回收對象的此方法,
可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關(guān)閉文件等。
算符可以用來決定某對象的類是否實現(xiàn)了接口。
13.heap和stack有什么區(qū)別?
棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進先出的方式進行處理。
堆是棧的一個組成元素
14.StaticNestedClass和InnerClass的不同?
StaticNestedClass是被聲明為靜態(tài)(static)的內(nèi)部類,它可以不依賴于外部類實例被實例化。而通常的內(nèi)部類需要在外部類實例化后才能實例化。
15.什么時候用assert?
assertion(斷言)在軟件開發(fā)中是一種常用的調(diào)試方式,很多開發(fā)語言中都支持這種機制。在實現(xiàn)中,assertion就是在程序中的一條語句,它對一個boolean表達式進行檢查,一個正確程序必須保證這個boolean表達式的值為true;如果該值為false,說明程序已經(jīng)處于不正確的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來說,assertion用于保證程序最基本、關(guān)鍵的正確性。assertion檢查通常在開發(fā)和測試時開啟。為了提高性能,在軟件發(fā)布后,assertion檢查通常是關(guān)閉的。
16.GC是什么?為什么要有GC?
GC是垃圾收集的意思(GabageCollection),內(nèi)存處理是編程人員容易出現(xiàn)問題的地方,忘記或者錯誤的內(nèi)存回收會導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動監(jiān)測對象是否超過作用域從而達到自動回收內(nèi)存的目的,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法。
17.shorts1=1;s1=s1+1;有什么錯?shorts1=1;s1+=1;有什么錯?
shorts1=1;s1=s1+1;(s1+1運算結(jié)果是int型,需要強制轉(zhuǎn)換類型)shorts1=1;s1+=1;(可以正確編譯)
18.Math.round(11.5)等於多少?Math.round(-11.5)等於多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回與參數(shù)最接近的長整數(shù),參數(shù)加1/2后求其floor.
19.Java有沒有g(shù)oto?
java中的保留字,現(xiàn)在沒有在java中使用。
20.給我一個你最常見到的runtimeexception
ArithmeticException,ArrayStoreException,BufferOverflowException,
BufferUnderflowException,CannotRedoException,CannotUndoException,
ClassCastException,CMMException,ConcurrentModificationException,DOMException,
EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,
IllegalPathStateException,IllegalStateException,ImagingOpException,
IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,
NoSuchElementException,NullPointerException,ProfileDataException,
ProviderException,RasterFormatException,SecurityException,SystemException,
UndeclaredThrowableException,UnmodifiableSetException,
UnsupportedOperationException
一般異常:
IOException
FileNotFoundException
SqlException
21.接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承實體類(concreteclass)?
接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口,抽象類是否可繼承實體類。
22.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?
都不能
23.數(shù)組有沒有l(wèi)ength()這個方法?String有沒有l(wèi)ength()這個方法?
數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength這個屬性
String有l(wèi)ength()這個方法.
24.構(gòu)造器Constructor是否可被override?
構(gòu)造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
25.是否可以繼承String類?
String類是final類故不可以繼承。
26.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個整數(shù)表達式。因此傳遞給switch和case語句的參數(shù)應(yīng)
該是int、short、char或者byte。long,string都不能作用于swtich。
27.try{}里有一個return語句,那么緊跟在這個try后的finally{}里的code會不會被執(zhí)行,什么時候被執(zhí)行,在return前還是后?
會執(zhí)行,在return前執(zhí)行。
28.兩個對象值相同(x.equals(y)==true),但卻可有不同的hashcode,這句話對不對?
對,有相同的hashcode。
29.當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
是引用傳遞
基本數(shù)據(jù)類型:值
對象:引用
30.編程題:寫一個Singleton出來。
Singleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存在。
一般Singleton模式通常有幾種種形式:
第一種形式:定義一個類,它的構(gòu)造函數(shù)為private的,它有一個static的private的該類變量,在類初始化時實例話,通過一個public的getInstance方法獲取對它的引用,繼而調(diào)用其中的方法。
publicclassSingleton{
privateSingleton(){}
//在自己內(nèi)部定義自己一個實例,是不是很奇怪?
//注意這是private只供內(nèi)部調(diào)用
privatestaticSingletoninstance=newSingleton();
//這里提供了一個供外部訪問本class的靜態(tài)方法,可以直接訪問
publicstaticSingletongetInstance(){
returninstance;
}
}
第二種形式:
publicclassSingleton{
privatestaticSingletoninstance=null;
publicstaticsynchronizedSingletongetInstance(){
//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次
//使用時生成實例,提高了效率!
if(instance==null)
instance=newSingleton();
returninstance;}
}
其他形式:
定義一個類,它的構(gòu)造函數(shù)為private的,所有方法為static的。
一般認為第一種形式要更加安全些
30.Java中的異常處理機制的簡單原理和應(yīng)用。
31.垃圾回收的優(yōu)點和原理。并考慮2種回收機制。
優(yōu)點:程序員不用管內(nèi)存,jvm自動完成,開發(fā)方便。運行優(yōu)先非常低,程序無法清楚實例什么時候被消毀。
32.描述一下JVM加載class文件的原理機制?
JVM中類的裝載是由ClassLoader和它的子類來實現(xiàn)的,JavaClassLoader是一個重要的Java運行時系統(tǒng)組件。它負責(zé)在運行時查找和裝入類文件的類。
34.char型變量中能不能存貯一個中文漢字?為什么?
能夠定義成為一個中文的,因為java中以unicode編碼,一個char占16個字節(jié),所以放一個中文是沒問題的
相關(guān)Java面試題推薦
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743