Java面試寶典 Beta5.0版 (2018年最新公測版)

antaojin發表於2018-01-19

第一章 內容介紹

該寶典是一份知識點全面又能不斷更新,與時俱進的學習手冊,不僅收錄了作者親身面試遇到的問題,還收錄了近上萬名黑馬學子面試時遇到的問題。我們會一直不斷地更新和充實該寶典,同時也希望讀者朋友能夠多多提供優質的面試題,也許下一個版本就有你提供的面試題哦。

本人的面試實戰記錄釋出在黑馬論壇:http://bbs.itheima.com/thread-196394-1-1.html

大家可以訪問上面的網址,通過陽哥的實戰記錄略微感知一下真實面試的情況,從中學習一些面試技巧以便讓自己在未來的面試中能夠得心應手,順利拿到自己喜歡的offer。

注意:該面試寶典僅供參考,由於作者本人的知識水平有限加之編寫時間倉促因此難免有bug的存在,希望大家見諒。

該寶典的一個明確目標是能夠讓90%以上的Java技術面試題都落到該寶典中,如果您有不錯的知識或者面試題,您可以傳送到wangzhenyang@itcast.cn,本人將不勝感激。讓天下沒有難學的知識,希望你我的努力能幫到更多的莘莘學子。

世間事,很多都可投機取巧,但技術卻必須靠日積月累的努力來提高。本寶典更加註重的是知識的掌握,而不僅僅是對面試題的應付。在展示常見的面試問題以及回答技巧的同時還詳細講解了每一道題所包含的知識點,讓讀者不僅知其然,更知其所以然。

第二章 JavaSE基礎

一、Java物件導向

1. 物件導向都有哪些特性以及你對這些特性的理解

1)繼承:繼承是從已有類得到繼承資訊建立新類的過程。提供繼承資訊的類被稱為父類(超類、基類);得到繼承資訊的類被稱為子類(派生類)。繼承讓變化中的軟體系統有了一定的延續性,同時繼承也是封裝程式中可變因素的重要手段。

2) 封裝:通常認為封裝是把資料和運算元據的方法繫結起來,對資料的訪問只能通過已定義的介面。物件導向的本質就是將現實世界描繪成一系列完全自治、封閉的物件。我們在類中編寫的方法就是對實現細節的一種封裝;我們編寫一個類就是對資料和資料操作的封裝。可以說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的程式設計介面。

3) 多型性:多型性是指允許不同子型別的物件對同一訊息作出不同的響應。簡單的說就是用同樣的物件引用呼叫同樣的方法但是做了不同的事情。多型性分為編譯時的多型性和執行時的多型性。如果將物件的方法視為物件向外界提供的服務,那麼執行時的多型性可以解釋為:當A系統訪問B系統提供的服務時,B系統有多種提供服務的方式,但一切對A系統來說都是透明的。方法過載(overload)實現的是編譯時的多型性(也稱為前繫結),而方法重寫(override)實現的是執行時的多型性(也稱為後繫結)。執行時的多型是物件導向最精髓的東西,要實現多型需要做兩件事:1. 方法重寫(子類繼承父類並重寫父類中已有的或抽象的方法);2. 物件造型(用父型別引用引用子型別物件,這樣同樣的引用呼叫同樣的方法就會根據子類物件的不同而表現出不同的行為)。

4)抽象:抽象是將一類物件的共同特徵總結出來構造類的過程,包括資料抽象和行為抽象兩方面。抽象只關注物件有哪些屬性和行為,並不關注這些行為的細節是什麼。

注意:預設情況下物件導向有3大特性,封裝、繼承、多型,如果面試官問讓說出4大特性,那麼我們就把抽象加上去。


2. 訪問許可權修飾符public、private、protected, 以及不寫(預設)時的區別(2017-11-12)

該題目比較簡單,不同的許可權修飾符的區別見下表。

修飾符

當前類

同 包

子 類

其他包

public  

protected

×

default

×

×

private

×

×

×

3. 如何理解clone物件

3.1為什麼要用clone

在實際程式設計過程中,我們常常要遇到這種情況:有一個物件A,在某一時刻A中已經包含了一些有效值,此時可能會需要一個和A完全相同新物件B,並且此後對B 任何改動都不會影響到A中的值,也就是說,A與B是兩個獨立的物件,但B的初始值是由A物件確定的。在Java語言中,用簡單的賦值語句是不能滿足這種需求的。要滿足這種需求雖然有很多途徑,但實現clone()方法是其中最簡單,也是最高效的手段。

   3.2 new一個物件的過程和clone一個物件的過程區別

new操作符的本意是分配記憶體。程式執行到new操作符時,首先去看new操作符後面的型別,因為知道了型別,才能知道要分配多大的記憶體空間。分配完記憶體之後,再呼叫建構函式,填充物件的各個域,這一步叫做物件的初始化,構造方法返回後,一個物件建立完畢,可以把他的引用(地址)釋出到外部,在外部就可以使用這個引用操縱這個物件。

clone在第一步是和new相似的,都是分配記憶體,呼叫clone方法時,分配的記憶體和原物件(即呼叫clone方法的物件)相同,然後再使用原物件中對應的各個域,填充新物件的域,填充完成之後,clone方法返回,一個新的相同的物件被建立,同樣可以把這個新物件的引用釋出到外部。




相關文章