一、JAVASE面試題

一、Java 基礎

 

  1. JDK 和 JRE 有什麼區別?
    (1)JDK 全稱Java development kit  Java語言開發工具。
    把Java程序設計語言、Java虛擬機、JavaAPI庫這三部分統稱爲JDK,
    用於支持Java開發的最小開發環境。
    
    (2)JRE 全稱 Java runtime environment Java運行環境。
    把JavaAPI類庫中的JavaSE API子集和Java虛擬機這兩部分統稱爲JRE,是支持java運行的標準環境。

     

  2. == 和 equals 的區別是什麼?
    (1)== 是比較對象的引用地址。
    (2)equals() 比較的是兩者的值是否相等,看過String類中equals()方法的實現後,你就會發現,它是把字符串拆成字符逐個比較。
    public boolean equals(Object anObject) {
            if (this == anObject) {
                return true;
            }
            if (anObject instanceof String) {
                String anotherString = (String)anObject;
                int n = value.length;
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }
    

     

  3. 兩個對象的 hashCode()相同,則 equals()也一定爲 true,對嗎?
    (1)兩個對象相同,它們的hash值一定相同。
    (2)兩個hash值相同,但是它們所指向的對象不一定相同。
    因爲在產出hash值的時候,極其小的概率發生hash碰撞,生成兩個相同的hash值。

     

  4. final 在 java 中有什麼作用?
    (1)final修飾類,不能被繼承。
    (2)final修飾的方法,不能被重寫和重載。
    (3)final修飾的變量,值不能被改變。

     

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

     

  6. String 屬於基礎的數據類型嗎?
    String不是基本的數據類型,是final修飾的java類,java中的基本類型一共有8個,它們分別爲:
    
    1 字符類型:byte,char
    
    2 基本整型:short,int,long
    
    3 浮點型:float,double
    
    4 布爾類型:boolean

     

  7. java 中操作字符串都有哪些類?它們之間有什麼區別?
    String,StringBuffer,StringBuilder
    
    (1)用String操控字符串,每次會產生一個新的對象,不適合用它來操作字符串。
    
    (2)StringBuffer是一個線程安全的操作字符串的類,因爲它在方法中加上了synchronized 關鍵字,所以在多線程的環境下可以保證線程安全。由於增加鎖機制,所以會佔用一些資源消耗。
    
    (3)StringBuilder是最快的一個字符操作類,它沒有增加鎖機制,所以不會保證線程安全,只能在單機的模式下使用。

     

  8. String str="i"與 String str=new String("i")一樣嗎?
    (1)String str = "i"; 創建的i是存儲在字符串常量池中。
    (2)String str = new String("i"); 創建的i是存儲在 java堆中,str 指向的對象的存儲地址。

     

  9. 如何將字符串反轉?
    可以使用 StringBuffer類中的 reverse()方法 進行反轉。

     

  10. String 類的常用方法都有那些?
    (1)equals();
    (2)compareTo();
    (3)concat();
    (4)indexOf();
    (5)substring();
    (6)replace();
    (7)trim();
    (8)valueOf();

     

  11. 抽象類必須要有抽象方法嗎?
    (1)抽象類中可以沒有抽象方法,但是有抽象方法的類一定是抽象類。

     

  12. 普通類和抽象類有哪些區別?
    (1)抽象類與普通類相比,抽象類不可以被實例化。

     

  13. 抽象類能使用 final 修飾嗎?
    抽象類不可以用final關鍵字進行修飾。

     

  14. 接口和抽象類有什麼區別?
    (1)抽象類中的方法可以被實現,可以有構造方法。可以private 、protected、default、public進行修飾。
    
    (2)接口中方法不可以被實現、不能有構造方法、只能使用default、public 修飾。

     

  15. java 中 IO 流分爲幾種?
    Java中的流分爲兩種,一種是字節流,另一種是字符流,
    分別由四個抽象類來表示(每種流包括輸入和輸出兩種所以一共四個):
    InputStream,OutputStream,Reader,Writer。Java中其他多種多樣變化的流均是由它們派生出來的.

     

  16. BIO、NIO、AIO 有什麼區別?
    (1)IO (同步阻塞IO)
    (2)NIO(同步非阻塞IO)
    (3)AIO(異步非阻塞IO)

     

  17. Files的常用方法都有哪些?
    (1)創建:
    createNewFile()在指定位置創建一個空文件,成功就返回true,如果已存在就不創建,然後返回false。
    mkdir()  在指定位置創建一個單級文件夾。
    mkdirs()  在指定位置創建一個多級文件夾。
    renameTo(File dest)如果目標文件與源文件是在同一個路徑下,那麼renameTo的作用是重命名,
     如果目標文件與源文件不是在同一個路徑下,那麼renameTo的作用就是剪切,而且還不能操作文件夾。 
    
    (2)刪除:
    delete()  刪除文件或者一個空文件夾,不能刪除非空文件夾,馬上刪除文件,返回一個布爾值。
    deleteOnExit()jvm退出時刪除文件或者文件夾,用於刪除臨時文件,無返回值。
    (3)判斷:
    exists()  文件或文件夾是否存在。
    isFile()  是否是一個文件,如果不存在,則始終爲false。
    isDirectory()  是否是一個目錄,如果不存在,則始終爲false。
    isHidden()  是否是一個隱藏的文件或是否是隱藏的目錄。
    isAbsolute()  測試此抽象路徑名是否爲絕對路徑名。
    (4)獲取:
    getName()  獲取文件或文件夾的名稱,不包含上級路徑。
    getAbsolutePath()獲取文件的絕對路徑,與文件是否存在沒關係
    length()  獲取文件的大小(字節數),如果文件不存在則返回0L,如果是文件夾也返回0L。
    getParent()  返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回null。
    lastModified()獲取最後一次被修改的時間。
    
    (5)文件夾相關:
    static File[] listRoots()列出所有的根目錄(Window中就是所有系統的盤符)
    list()  返回目錄下的文件或者目錄名,包含隱藏文件。對於文件這樣操作會返回null。
    listFiles()  返回目錄下的文件或者目錄對象(File類實例),包含隱藏文件。對於文件這樣操作會返回null。
    list(FilenameFilter filter)返回指定當前目錄中符合過濾條件的子文件或子目錄。對於文件這樣操作會返回null。
    listFiles(FilenameFilter filter)返回指定當前目錄中符合過濾條件的子文件或子目錄。對於文件這樣操作會返回null。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章