Java程式員面試筆試題二__Java
最後更新:2018-07-25
來源:互聯網
上載者:User
40、構造器Constructor是否可被override?構造器Constructor不能被繼承,因此不能重寫Overriding,但可以被重載Overloading。
41、是否可以繼承String類?String類是final類故不可以繼承。
42、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch(expr1)中,expr1是一個整數運算式。因此傳遞給 switch 和 case 語句的參數應該是 int、 short、 char 或者 byte。long,string 都不能作用於swtich。
43、try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?會執行,在return前執行。
44、編程題: 用最有效率的方法算出2乘以8等於幾? 2 << 3
45、兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?不對,有相同的hash code。
46、當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞? 是值傳遞。Java 程式設計語言只有值傳遞參數。當一個對象執行個體作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的。
47、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
不能,一個對象的一個synchronized方法只能由一個線程訪問。
48、編程題: 寫一個Singleton出來。
Singleton模式主要作用是保證在Java應用程式中,一個類Class只有一個執行個體存在。一般Singleton模式通常有幾種種形式:第一種形式: 定義一個類,它的建構函式為private的,它有一個static的private的該類變數,在類初始化時執行個體話,通過一個public的getInstance方法擷取對它的引用,繼而調用其中的方法。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; } } 其他形式: 定義一個類,它的建構函式為private的,所有方法為static的。一般認為第一種形式要更加安全些
49、Java的介面和C++的虛類的相同和不同處。
由於Java不支援多繼承,而有可能某個類或對象要使用分別在幾個類或對象裡面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,介面有更高的靈活性,因為介面中沒有任何實現代碼。當一個類實現了介面以後,該類要實現介面裡面所有的方法和屬性,並且介面裡面的屬性在預設狀態下面都是public static,所有方法預設情況下是public.一個類可以實現多個介面。
50、Java中的異常處理機制的簡單原理和應用。
當JAVA程式違反了JAVA的語義規則時,JAVA虛擬機器就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是JAVA類庫內建的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發NullPointerException。另一種情況就是JAVA允許程式員擴充這種語義檢查,程式員可以建立自己的異常,並自由選擇在何時用throw關鍵字引發異常。所有的異常都是java.lang.Thowable的子類。
51、記憶體回收的優點和原理。並考慮2種回收機制。
Java語言中一個顯著的特點就是引入了記憶體回收機制,使c++程式員最頭疼的記憶體管理的問題迎刃而解,它使得Java程式員在編寫程式的時候不再需要考慮記憶體管理。由於有個記憶體回收機制,Java中的對象不再有“範圍”的概念,只有對象的引用才有“範圍”。記憶體回收可以有效防止記憶體泄露,有效使用可以使用的記憶體。記憶體回收行程通常是作為一個單獨的低層級的線程運行,不可預知的情況下對記憶體堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程式員不能即時的調用記憶體回收行程對某個對象或所有對象進行記憶體回收。回收機制有分代複製記憶體回收和標記記憶體回收,增量記憶體回收
52、請說出你所知道的線程同步的方法。
wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。sleep():使一個正在啟動並執行線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先順序。Allnotity():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。
53、你所知道的集合類都有哪些。主要方法。最常用的集合類是 List 和 Map。 List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、儲存和操作任何類型對象的元素列表。 List 適用於按數值索引訪問元素的情形。 Map 提供了一個更通用的元素儲存方法。 Map 集合類用於儲存元素對(稱作“鍵”和“值”),其中每個鍵映射到一個值。
54、描述一下JVM載入class檔案的原理機制?JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時尋找和裝入類檔案的類。
55、char型變數中能不能存貯一個中文漢字?為什麼?
能夠定義成為一個中文的,因為java中以unicode編碼,一個char佔16個位元組,所以放一個中文是沒問題的
56、多線程有幾種實現方法,都是什麼?同步有幾種實現方法,都是什麼?
多線程有兩種實現方法,分別是繼承Thread類與實現Runnable介面 ,同步的實現方面有兩種,分別是synchronized,wait與notify
57、JSP的內建對象及方法。
request表示HttpServletRequest對象。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於擷取cookie, header, 和session資料的有用的方法,response表示HttpServletResponse對象,並提供了幾個用於設定送回 瀏覽器的響應的方法(如cookies,頭資訊等)
out對象是javax.jsp.JspWriter的一個執行個體,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。 pageContext表示一個javax.servlet.jsp.PageContext對象。它是用於方便存取各種範圍的名字空間、servlet相關的對象的API,並且封裝了通用的servlet相關功能的方法。 session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯使用者的狀態資訊 applicaton 表示一個javax.servle.ServletContext對象。這有助於尋找有關servlet引擎和servlet環境的資訊 config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet執行個體的初始化參數。 page表示從該頁面產生的一個servlet執行個體
58、線程的基本概念、線程的基本狀態以及狀態之間的關係線程指在程式執行過程中,能夠執行程式代碼的一個執行單位,每個程式至少都有一個線程,也就是程式本身。Java中的線程有四種狀態分別是:運行、就緒、掛起、結束。