Java基礎題(待定)
阿新 • • 發佈:2019-01-06
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塊。
- Java7、Java8的新特性
8. Java陣列和連結串列兩種結構的操作效率
陣列:
陣列就像一個班級一樣,一個班多少人,每個人的學號啥的都是確定的啦,根據學號,喊一個學號就會有個人答應,
連結串列:
連結串列就像一個鐵鏈,一環扣一環,不能跳過一個,直接去找下一個,必須挨個找,根據節點的next 的指向,查詢,要查詢就得一個個查。
- Java記憶體洩露的問題
記憶體洩漏的定義:物件已經沒有被應用程式使用,但是垃圾回收器沒辦法移除它們,因為還在被引用著。
1像HashMap、ArrayList的集合物件,當它們被宣告為static時,它們的生命週期就會和應用程式一樣長。
2.事件監聽和回撥函式。當一個監聽器在使用的時候被註冊,但不再使用之後卻未被反註冊。
3.通常一些成員變數引用其他物件,初始化的時候需要置空。
10. string、stringbuilder、stringbuffer區別
string:final是不可變長度字串,使用字元陣列儲存字串
stringbuilder、stringbuffer是可變長度的字串,也使用字元陣列儲存字串
stringbuilder、stringbuffer都有一個抽象的公共的父類
string,stringbuffer是執行緒安全的,stringbuilder是非執行緒安全的
11. hashtable和hashmap的區別
hashtable不允許key和value為null,執行緒安全的
hashmap允許key和value為null,非執行緒安全的
13 .異常的結構,執行時異常和非執行時異常,各舉個例子
Exception異常是程式執行時發生的錯誤
Error是指java虛擬機器相關的問題,如系統崩潰,虛擬機器出錯。一般無法捕獲
4.執行時異常和非執行時異常
(1)執行時異常都是不檢查異常,一般是由程式邏輯錯誤引起的,
(2)非執行時異常是RuntimeException以外的異常,如 IOException、SQLException 等。對於這種異常,JAVA編譯器強制要求我們必需對出現的這些異常進行catch並處理,否則程式就不能編譯通過。
常見 RuntimeException :
空指標,引數不合法,數學異常,陣列下標越界,型別強轉異常
String a= “abc” String b = “abc” String c = new String(“abc”) String d = “ab” + “c” .他們之間用 == 比較的結果
String 類的常用方法
16. Java 的引用型別有哪幾種
4種, 物件的強、軟、弱和虛引用4種
17. 抽象類和介面的區別
答:抽象類和介面都不能夠例項化,但可以定義抽象類和介面型別的引用。
抽象類中可以定義構造器,可以有抽象方法和具體方法,定義成員變數型別可以是各種修飾符
介面中定義的方法全部都是抽象方法。介面中定義的成員變數必須是public,實際上都是常量。
- java的基礎型別和位元組大小。
21. Hash衝突怎麼辦?哪些解決雜湊衝突的方法?
1.開發地址法2.拉鍊法3.多重雜湊
訪問修飾符public,private,protected,以及不寫(預設)時的區別?
修飾符 當前類 同 包 子 類 其他包
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
24. hashCode() 與 equals() 生成演算法、方法怎麼重寫
equals表示的兩個變數是否是對同一個物件的引用
==操作比較的是兩個變數的值是否相等
hashcode()方法約定宣告相等物件必須具有相等的雜湊碼
“`