java面試題---基礎題

  1. JDK 和 JRE 有什麼區別?
    JDK(java development kit)java的開發工具包,裏面包含了各種類庫和工具。
    JRE (Java Runtime Enviroment)java運行環境,最核心的內容就是JVM(Java虛擬機)及核心類庫。

  2. == 和 equals 的區別是什麼?
    == 內存空間中的存儲位置是否一致,一般用於基本數據類型比較的是值
    equals 比較兩個對象的值是否相等,一般用於字符串內容是否相等比較多

  3. 兩個對象的 hashCode()相同,則 equals()也一定爲 true,對嗎?
    不一定相同。正常情況下,因爲equals()方法比較的就是對象在內存中的值,如果值相同,那麼Hashcode值也應該相同。但是如果不重寫hashcode方法,就會出現不相等的情況。

  4. final 在 java 中有什麼作用?
    被final關鍵字修飾的類不能被繼承,被final關鍵字修飾的類屬性和類方法不能被覆蓋(重寫)

  5. java 中的 Math.round(-1.5) 等於多少?
    -1

  6. String 屬於基礎的數據類型嗎?
    不屬於

  7. java 中操作字符串都有哪些類?它們之間有什麼區別?
    string:爲字符串常量,對象一旦創建之後該對象是不可更改的,適用於少量的字符串操作的情況。
    StringBuffer:字符串變量,對象一旦創建之後該對象可修改,適用多線程下在字符緩衝區進行大量操作的情況
    StringBuilder:字符串變量,對象一旦創建之後該對象可修改,適用於單線程下在字符緩衝區進行大量操作的情況

    在線程安全上,StringBuilder是線程不安全的,而StringBuffer是線程安全的

  8. String str="i"與 String str=new String(“i”)一樣嗎?
    不一樣。
    String str="i"字符串保存在常量池中,常量池中沒有重複的元素,比如當執行代碼“abc”時,java虛擬機會先在常量池中檢索是否已經有“abc”,如果有那麼就將“abc”的地址賦給變量,如果沒有就創建一個,然後在賦給變量。
    String str=new String(“i”)創建的對象保存在堆內存中即使內容一樣還是會創建新的對象。

  9. 如何將字符串反轉?
    public static String reverse2(String s) {
    int length = s.length();
    String reverse = “”;
    for (int i = 0; i < length; i++)
    reverse = s.charAt(i) + reverse;
    return reverse;
    }

    public static String reverse4(String s) {
    return new StringBuffer(s).reverse().toString();
    }

  10. String 類的常用方法都有那些?
    replace()、split()、length()、indexOf()、lastIndexOf()、substring()、trim()、toLowCase()、toUpperCase()、equals()、charAt()、getBytes()

  11. 抽象類必須要有抽象方法嗎?
    抽象類可以沒有抽象方法

  12. 普通類和抽象類有哪些區別?
    抽象類不能被實例化。
    抽象類可以有構造函數,被繼承時子類必須繼承父類一個構造方法,抽象方法不能被聲明爲靜態。
    抽象方法只需申明,而無需實現,抽象類中可以允許普通方法有主體
    含有抽象方法的類必須申明爲抽象類
    抽象的子類必須實現抽象類中所有抽象方法,否則這個子類也是抽象類

  13. 抽象類能使用 final 修飾嗎?
    Java抽象類不可以被final修飾。因爲抽象類必須被繼承才能用,而final修飾的類是不能被繼承的。

  14. 接口和抽象類有什麼區別?
    抽象類 和 接口 都是用來抽象具體對象的. 但是接口的抽象級別最高
    抽象類可以有具體的方法 和屬性, 接口只能有抽象方法和不可變常量
    抽象類主要用來抽象類別,接口主要用來抽象功能.
    抽象類中,且不包含任何實現,派生類必須覆蓋它們。接口中所有方法都必須是未實現的。

  15. java 中 IO 流分爲幾種?
    兩種類型的流:字節流(byte)和字符流(char)

  16. BIO、NIO、AIO 有什麼區別?
    同步阻塞IO(BIO):服務器實現模式爲一個連接一個線程,即客戶端有連接請求時服務器就需要啓動一個線程進行處理,如果這個連接不做任何事情會造成不必要的線程開銷,可以通過線程池機制來改善

    同步非阻塞IO(NIO):服務器實現模式爲一個請求一個線程,即客戶端發送的連接請求都會註冊到多路複用器上,多路複用器輪詢到連接有IO請求時才啓動一個線程進行處理

    異步阻塞IO(AIO):服務器實現模式爲一個有效請求一個線程,客戶端的IO請求都是由操作系統先完成了再通知服務器用其啓動線程進行處理。

  17. Files的常用方法都有哪些?
    createNewFile()、mkdir()、mkdirs()、 renameTo(File dest)、delete()、exists() 、isFile()、isDirectory()、isHidden()、isAbsolute()、getName() 、length() 、getParent()

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