java面試題1 發佈於 8 小時前 – 10 次檢閱

1.什麼是重載和重寫?

Java 里方法的重寫(Overriding)和重載(Overloading)就是指的 java 里多態。

重寫就是父類與子類之間的多態,重載是在一個類中多態對的體現 :

(1)方法重載是一個類中定義了多個方法名相同,而他們的參數的數量不同或數量相同而類型和次序不同,則稱為方法的重載(Overloading)。

(2)方法重寫是在子類存在方法與父類的方法的名字相同,而且參數的個數與類型一樣,返回值也一樣的方法,就稱為重寫(Overriding)。

2.String 中的==和 equals 的區別?

== 比 較 的 是 內 存 地 址 , equals 比 較 的 是 內 容:

String a="abc"     String b="abc"     System.out.println(a==b)     輸出的是 false.

3.Final 關鍵字

其實 final是一個安全修飾符,就是用 final 修飾的類不能被繼承,用 final 聲明的方法不能被重寫,使用 final 聲明的變量就相當於常量,不能被修改。

4.final 和 finally 的區別?

finally是在異常里經常用到的, 就是 try 和 cach 里的代碼執行完以後,必須要執行的方法,我們經常在 finally 里寫一些關閉資源的方法,比如說關閉數據庫連接,或者關閉 IO 流什麼的.–>Java自我進階知識整理1:使用try-with-resources優雅關閉資源

5.HashMap 和 Hashtable 的區別

這兩個都是是 Map 接口下的實現類,我們開發的時候經常用的是 HashMap 雖然 HashMap不是線程安全的但是他的存儲效率比較高,Hashtable 是線程安全我們看過他底層的 put 方法前面加的 synchronized關鍵字,但是他的效率太低,我們開發很少用.為什麼說 hashTable是線程安全的? 因為看源碼的時候裏面的 put 方法前面加了 synchronized 關鍵字,什麼情況下用 hashMap? 我們有時候在自定義返回 json 字符串的時候,封裝到 List 中進行返回.

6.int 和 Integer 的區別?

Int 是基本數據類型呀 Integer 是 java 為 int 提供的封裝類,是引用數據類型; Int 的默認值為 0,而 integer 的默認值為 null

7.Java 的三大特性

這個 java 的三大特性無非就是封裝,繼承,多態嘛 封裝體現到我們把方法和變量都封裝到一個類里,直接用對象調用就可以了 繼承的體現是我們可以復用父類里的代碼,我們在項目中可以把公有的方法寫到 base 的一個類中,讓其他類繼承就可以了. 多態就是 Java 里的繼承,重寫,重載,都是多態,如果兩邊是數字的化,那就是一 個運算符,如果兩邊是字符串的話,那他就是個連接符.

8.ArrayList 與 LinkedList 區別

ArrayList 使用數組方式存儲數據,所以根據索引查詢數據速度快,而新增或者刪除元素時需要設計到位移操作,所以比較慢。 LinkedList 使用雙向鏈接方式存儲數據,每個元素都記錄前後元素的指針,所以插入、刪除數據時只是更改前後元素的指針指向即可,速度非常快,然後通過下標查詢元素時需要從頭開始索引,所以比較慢,但是如果查詢前幾個元素或後幾個元素速度比較快。開發中什麼時候到 ArrayList?,我們在做查詢的時候把查詢出來的數據經常存到 arraylist 里.

9.在 Java 中要想實現多線程代碼有三種手段?

一種是繼承 Thread 類 另一種就是實現 Runnable 接口 最後一種就是實現 Callable 接口(第四種也是實現 callable 接口,只不過有返回值而已)

10.線程的狀態

其實線程一般具有五種狀態,即創建、就緒、運行、阻塞、終止。(這個可以去找一下圖,有助於理解)