1. 程式人生 > >2018年JAVA面試題整理(1)--基礎

2018年JAVA面試題整理(1)--基礎

最近個人也在準備找工作的事情!自己整理了一些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)介面,抽象類可繼承實體類,但前提是實體類必須有明確的建構函式。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的區別比較基本資料型別時,== 和equal 效果一樣,對於引用物件的比較,equals 比較的是值,==比較的是記憶體地址。