JAVASE常見面試題

  1. 接口與抽象類的異同
    相同:

    1. 都可以生成 對應的。class文件。
    2. 都不能創建對象。
    3. 都可以聲明引用。
    4. 都可以使用object中的方法。
      不同:
    5. 接口只能定義公開靜態常量,隱式存在public static final.
    6. 接口只能定義公開抽象方法。
    7. 沒有構造方法,動態代碼塊,靜態代碼塊。
  2. “==”和equals的區別

    1. ==:比較基本數據類型比較的是數值是否相同;比較引用數據類型比較的是地址是否相同。
    2. equals:只能比較引用數據類型,默認比較地址覆蓋之後比較內容。
  3. 類加載:

    1. 概念:當jvm首次使用某個類,這個類的.class文件必須先加載到內存中。
    2. 加載的時機:創建對象、創建子類對象、訪問靜態屬性、調用靜態方法。
  4. 緩存
    java預先創建256個整數類型的包裝類對象,存放在數組中。

  5. String
    String s=“hello” 和String s2=new String(“hello”)的區別?
    前置創建一個對象,後者創建兩個對象。

  6. String和StringBuffer和StringBuilder區別?
    String:內容和長度不變。
    String Buffer和StringBuilder:內容和長度可變。
    StringBuffer:線程安全,效率低。
    StringBulider:線程不安全,效率高。

  7. List三個實現類的特點

    1. ArrayList:底層數組,查詢快,增刪慢,線程不安全,效率低。
    2. Vector:底層數組,查詢快,增刪慢,線程安全,效率低。
    3. Linkedlist:底層鏈表,查詢慢,增刪快。
  8. HashSet如何保證元素唯一?
    在這裏插入圖片描述

  9. HashMap和Hashtable的區別?
    Hashmap可以存儲null鍵和null值,線程不安全,效率高。
    Hashtable不可用存儲null鍵和null值,線程安全,效率低。

  10. throws和throw區別?
    throws:
    1. 寫在方法聲明的後面。
    2. 後面跟的是異常類名。
    3. 後面可以跟多個異常類名。
    throw:
    1. 寫在方法的內部。
    2. 後面跟的是異常對象。
    3. 後面只能是一個異常對象。

  11. final、 finally、 finalize的區別?
    final:最終
    修飾類:類不能被繼承。
    修飾方法:方法不能被覆蓋。
    修飾變量:變量爲常量只能賦值一次。
    finally:異常處理的組成部分,作用:釋放資源,放在finally中的代碼一定會執行。
    finalize:是object類中的方法,用於垃圾回收。

發佈了65 篇原創文章 · 獲贊 63 · 訪問量 2995
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章