2012年軟考程序員面試模擬題及答案:第四章

字號:

1、是否可以繼承String類?
    String類是final類故不可以繼承。
    2、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
    switch(expr1)中,expr1是一 個(gè)整數(shù)表達(dá)式。因此傳遞給 switch 和 case 語句的參數(shù)應(yīng)該是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
    3、try {}里有一個(gè)return語句,那么緊跟在這個(gè)try后的finally {}里的code會不會被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后?
    會執(zhí)行,在return前執(zhí)行。
    4、編程題: 用率的方法算出2乘以8等於幾?
    2 << 3
    5、兩個(gè)對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
    不對,有相同的hash code。
    6、當(dāng)一個(gè)對象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?
    是值傳遞。Java 編程語言只有值傳遞參數(shù)。當(dāng)一個(gè)對象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對該對象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用 是永遠(yuǎn)不會改變的。
    7、當(dāng)一個(gè)線程進(jìn)入一個(gè)對象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對象的其它方法?
    不能,一個(gè)對象的一個(gè)synchronized方法只能由一個(gè)線程訪問。
    8、編程題: 寫一個(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)用其中的方法。public class Singleton {private Singleton(){} private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance;   } } 第二種形式: public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { if (instance==null) instance=new Singleton();
    return instance;   } } 其他形式: 定義一個(gè)類,它的構(gòu)造函數(shù)為private的,所有方法為static的。一般認(rèn)為第一種形式要更加安全些
    9、Java的接口和C++的虛類的相同和不同處。
    由于Java不支持多繼承,而有可能某個(gè)類或?qū)ο笠褂梅謩e在幾個(gè)類或?qū)ο罄锩娴姆椒?或?qū)傩裕F(xiàn)有的單繼承機(jī)制就不能滿足要求。與繼承相比,接口有更高的靈活性,因?yàn)榻涌谥袥]有任何實(shí)現(xiàn)代碼。當(dāng)一個(gè)類實(shí)現(xiàn)了接口以后,該類要實(shí)現(xiàn)接口里面所 有的方法和屬性,并且接口里面的屬性在默認(rèn)狀態(tài)下面都是public static,所有方法默認(rèn)情況下是public.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。
    10、Java中的異常處理機(jī)制的簡單原理和應(yīng)用。
    當(dāng)JAVA程序違反了JAVA的語義規(guī)則時(shí),JAVA虛擬機(jī)就會將發(fā)生的錯(cuò)誤表示為一個(gè) 異常。違反語義規(guī)則包括2種情況。一種是JAVA類庫內(nèi)置的語義檢查。例如數(shù)組下標(biāo)越界,會引發(fā)IndexOutOfBoundsException;訪 問null的對象時(shí)會引發(fā)NullPointerException。另一種情況就是JAVA允許程序員擴(kuò)展這種語義檢查,程序員可以創(chuàng)建自己的異常,并 自由選擇在何時(shí)用throw關(guān)鍵字引發(fā)異常。所有的異常都是java.lang.Thowable的子類。