Java核心技術及面試指南 面向對象部分的面試題總結以及答案


問題2.7.1,開放性問題,說一下你對面向對象思想的了解。

要點1,先說基礎概念,比如面向對象思想包括封裝、繼承、多態,然后說些語法,比如可以通過extends繼承類、通過implement來實現接口。

要點2,得結合具體的實際,說一下在你做過的項目里,面向對象思想帶來的具體好處,比如結合一個具體的例子(比如電信系統),說一下把方法都定義到父類里,然后通過繼承子類來擴展,從而能改善代碼結構,通過多態來減少代碼修改后的維護量。這個切記別只說理論,說的時候一定得舉些你項目里的例子。

問題2.7.2,接口和抽象類有什么差別?

這個基本都會問到,首先從語法角度分析,這時可以解釋一下為什么接口和抽象方法Java編譯器不讓定義方法體,以及接口的屬性為什么默認是public static final。

隨后一定得說,抽象類是對邏輯的歸納,比如人類是中國人和美國人類的抽象類,而接口是對功能的抽象,比如把能發光的功能歸納到一個接口里。隨后可以舉些你項目里用到過的例子來說你定義過哪些接口和抽象類,由此通過案例來說明這兩者的差別。

問題2.7.3,說下重載(overload)和覆蓋(override)的差別。

這個也會經常問,重載是多態的一種體現,表現形式是方法同名但參數不同,而覆蓋是子類方法覆蓋掉父類方法。

隨后請大家說出子類覆蓋父類方法的兩大局限,子類方法不能縮小父類方法的訪問權限,而且,子類方法不能拋出比父類方法更多的異常。同時解釋一下具體的原因。

問題2.7.4,this和super的含義。這個是語法問題,就不展開了。

問題2.7.5,finalize方法有什么作用?

第一,可以說出這個方法在類被回收時被調用;第二可以說,一般我們在項目里不會重寫這個方法,因為會引發內存無法回收的問題。后面我們會詳細提到 java的垃圾回收機制(GC),如果大家感覺可以,可以由這個問題展開回答一下你對GC的認識。

問題2.7.6,final關鍵的含義。

這時請分別說出final作用到類、方法和屬性上分別有什么作用。隨后最好結合你的實際項目,說下final類、final方法和final屬性的應用場景。

問題2.7.7,構造函數能否被覆蓋,能否被重載?

構造函數能重載,但不能覆蓋,原因已經講過。

接下來的問題只給出的題目,答案請到附錄里去找。

問題2.7.8靜態變量和實例變量的區別?

問題2.7.9是否可以從一個static方法內部發出對非static方法的調用?

問題2.7.10請說出作用域public,private,protected,以及不寫時的區別。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM