更新時(shí)間:2019-04-09 08:56:17 來源:動力節(jié)點(diǎn) 瀏覽7856次
想讓面試官在短短的幾十分鐘內(nèi)認(rèn)可你的能力?想在最短的時(shí)間內(nèi)收獲Java技術(shù)棧最核心的知識點(diǎn)?想要更全面更深入的了解Java技術(shù)?這篇Java常見面試題文章給你想要的所有答案。

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

初級 202925

初級 203221

初級 202629

初級 203743