前言
面試中對於技術職位,通常分筆試與面談,若是面試官的一些小問題你能夠立馬找到對應的知識點擴展開來,那麼這就是你的優點,本系列將講述一些java面試中的事,不會很詳細,可是應該比較全面吧。java
主要內容面試
多層命名空間,解決命名衝突,提升可維護性、提升開發效率等ide
出發點不一樣、層次邏輯關係不一樣、數據處理方式與控制程序方式不一樣、分析設計與編碼轉換方式不一樣編碼
抽象(過程抽象、數據抽象)、繼承、封裝、多態設計
較高開發效率(繼承或組合)、保證軟件的魯棒性、保證軟件的高可維護性對象
子類繼承僅能繼承一個父類與其中非私有(public和protected)的成員變量與方法,存在同名時則進行覆蓋繼承
組合是顯式的、繼承是隱式的。組合中的總體類和繼承中的子類對應,組合中的局部類和繼承中的父類對應,Cat是Vehicle的一種,是繼承關係(is-a)、Car中包含多個Tire,則是一種組合關係(has-a)。接口
不要輕易使用繼承,當父類被修改時,會影響到全部繼承自它的子類,從而增長程序的維護難度與成本。採用接口與組合的方式比採用繼承的方式具備更好的可擴展性,能使用組合就儘可能不要使用繼承。事務
方法的重載(overload)-編譯時多態、方法的覆蓋(override)-運行時多態內存
不少方面吧,覆蓋是子類與父類(垂直關係)(參數列表相同),重載是同一個類(水平關係)(參數列表不一樣)
前者爲實體、後者是概念;接口設計理念(has-a)、抽象類設計理念(is-a);接口是一種特殊形式的抽象類,抽象類多用於同類事務中有沒法具體描述的方法的場景、接口多用於不一樣類之間
靜態內部類、成員內部類、局部內部類、匿名內部類
Java提供了獲取類名的方法:getClass().getName()
class A{}public class Test extends A { public void test(){
System.out.println(super.getClass().getName());
} public static void main(String[] args){ new Test().test();
}
}
以上輸出爲Test,由於Java中任何類都繼承Object類,getClass()方法在Object中被定義爲final與native,子類不能覆蓋該方法。咱們須要使用反射機制,使用getClass().getSuperclass().getName()。
break(直接跳出當前循環,即終止內層循環,不影響外層循環)、continue(跳過循環體中的一部分語句,中斷一次循環)、return(使程序控制返回到調用該方法的地方)
final(引用不可變)、finally(在須要釋放資源的狀況下)、finalize(Object的方法,垃圾回收器準備好釋放對象佔用的空間,先調用finalize()方法,而且在下一次垃圾回收動做發生時,纔會真正回收對象佔用的內存)
待續有幫助的話,能夠期待Thr章節