1. 程式人生 > >Java基礎題(待定)

Java基礎題(待定)

1. String類為什麼是final的。

主要是為了“效率” 和 “安全性” 的緣故。若 String允許被繼承, 由於它的高度被使用率, 可能會降低程式的效能,所以String被定義成final。

2. HashMap的原始碼,實現原理,底層結構。

HashMap和Hashtable的底層實現都是陣列+連結串列結構實現的,

3. 說說你知道的幾個Java集合類:list、set、queue、map實現類

List是一個元素有序、可重複的集合,集合中每個元素都有其對應的順序索引。
set:類似於一個罐子。放進去的物件沒有順序,也不能包含重複元素。
Queue:用於模擬"佇列"
的先進先出的資料結構 Map:用於儲存具有"對映關係"的資料

4. 描述一下ArrayList和LinkedList各自實現和區別

LinkedList是雙向連結串列,插入資料時十分方便

ArrayList是動態陣列,基於索引訪問,速度快

Vector非常類似ArrayList,但是Vector是同步的

Stack繼承自Vector,實現一個後進先出的堆疊。

5. Java中的佇列都有哪些,有什麼區別。

佇列是一種特殊的線性表,
它只允許在表的前端進行刪除操作,而在表的後端(rear)進行插入操作,

6. 反射中,Class.forName和classloader的區別

 java中class.forName和classLoader都可用來對類進行載入。

class.forName除了將類的.class檔案載入到jvm中之外,還會對類進行解釋,執行類中的static塊。

而classLoader只幹一件事情,就是將.class檔案載入到jvm中,不會執行static中的內容,只有在newInstance才會去執行static塊。
  1. Java7、Java8的新特性

8. Java陣列和連結串列兩種結構的操作效率

陣列:
陣列就像一個班級一樣,一個班多少人,每個人的學號啥的都是確定的啦,根據學號,喊一個學號就會有個人答應,

連結串列:
連結串列就像一個鐵鏈,一環扣一環,不能跳過一個,直接去找下一個,必須挨個找,根據節點的next
的指向,查詢,要查詢就得一個個查。
  1. Java記憶體洩露的問題
記憶體洩漏的定義:物件已經沒有被應用程式使用,但是垃圾回收器沒辦法移除它們,因為還在被引用著。

1像HashMap、ArrayList的集合物件,當它們被宣告為static時,它們的生命週期就會和應用程式一樣長。

2.事件監聽和回撥函式。當一個監聽器在使用的時候被註冊,但不再使用之後卻未被反註冊。

3.通常一些成員變數引用其他物件,初始化的時候需要置空。

10. string、stringbuilder、stringbuffer區別

stringfinal是不可變長度字串,使用字元陣列儲存字串
stringbuilder、stringbuffer是可變長度的字串,也使用字元陣列儲存字串
stringbuilder、stringbuffer都有一個抽象的公共的父類
string,stringbuffer是執行緒安全的,stringbuilder是非執行緒安全的

11. hashtable和hashmap的區別

hashtable不允許key和valuenull,執行緒安全的
hashmap允許key和valuenull,非執行緒安全的

13 .異常的結構,執行時異常和非執行時異常,各舉個例子

Exception異常是程式執行時發生的錯誤
Error是指java虛擬機器相關的問題,如系統崩潰,虛擬機器出錯。一般無法捕獲
4.執行時異常和非執行時異常

(1)執行時異常都是不檢查異常,一般是由程式邏輯錯誤引起的,

(2)非執行時異常是RuntimeException以外的異常,如 IOException、SQLException 等。對於這種異常,JAVA編譯器強制要求我們必需對出現的這些異常進行catch並處理,否則程式就不能編譯通過。

常見 RuntimeException :

空指標,引數不合法,數學異常,陣列下標越界,型別強轉異常
  1. String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他們之間用 == 比較的結果

  2. String 類的常用方法

16. Java 的引用型別有哪幾種

4種, 物件的強、軟、弱和虛引用4種

17. 抽象類和介面的區別

答:抽象類和介面都不能夠例項化,但可以定義抽象類和介面型別的引用。

抽象類中可以定義構造器,可以有抽象方法和具體方法,定義成員變數型別可以是各種修飾符

介面中定義的方法全部都是抽象方法。介面中定義的成員變數必須是public,實際上都是常量。
  1. java的基礎型別和位元組大小。

21. Hash衝突怎麼辦?哪些解決雜湊衝突的方法?

1.開發地址法2.拉鍊法3.多重雜湊

訪問修飾符public,private,protected,以及不寫(預設)時的區別?

修飾符 當前類 同 包 子 類 其他包
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×

24. hashCode() 與 equals() 生成演算法、方法怎麼重寫

equals表示的兩個變數是否是對同一個物件的引用
==操作比較的是兩個變數的值是否相等
hashcode()方法約定宣告相等物件必須具有相等的雜湊碼

“`