JAVA麵試題100問第一部分
以下是麵試時常問到的JAVA麵試題,能讓你對JAVA麵試有基本的了解。根據我個人的經驗,一個好的麵試官在麵試的時候是不會事先準備一列問題清單,一般來說都從關於JAVA最基本的概念開始,然後再根據你的回答繼續深入討論。
問題:關於JAVA 你知道什麼?
回答:JAVA是一種高級程序設計語言,由詹姆斯·高斯林發明並於1995年發布。JAVA可以在多種平台上運行,如Windows、Mac OS、各種版本的UNIX。
問題:JAVA編程語言支持什麼平台?
回答:JAVA可以在多種平台上運行,如Windows、Mac OS、以及各種版本的UNIX/Linux操作係統如HP-Unix, Sun Solaris, Redhat Linux, Ubuntu, CentOS 等。
問題:請列舉出JAVA至少5種特性。
回答:JAVA特性包括麵向對象、平台獨立、健壯性、解釋性、多線程等。
問題:為什麼JAVA是結構中立的?
回答:JAVA編譯器會生成一種具備結構中立性的目標文件格式。編譯後的程序碼可以在提供Java運行係統的多種不同處理器上麵執行。
問題:JAVA如何保證高效性?
回答:JAVA使用即時編譯器來保證高效性。即時編譯器能把Java字節碼轉換成可以直接發送給處理器的指令。
問題:為什麼JAVA是動態的?
回答:JAVA能適應不斷升級的環境。JAVA程序帶有大量擴展的運行時信息,這些信息可以用來實時驗證處理對對象的引用。
問題:什麼是JAVA虛擬機?它對JAVA的平台獨立性有什麼作用?
回答:當JAVA代碼被編譯的時候,它並不是被編譯成針對某一特定平台的機器碼,而是轉換成平台獨立的字節碼。這些字節碼通過網絡傳送到不同的機器上,不管這些機器運行的是什麼平台,JAVA虛擬機都可以解釋字節碼。
問題:列舉兩個JAVA集成編譯環境。
回答:Netbeans、Eclipse
問題:列舉幾個JAVA與C/C++不同的關鍵詞。
回答:import、super、finally等
問題:什麼是對象?
回答:對象是在運行時的實體,它的狀態儲存於域中,它的行為通過方法實現。方法能夠操作對象內部的數據,也是對象間通信的主要途徑。
問題:請給定義類。
回答:類是一張藍圖,對象根據這張藍圖被創建。一個類可以包括數據域和方法,方法可以描述對象的行為。
問題:一個類可以包含什麼類型的變量?
回答:包括居於變量,實例變量和類變量。
問題:什麼是局域變量?
回答:在方法內、構造函數內或者代碼塊內定義的變量是局域變量。局域變量在函數內聲明和初始化,當函數執行結束時局域變量會被銷毀。
問題:什麼是實例變量?
回答:實例變量是在類中但在任何函數之外的變量。實例變量隻有當類實例化後才能被引用。
問題:什麼是類變量?
回答:在類中並且在任何函數之外,使用static關鍵詞聲明的變量是類變量。
問題:什麼是類的單例模式?
回答:單例類控製對象的生成,一次隻能存在一個對象但兼具靈活性,當條件改變時允許創建多個變量。
問題:什麼是構造函數?
回答:當一個新的對象被創建的時候會自動調用構造函數。每個類都有構造函數。如果不顯性聲明構造函數,JAVA編譯器會調用默認構造函數。
問題:列舉為類創建對象的過程(三步)。
回答:首先聲明一個對象,然後實例化,再對其初始化。
問題:JAVA中字節數據類型的默認值是多少?
回答:0
問題:JAVA中float和double的默認值是多少?
回答:float型和double型的默認值與C/C++相同,float是0.0f,double是0.0d。
問題:byte類型在什麼時候使用?
回答:byte類型用來在較大的數組中節省儲存空間。使用byte類型替代int型可以節省三倍的空間。
問題:什麼是靜態變量?
回答:類變量也叫靜態變量,使用關鍵詞static,在類裏,但在方法、構造函數和代碼塊之外。
問題:什麼是訪問控製修飾符?
回答:JAVA提供訪問控製修飾符來修飾類、變量、方法和構造函數的訪問控製屬性。當不寫出訪問控製修飾符時,成員具有默認的訪問權限或者包訪問控製權限。
問題:什麼是受保護訪問控製修飾符?
回答:變量、方法和構造函數如果在父類中被聲明為受保護,那麼它們隻能在其它包的子類中或者在該父類的包中被訪問。
問題:什麼是同步修飾符?
回答:JAVA在訪問控製修飾符之外還提供同步修飾符,同步修飾符用來限製方法,使方法一次隻能被一個線程調用。
問題:在JAVA運算符優先級中,哪個運算符的優先級最高?
回答:圓括號()和下標運算符[]具有最高的優先級。
問題:在switch語句中能使用的數據類型包括哪些?
回答:switch中使用的變量隻能是字節型、短整型、整型或字符型。
問題:parseInt()函數在什麼時候使用到?
回答:parseInt()函數用於解析字符串返回整數。
問題:為什麼說String類是不可變的?
回答:String對象一旦被創建就不可改變,因此可以在多個線程中被安全地引用,這對於多線程的編程來說十分重要。
問題:為什麼說StringBuffer類是可變的?
回答:String類是不可變的,因此一個String對象一旦被創建就不可改變。如果需要對字符串進行頻繁的修改,那麼就應該使用StringBuffer。
問題:StringBuffer和StringBuilder類的區別在哪?
回答:盡可能使用StringBuilder,因為它運行時比StringBuffer快。但如果需要強調線程安全,那就應該使用StringBuffer。
問題:那個包使用正則表達式來實現模式匹配?
回答:包java.util.regex。
問題:java.util.regex包括那些類?
回答:包括三個類:Pattern類、Matcher類和PatternSyntaxException類。
問題:什麼是finalize()方法?
回答:finalize()方法在一個對象被垃圾回收機製銷毀前調用,可以保證對象被徹底地銷毀。
問題:什麼是Exception?
回答:Exception是當程序運行過程中遇到的異常。異常由方法調用棧中的Handler捕獲。
問題:什麼是受檢查的異常?
回答:受檢查異常通常為用戶操作的異常,不能被程序員預見。例如,在打開一個文件的時候,無法找到文件就發生了異常,這樣的異常在編譯的時候不能被跳過。
問題:什麼是運行時間異常?
回答:運行時間異常在編程時可以預見並避免。與受檢查異常不同,運行時間異常在編譯時可以被跳過。
問題:Exception類的兩個子類是什麼?
回答:Exception類有兩個主要的子類:IOException類和RuntimeException類。
問題:關鍵詞throws在什麼情況下使用?
回答:如果一個方法沒有使用handler處理異常,那麼這個方法必須使用throws關鍵詞聲明。關鍵詞throws用於方法簽名之後。
問題:關鍵詞throw在什麼時候使用?
回答:不論是新實例化的異常還是剛捕獲的異常,都可以通過使用關鍵詞throw拋出異常。
問題:finally關鍵詞在異常處理中如何使用?
回答:關鍵詞finally用來在try代碼塊後再加一個代碼塊,不管有沒有發生異常,finally代碼塊內的語句都會被執行。
問題:當自己創建異常類的時候應該注意什麼?
回答:當創建異常類時應該注意:
- 所有的異常類都應該是Throwable類的子類。
2.寫一個遵循處理與聲明規則的受檢查異常類時,應該加上extend Exception。
3.寫一個運行時間異常類,需要加上extend RuntimeException。
問題:什麼是繼承?
回答:繼承指的是一個類獲得另一個類的屬性的過程。數據屬性和行為按從父類到子類的順序繼承,便於管理。
問題:關鍵詞super什麼時候使用?
回答:如果一個方法重寫了父類的方法,被重寫的父類方法可以通過關鍵詞super調用。super也可以用來調用被隱藏的域。
問題:什麼是多態?
回答:多態是一個對象同時具有多種形態的能力。在麵向對象編程中,多態最常見的應用是將一個父類指針指向一個子類的對象。
問題:什麼是抽象?
回答:抽象是在麵向對象編程中將一個類抽象化的過程。抽象能夠降低複雜性,提高係統可維護性。
問題:什麼是抽象類?
回答:抽象類不能被實例化,可以被部分實現接口。抽象方法是沒有函數體的方法聲明,抽象類含有一個或多個抽象方法。
問題:抽象方法什麼時候被使用?
回答:當想要讓類包含一個方法,但想要讓方法的具體實現由子類決定,那麼就可以在父類中聲明抽象方法。
問題:什麼是封裝?
回答:封裝是將數據域設為私有,提供公共方法來處理私有的數據域。如果一個域被設為私有,那麼在類外就不能訪問該數據域,這樣就把數據域隱藏在類內部。因此封裝也被稱為數據隱藏。
問題:封裝最主要的優點是什麼?
回答:最主要的優點是允許修改實現的借口,同時不用修改他人使用接口的代碼。封裝使得代碼具可維護性、靈活性和擴展性。
問題:什麼是接口?
回答:接口是一係列抽象方法的集合,一個類實現接口,也就從接口中繼承了這些抽象方法。
問題:接口具有什麼特性?
回答:1.接口不能被實例化
2.接口不含任何構造函數
3.接口中的函數都是抽象函數
問題:什麼是包?
回答:包包含相關的類型(類、接口、枚舉和注釋),提供訪問保護和命名空間管理。
問題:為什麼要使用包?
回答:JAVA中使用包可以避免命名空間矛盾,控製訪問權限,便於定位和使用類、接口、枚舉和注釋等。
問題:什麼是多線程編程?
回答:多線程編程包含兩個或者更多個可以同時運行的部分,這些部分被叫做線程。每個線程有獨立的執行路徑。
問題:創建線程的兩種方式是什麼?
回答:通過實現Runnable接口或者繼承Thread類。
問題:什麼是applet?
回答:applet是一個運行在Web瀏覽器上的JAVA程序。由於它帶有整個JAVA的API,因此可以實現JAVA提供的所有功能。
問題:applet繼承哪個類?
回答:applet繼承了java.applet.Applet 類。
問題:解釋下JAVA的垃圾回收機製。
回答:JAVA垃圾回收機製能夠清理不再被引用的對象,從而來釋放內存。
問題:什麼是不可變對象?
回答:不可變對象一旦被創建就不能再改變。
最後更新:2017-05-22 16:01:35