Java面試題(精選)
引導(dǎo)語(yǔ):面試Java崗位,就要做好充分的應(yīng)試準(zhǔn)備,以下是小編整理的Java面試題(精選),歡迎參考閱讀!
1、Collection 和 Collections的區(qū)別?
Collection是集合的根接口,其下有set及l(fā)ist
Collections是集合的算法。
2、Set里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?用contains來(lái)區(qū)分是否有重復(fù)的對(duì)象。還是都不用?
在比較時(shí)先調(diào)用hashCode方法,如果不相同,證明不相等。
如果相同,再調(diào)用equals方法,如果equals方法相同,證明相等,不相同,證明不相等。
==:主要用在基本數(shù)據(jù)類(lèi)型及引用
equals:主要是對(duì)象或?qū)ο笠玫谋容^。
集合中是否包含某一個(gè)元素用contains來(lái)判斷。
3、List, Set, Map是否繼承自Collection接口?
List,set繼承于Collection
Map沒(méi)有繼承于Collection,其相對(duì)是獨(dú)立的。
屬于Collection類(lèi)型的對(duì)象,可以通過(guò)構(gòu)造函數(shù)將一個(gè)集合構(gòu)造成另外一個(gè)集合。
4、面向?qū)ο蟮奶卣饔心男┓矫妫?/strong>
1.抽象:
找共性,將共有的屬性、方法放到父類(lèi)中
2.繼承:
子類(lèi)繼承于父類(lèi),具有父類(lèi)的所有屬性與方法,可以重用,也可以覆蓋。
3.封裝:
一個(gè)類(lèi)包括多個(gè)屬性及方法。
4. 多態(tài)性:
5、String是最基本的數(shù)據(jù)類(lèi)型嗎?
基本數(shù)據(jù)類(lèi)型包括byte、int、char、long、float、double、boolean和short。
java.lang.String類(lèi)是final類(lèi)型的,因此不可以繼承這個(gè)類(lèi)、不能修改這個(gè)類(lèi)。為了提高效率節(jié)省空間,我們應(yīng)該用StringBuffer類(lèi)
6、int 和 Integer 有什么區(qū)別?
int 是基本數(shù)據(jù)類(lèi)型,不是對(duì)象,占一個(gè)內(nèi)存空間,沒(méi)有方法。與其同類(lèi)的有l(wèi)ong,char,doble
Integer是封裝類(lèi),具有方法及屬性。與其同類(lèi)的有Long,Double.Float
7、運(yùn)行時(shí)異常與一般異常有何異同?
運(yùn)行時(shí)異常:JVM拋出的異常,代碼中不用處理。
一般異常:用戶拋出的異常,如果用throws 聲明了,調(diào)用這個(gè)方法的代碼必須對(duì)其處理。
8、&和&&的區(qū)別?
&:與: 左邊若為false右邊還執(zhí)行。
&&:短路與,左邊若為false右邊不執(zhí)行。
9、final, finally, finalize的區(qū)別?
final 用于聲明屬性,方法和類(lèi),分別表示屬性不可變,方法不可覆蓋,類(lèi)不可繼承。
finally是異常處理語(yǔ)句結(jié)構(gòu)的一部分,表示總是執(zhí)行。
finalize是Object類(lèi)的一個(gè)方法,在垃圾收集器執(zhí)行的時(shí)候會(huì)調(diào)用被回收對(duì)象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。
10、heap和stack有什么區(qū)別?
棧是一種線形集合,其添加和刪除元素的操作應(yīng)在同一段完成。棧按照后進(jìn)先出的方式進(jìn)行處理。堆是棧的一個(gè)組成元素
11、Static Nested Class 和 Inner Class的不同?
Static Nested Class是被聲明為靜態(tài)(static)的內(nèi)部類(lèi),它可以不依賴(lài)于外部類(lèi)實(shí)例被實(shí)例化。而通常的內(nèi)部類(lèi)需要在外部類(lèi)實(shí)例化后才能實(shí)例化。
12、GC是什么? 為什么要有GC?
GC是垃圾收集的意思(Gabage Collection),內(nèi)存處理是編程人員容易出現(xiàn)問(wèn)題的地方,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動(dòng)監(jiān)測(cè)對(duì)象是否超過(guò)作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的,Java語(yǔ)言沒(méi)有提供釋放已分配內(nèi)存的顯示操作方法。
13、short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?
short s1 = 1; s1 = s1 + 1; (s1+1運(yùn)算結(jié)果是int型,需要強(qiáng)制轉(zhuǎn)換類(lèi)型)
short s1 = 1; s1 += 1;(可以正確編譯)
14、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
round方法返回與參數(shù)最接近的長(zhǎng)整數(shù),參數(shù)加1/2后求其floor.
15、Java有沒(méi)有g(shù)oto?
java中的保留字,現(xiàn)在沒(méi)有在java中使用。
16、給出一個(gè)你最常見(jiàn)到的runtime exception
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
17、數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法?
數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength這個(gè)屬性
String有l(wèi)ength()這個(gè)方法.
18、構(gòu)造器Constructor是否可被override?
構(gòu)造器Constructor不能被繼承,因此不能重寫(xiě)Overriding,但可以被重載Overloading。
19、是否可以繼承String類(lèi)?
String類(lèi)是final類(lèi)故不可以繼承。
20、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語(yǔ)句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
21、try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?
會(huì)執(zhí)行,在return前執(zhí)行。
22、兩個(gè)對(duì)象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對(duì)不對(duì)?
不對(duì),有相同的 hash code
這是java語(yǔ)言的定義:
1) 對(duì)象相等則hashCode一定相等;
2) hashCode相等對(duì)象未必相等
23、四種會(huì)話跟蹤技術(shù)?
Cookie
Session
Hidden
url 重寫(xiě)
24、寫(xiě)一個(gè)Singleton出來(lái)。
Singleton模式主要作用是保證在Java應(yīng)用程序中,一個(gè)類(lèi)只有一個(gè)實(shí)例存在。
一般Singleton模式通常有幾種種形式:
第一種形式: 定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,它有一個(gè)static的private的該類(lèi)變量,在類(lèi)初始化時(shí)實(shí)例話,通過(guò)一個(gè)public的getInstance方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。
public class Singleton {
private Singleton(){}
//在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?
//注意這是private 只供內(nèi)部調(diào)用
private static Singleton instance = new Singleton();
//這里提供了一個(gè)供外部訪問(wèn)本class的靜態(tài)方法,可以直接訪問(wèn)
public static Singleton getInstance() {
return instance;
}
}
第二種形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次
//使用時(shí)生成實(shí)例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
其他形式:
定義一個(gè)類(lèi),它的構(gòu)造函數(shù)為private的,所有方法為static的。
一般認(rèn)為第一種形式要更加安全些
25、Java中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。
原理: 有錯(cuò)直接轉(zhuǎn)到異常處理部分或向上拋出。
應(yīng)用:JAVA的異常就是錯(cuò)誤,有兩種,一種是運(yùn)行時(shí),編碼可以不用捕捉。一種是一般異常,如果throws聲明了,必須進(jìn)行處理。
26、描述一下JVM加載class文件的原理機(jī)制?
JVM中類(lèi)的裝載是由ClassLoader和它的子類(lèi)來(lái)實(shí)現(xiàn)的,Java ClassLoader 是一個(gè)重要的Java運(yùn)行時(shí)系統(tǒng)組件。它負(fù)責(zé)在運(yùn)行時(shí)查找和裝入類(lèi)文件的類(lèi)。
【Java面試題】相關(guān)文章:
java面試題05-20
Java線程面試題05-23
Java原理面試題07-13
高級(jí)Java面試題精選06-02
Java 問(wèn)答面試題04-21
Java開(kāi)發(fā)崗位面試題06-17
Java基礎(chǔ)面試題集錦04-17
java編程筆試面試題05-30