最近個人也在準備找工作的事情。自己整理了一些JAVA面試題供大家參考,大家一起努力,找到一份好工作! 如果大家還有一些基礎的面試題,可以評論給我。我做整理。謝謝大家分享。後續會提供比較難得面試題。
Java物件導向的特徵是什麼 三大特徵是:封裝、繼承和多態。(問到這些盡量回答出其含義
封裝是指將某事物的屬性和行為封裝到對象中,這個對象只對外公布需要公開的屬性和行為,而這個公布也是可以有選擇性的公布給其它對象。在java中能使用private、protected、public三種修飾符或不用(即預設defalut)對外部對象訪問該對象的屬性和行為進行限制。(這裡又引出一個問題:java中修飾符範圍) 繼承是子物件可以繼承父物件的屬性和行為,亦即父物件擁有的屬性和行為,其子物件也就擁有了這些屬性和行為。這非常類似大自然中的物種遺傳。 多態存在的三個必要條件:
一、要有繼承;
二、要有重寫;
三、父類引用指向子類對象。
多態是指父物件中的同一個行為能在其多個子物件中有不同的表現。也就是說子物件可以使用重寫父物件中的行為,使其擁有不同於父物件和其它子物件的表現,這就是overriding(重寫)。 多態則是體現在overriding(重寫)上,而overload(重載)則不屬於物件導向中多態的範疇,因為overload(重載)概念在非物件導向中也存在。 overriding(重寫)與而overload(重載)區別 方法的覆蓋Overriding 和重載Overloading 是java 多態性的不同表現;覆蓋Overriding 是父類與子類之間多態性的一種表現,重載Overloading 是一個類中多態性的一種表現。
error 和exception 有什麼區別? error 表示系統級的錯誤和程式不必處理的異常,是恢複不是不可能但很困難的情況下的一種嚴重問題;比如記憶體溢出,不可能指望程式能處理這樣的情況;exception 表示需要捕捉或者需要程式進行處理的異常,是一種設計或實現問題;也就是說,它表示如果程式運行正常,從不會發生的情況。
介面是否可繼承介面? 抽象類別是否可實現(implements)介面? 抽象類別是否可繼承實體類 介面可以繼承介面。抽象類別可以實現(implements)介面,抽象類別可繼承實體類,但前提是實體類必須有明確的建構函式。
Java中ArrayList和LinkedList區別 1.ArrayList是實現了基於動態數組的資料結構,LinkedList基於鏈表的資料結構。
2.對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
3.對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。
Arraylist與LinkedList預設空間是多少
ArrayList 初始化大小是 10 (如果你知道你的arrayList 會達到多少容量,可以在初始化的時候就指定,能節省擴容的效能開支) linkedList 是一個雙向鏈表,沒有初始化大小,也沒有擴容的機制,就是一直在前面或者後面新增就好。
靜態變數和執行個體變數的區別 靜態變數是被static修飾符修飾的變數,也稱為類變數,它屬於類,不屬於類的任何一個執行個體對象,一個類不管建立多少個執行個體對象,靜態變數在記憶體中有且僅有一個拷貝;靜態變數可以實現讓多個對象共用記憶體。
執行個體變數必須依存於某一執行個體對象,需要先建立執行個體對象,然後通過執行個體對象才能訪問到它。
sleep方法和wait方法有什麼區別? sleep方法是Thread類的靜態方法,讓調用線程進入休眠狀態,同時將執行機會讓給其他線程,等到休眠時間結束後線程進入就緒狀態,搶佔CPU擷取執行機會。但是,如果當前線程擁有鎖,Thread.sleep不會讓線程釋放鎖。
wait方法是Object類的方法,當一個線程執行到wait方法時,它就進入到一個和該對象相關的等待池,同時釋放對象的鎖,使其它線程能夠訪問,需要通過notify、notifyAll方法來喚醒等待的線程。
== 和equals的區別 比較基礎資料型別 (Elementary Data Type)時,== 和equal 效果一樣,對於引用對象的比較,equals 比較的是值,==比較的是記憶體位址。