一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

Java面試題集

時(shí)間:2022-12-10 22:23:14 面試問(wèn)題 我要投稿
  • 相關(guān)推薦

Java面試題集

Java面試題集

2006-12-18 16:27:11

第一,談?wù)刦inal, finally, finalize的區別。
final 用于聲明屬性,方法和類(lèi),分別表示屬性不可變,方法不可覆蓋,類(lèi)不可繼承。
finally是異常處理語(yǔ)句結構的一部分,表示總是執行。
finalize是Object類(lèi)的一個(gè)方法,在垃圾收集器執行的時(shí)候會(huì )調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時(shí)的其他資源回收,例如關(guān)閉文件等。

第二,Anonymous Inner Class (匿名內部類(lèi)) 是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現)interface(接口)?
可以繼承其他類(lèi)或完成其他接口,在swing編程中常用此方式。

第三,Static Nested Class 和 Inner Class的不同,說(shuō)得越多越好(面試題有的很籠統)。
Static Nested Class是被聲明為靜態(tài)(static)的內部類(lèi),它可以不依賴(lài)于外部類(lèi)實(shí)例被實(shí)例化。而通常的內部類(lèi)需要在外部類(lèi)實(shí)例化后才能實(shí)例化。
  
第四,%26和%26%26的區別。
%26是位運算符,表示按位與運算,%26%26是邏輯運算符,表示邏輯與(and).
  
第五,HashMap和Hashtable的區別。
HashMap是Hashtable的輕量級實(shí)現(非線(xiàn)程安全的實(shí)現),他們都完成了Map接口,主要區別在于HashMap允許空(null)鍵值(key),由于非線(xiàn)程安全,效率上可能高于Hashtable.

Java面試題集



第六,Collection 和 Collections的區別。
Collection是集合類(lèi)的上級接口,繼承與他的接口主要有Set 和List.
Collections是針對集合類(lèi)的一個(gè)幫助類(lèi),他提供一系列靜態(tài)方法實(shí)現對各種集合的搜索、排序、線(xiàn)程安全化等操作。

第七,什么時(shí)候用assert。
1.4新增關(guān)鍵字(語(yǔ)法),用于測試boolean表達式狀態(tài),可用于調試程序。
使用方法 assert ,表示如果表達式為真(true),則下面的語(yǔ)句執行,否則拋出AssertionError。
另外的使用方式assert %26lt; boolean表達式%26gt;:,表示如果表達式為真,后面的表達式忽略,否則后面表達式的值用于A(yíng)ssertionError的構建參數。
注意編譯時(shí)要增加-source 1.4 參數,否則報錯。]運行時(shí)要增加 -ea參數,否則assert行被忽略

第八,GC是什么? 為什么要有GC?
GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問(wèn)題的地方,忘記或者錯誤的內存回收會(huì )導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動(dòng)監測對象是否超過(guò)作用域從而達到自動(dòng)回收內存的目的,Java語(yǔ)言沒(méi)有提供釋放已分配內存的顯示操作方法。

第九,String s = new String("xyz");創(chuàng )建了幾個(gè)String Object?

兩個(gè)

第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
round方法返回與參數最接近的長(cháng)整數,參數加1/2后求其floor.
  
第十一,short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
short s1 = 1; s1 = s1 + 1; (s1+1運算結果是int型,需要強制轉換類(lèi)型)
short s1 = 1; s1 += 1;(可以正確編譯)
  
第十二,sleep() 和 wait() 有什么區別?
sleep是線(xiàn)程類(lèi)(Thread)的方法,導致此線(xiàn)程暫停執行指定時(shí)間,給執行機會(huì )給其他線(xiàn)程,但是監控狀態(tài)依然保持,到時(shí)后會(huì )自動(dòng)恢復。調用sleep不會(huì )釋放對象鎖。
wait是Object類(lèi)的方法,對此對象調用wait方法導致本線(xiàn)程放棄對象鎖,進(jìn)入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線(xiàn)程才進(jìn)入對象鎖定池準備獲得對象鎖進(jìn)入運行狀態(tài)。
  
第十三,Java有沒(méi)有g(shù)oto?
沒(méi)有
  很十三的問(wèn)題,如果哪個(gè)面試的問(wèn)到這個(gè)問(wèn)題,我勸你還是別進(jìn)這家公司。

第十四,數組有沒(méi)有length()這個(gè)方法? String有沒(méi)有length()這個(gè)方法?
數組沒(méi)有length()這個(gè)方法,有length的屬性。

 


String有有length()這個(gè)方法。

第十五,Overload和Override的區別。Overloaded的方法是否可以改變返回值的類(lèi)型?
方法的重寫(xiě)Overriding和重載Overloading是Java多態(tài)性的不同表現。重寫(xiě)Overriding是父類(lèi)與子類(lèi)之間多態(tài)性的一種表現,重載Overloading是一個(gè)類(lèi)中多態(tài)性的一種表現。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數,我們說(shuō)該方法被重寫(xiě) (Overriding)。子類(lèi)的對象使用這個(gè)方法時(shí),將調用子類(lèi)中的定義,對它而言,父類(lèi)中的定義如同被"屏蔽"了。如果在一個(gè)類(lèi)中定義了多個(gè)同名的方法,它們或有不同的參數個(gè)數或有不同的參數類(lèi)型,則稱(chēng)為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類(lèi)型。

第十六,Set里的元素是不能重復的,那么用什么方法來(lái)區分重復與否呢? 是用==還是equals()? 它們有何區別?
Set里的元素是不能重復的,那么用iterator()方法來(lái)區分重復與否。equals()是判讀兩個(gè)Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類(lèi)中被覆蓋,為的是當兩個(gè)分離的對象的內容和類(lèi)型相配的話(huà),返回真值。

第十七,給我一個(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

第十八,error和exception有什么區別?
error 表示恢復不是不可能但很困難的情況下的一種嚴重問(wèn)題。比如說(shuō)內存溢出。不可能指望程序能處理這樣的情況。

exception 表示一種設計或實(shí)現問(wèn)題。也就是說(shuō),它表示如果程序運行正常,從不會(huì )發(fā)生的情況。

第十九,List, Set, Map是否繼承自Collection接口?
List,Set是
Map不是

第二十,abstract class和interface有什么區別?
聲明方法的存在而不去實(shí)現它的類(lèi)被叫做抽象類(lèi)(abstract class),它用于要創(chuàng )建一個(gè)體現某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現該類(lèi)的情況。不能創(chuàng )建abstract 類(lèi)的實(shí)例。然而可以創(chuàng )建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例。不能有抽象構造函數或抽象靜態(tài)方法。Abstract 類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現,否則它們也是抽象類(lèi)為。取而代之,在子類(lèi)中實(shí)現該方法。知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現這些方法。


接口(interface)是抽象類(lèi)的變體。在接口中,所有方法都是抽象的。多繼承性可通過(guò)實(shí)現這樣的接口而獲得。接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。接口只可以定義static final成員變量。接口的實(shí)現與子類(lèi)相似,除了該實(shí)現類(lèi)不能從接口定義中繼承行為。當類(lèi)實(shí)現特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現了該接口的類(lèi)的任何對象上調用接口的方法。由于有抽象類(lèi),它允許使用接口名作為引用變量的類(lèi)型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉換到接口類(lèi)型或從接口類(lèi)型轉換,instanceof 運算符可以用來(lái)決定某對象的類(lèi)是否實(shí)現了接口。

第二十一,abstract的method是否可同時(shí)是static,是否可同時(shí)是native,是否可同時(shí)是synchronized?
都不能

第二十二,接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)?
接口可以繼承接口。抽象類(lèi)可以實(shí)現(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構造函數。

第二十三,啟動(dòng)一個(gè)線(xiàn)程是用run()還是start()?
啟動(dòng)一個(gè)線(xiàn)程是調用start()方法,使線(xiàn)程所代表的虛擬處理機處于可運行狀態(tài),這意味著(zhù)它可以由JVM調度并執行。這并不意味著(zhù)線(xiàn)程就會(huì )立即運行。run()方法可以產(chǎn)生必須退出的標志來(lái)停止一個(gè)線(xiàn)程。

 



第二十四,構造器Constructor是否可被override?
構造器Constructor不能被繼承,因此不能重寫(xiě)Overriding,但可以被重載Overloading。

第二十五,是否可以繼承String類(lèi)?
String類(lèi)是final類(lèi)故不可以繼承。

第二十六,當一個(gè)線(xiàn)程進(jìn)入一個(gè)對象的一個(gè)synchronized方法后,其它線(xiàn)程是否可進(jìn)入此對象的其它方法?
不能,一個(gè)對象的一個(gè)synchronized方法只能由一個(gè)線(xiàn)程訪(fǎng)問(wèn)。

第二十七,try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì )不會(huì )被執行,什么時(shí)候被執行,在return前還是后?
會(huì )執行,在return前執行。


第二十八,編程題: 用最有效率的方法算出2乘以8等於幾?
有C背景的程序員特別喜歡問(wèn)這種問(wèn)題。
2 %26lt;%26lt; 3

第二十九,兩個(gè)對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話(huà)對不對?
不對,有相同的hash code。

第三十,當一個(gè)對象被當作參數傳遞到一個(gè)方法后,此方法可改變這個(gè)對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞?
是值傳遞。Java 編程語(yǔ)言只由值傳遞參數。當一個(gè)對象實(shí)例作為一個(gè)參數被傳遞到方法中時(shí),參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會(huì )改變的。

第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一個(gè)整數表達式。因此傳遞給 switch 和 case 語(yǔ)句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

第三十二,編程題: 寫(xiě)一個(gè)Singleton出來(lái)。
Singleton模式主要作用是保證在Java應用程序中,一個(gè)類(lèi)Class只有一個(gè)實(shí)例存在。
一般Singleton模式通常有幾種種形式:
第一種形式: 定義一個(gè)類(lèi),它的構造函數為private的,它有一個(gè)static的private的該類(lèi)變量,在類(lèi)初始化時(shí)實(shí)例話(huà),通過(guò)一個(gè)public的getInstance方法獲取對它的引用,繼而調用其中的方法。
public class Singleton {
  private Singleton(){}
  //在自己內部定義自己一個(gè)實(shí)例,是不是很奇怪?
  //注意這是private 只供內部調用
  private static Singleton instance = new Singleton();
  //這里提供了一個(gè)供外部訪(fǎng)問(wèn)本class的靜態(tài)方法,可以直接訪(fǎng)問(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)行生成對象,只是第一次     
  //使用時(shí)生成實(shí)例,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   }
}
其他形式:
定義一個(gè)類(lèi),它的構造函數為private的,所有方法為static的。
一般認為第一種形式要更加安全些

【Java面試題集】相關(guān)文章:

高級Java面試題匯總08-21

2017年java面試題及答案08-28

java程序員面試題08-15

高級Java面試題及答案201608-11

2017年最新java面試題及答案08-28

Java經(jīng)典面試題之選擇題08-12

Intel華工面試題集07-31

面試題精選07-31

java自我評價(jià)08-09

java培訓總結01-01

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看