java面試之基礎篇

    /*嘴上千萬遍不如動手來一遍*/
常見的 Java 問題
1. 什麼是 Java 虛擬機?爲什麼 Java 被稱作是“ 平臺無關的編程語言”?
    Java虛擬機是一個可以執行Java字節碼的虛擬機進程。
    Java源文件被編譯成能被Java虛擬機執行的字節碼文件。
    Java被設計成允許應用程序可以運行在任意的平臺,而不需要程序員爲每一個平臺單獨重寫或者是重新編譯。 Java虛擬機讓這個變爲可能,因爲它知道底層硬件平臺的指令長度和其他特性。

2.JDK 和 JRE 的區別是什麼?
    Java運行時環境是將要執行Java程序的Java虛擬機。
    它同時也包含了執行applet需要的瀏覽器插件。
    Java開發工具包是完整的Java軟件開發包,包含了JRE,編譯器和其他的工具 比如: JavaDoc Java 調試器 )),可以讓開發者開發、編譯、執行 Java 應用程序。

3. static ”關鍵字是什麼意思 ? Java 中是否可以覆蓋(override)一個 private 或者是 static 的方法?
    “static”關鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問。
    Java中 static 方法不能被覆蓋,因爲方法覆蓋是基於運行時動態綁定的,而 static 方法是編
    譯時靜態綁定的。 static 方法跟類的任何實例都 不相關,所以概念上不適用。

4. 是否可以在 static 環境中訪問非 static 變量?
    static變量在 Java 中是屬於類的,它在所有的實例中的值是一樣的。當類被 Java 虛擬機載入
    的時候,會對 static 變量進行初始化。如果你的代碼嘗試不用實例來訪問非 static 的變量,
    編譯器會報錯,因爲這些變量還沒有被創建出來,還沒有跟任何實例關聯上。
    
5.Java 支持的數據類型有哪些?什麼是自動拆裝箱?
    Java語言支持的 8 中基本數據類型是:
    byte
    short
    int
    long
    float
    double
    boolean
    char
    自動裝箱是
    Java 編譯器在基本數據類型和對應的對象包裝類型之間做的一個轉化。比如:
    把 int 轉化成 Integer double 轉化成 double
    
6.Java 中的方法覆蓋 (Overriding) 和方法重載 (Overloading) 是什麼意思?
    Java中的方法重載發生在同一個類裏面兩個或者是多個方法的方法名相同但是參數不同的
    情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,
    參數列表和返回類型。覆蓋者可能不會限制它所覆蓋的方 法的訪問。 
    
7.Java 中,什麼是構造函數?什麼是構造函數重載?什麼是複製構造函數?
    當新對象被創建的時候,構造函數會被調用。每一個類都有構造函數。在程序員沒有給類提
    供構造函數的情況下, Java 編譯器會爲這個類創建一個默認的構造函數。
    Java中構造函數重載和方法重載很相似。可以爲一個類創建多個構造函數。每一個構造函數
    必須有它自己唯一的參數列表。
    Java不支持像 C++ 中那樣的複製構造函數,這個不同點是因爲如果你不自己寫構造函數的情
    況下, Java 不會創建默認的複製構造函數。
    
8.Java 支持多繼承麼?
    不支持,Java 不支持多繼承。每個類都只能繼承一個類,但是可以實現多個接口。
    
9. 接口和抽象類的區別是什麼?

    Java提供和支持創建抽象類和接口。它們的實現有共同點,不同點在於:
    接口中所有的方法隱含的都是抽象的。而抽象類則可以同時包含抽象和非抽象的方法。
    類可以實現很多個接口,但是隻能繼承一個抽象類
    類如果要實現一個接口,它必須要實現接口聲明的所有方法。但是,類可以不實現抽象類聲
    明的所有方法,當然,在這種情況下,類也必須得聲明成是抽象的。
    抽象類可以在不提供接口方法實現的情況下實現接口。
    Java 接口中聲明的變量默認都是 final 的。抽象類可以包含非 final 的變量。
    Java接口中的成員函數默認是 public 的。抽象類的成員函數可以是 private protected 或者
    是 public 。
    接口是絕對抽象的,不可以被實例化。抽象類也不可以被實例化,但是,如果它包含
    main方法的話是可以被調用的。
    也可以參考JDK8 中抽象類和接口的區別
    
10. 什麼是值傳遞和引用傳遞?
    對象被值傳遞,意味着傳遞了對象的一個副本。因此,就算是改變了對象副本,也不會影響源對象的值。
    對象被引用傳遞,意味着傳遞的並不是實際的對象,而是對象的引用。因此,外部對引用對象所做的改變會反映到所有的對象上。
        
    
    
    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章