Java基礎面試題 1~15

1.面向對象的特點

  • 封裝 : 簡單的說,就是把客觀的的事物封裝成一個抽象的類,並且類可以把自己的數據和方法讓可信的類或者對象操作,對不可見的類進行隱藏;簡單地說,內部操作對於外部而言不可見(保護性).
  • 繼承 : 繼承是指一種能力,它可以使用現有類的所有功能,不用重新編寫就可以在原有類的功能上進行擴展
  • 多態 : 相同方法的不同情況下的不同表現形式

2.請你介紹一下Syncronized鎖,如果用這個關鍵字修飾一個靜態方法,鎖住了什麼?如果修飾成員方法,鎖住了什麼?

  • 如果鎖的是靜態方法,則鎖住了類的class對象
  • 如果修飾成員方法,則鎖住了當前對象

3.什麼情況下用+運算符進行字符串連接比調用StringBuffer/StringBuilder對象的append方法連接字符串性能更好?

  • 如果連接字符串行表達式很簡單(順序結構),那麼"+"和StringBuilder基本是一樣的.
  • 如果是複雜的循環結構,那麼+操作時,每個循環內都會創建一個StringBuilder對象,消耗大量資源,解決這個問題的最好的辦法就是在外部創建一個StringBuilder對象,在內部調用append()方法

4.重載(Overload)和重寫(Override)的區別。重載的方法能否根據返回類型進行區分?

  • 重載發生在同一個類中,方法名相同,返回值可以不同,也可相同,方法的參數列表不同(參數類型不同,參數個數不同)
  • 重寫發生在子類與父類之間,返回值類型必須相同,子類的權限必須比父類更好訪問;
  • 重載的方法不能通過返回類型來區分,比如:void fun()int fun()在調用的時候,都是用 .fun()的方式來調用,不能夠區分是哪一個fun()方法.但是可以在class文件裏共存.

5.String類是否可以被繼承?
不能,String類似final類,不能被繼承

6.訪問修飾符public,private,protected,以及不寫(默認)時的區別?
在這裏插入圖片描述
7.Math.round(11.5) 等於多少?Math.round(-11.5)等於多少?
12 和 -11

8.構造器(Constructor)是否可以被重寫?
不能,但是構造器可以被重載

9.兩個對象equals相同,那麼他們的hashCode相同嗎?
相同.
equals和hashCode就相當於 X 與F (X) 之間的關係
重寫equals時必須重寫hashCode方法

10.char型變量是否可以儲存一個漢字,爲什麼?
可以
java使用的時Unicode編碼,一個char佔兩個字節,也就是16位,所以可以存的下

11.內部類與靜態內部類的區別?

  • 靜態內部類不用外部類實例化後被實例化
  • 內部類通常需要外部類實例化後被實例化

12.抽象的(abstract)方法是否可同時是靜態的(static),是否可同時是本地方法(native),是否可同時被synchronized修飾, 是否可同時被final修飾?

  • static方法不能不能被重寫,不能
  • native方法都是本地語言實現的,而abstract沒有實現,不能
  • synchronized方法有實現的細節,abstract沒有實現,不能
  • final方法不能被修改,abstract還要被子類實現,不能

13.說明靜態變量和實例變量的區別.

  • 靜態變量,由static修飾,屬於類變量,由類直接調用,不屬於任何一個實例,不管實例多少對象,靜態變量只有一個,大量使用於工具類
  • 實例變量,屬於某一實例,通過類的對象調用

14.靜態方法是否可以直接調用非靜態方法?
不可以,靜態方法只能訪問靜態方法,非靜態方法通過實例化對象調用

15.String s = new String(“xyz”);創建了幾個字符串對象?
兩個,一個是常量池的"xyz",另一個是new的堆上的對象

下半部分面試題

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