1. Java 中的設計原則?
-
開閉原則(Open Close Principle):對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。所以一句話概括就是:爲了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,我們需要使用接口和抽象類。
-
里氏代換原則(Liskov Substitution Principle):任何基類可以出現的地方,子類一定可以出現。LSP 是繼承複用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被複用,而衍生類也能夠在基類的基礎上增加新的行爲。里氏代換原則是對 “開 - 閉” 原則的補充。實現 “開 - 閉” 原則的關鍵步驟就是抽象化。而基類與子類的繼承關係就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規範。
-
依賴倒轉原則(Dependence Inversion Principle):針對接口編程,依賴於抽象而不依賴於具體。
-
接口隔離原則(Interface Segregation Principle):使用多個隔離的接口,比使用單個接口要好。還是一個降低類之間的耦合度的意思:降低依賴,降低耦合。
-
迪米特法則(最少知道原則)(Demeter Principle):一個實體應當儘量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。
-
合成複用原則(Composite Reuse Principle){} 原則是儘量使用合成 / 聚合的方式,而不是使用繼承
-
聚合用來表示 “擁有” 關係或者整體與部分的關係
-
合成用來表示一種強得多的 “擁有” 關係
2. 說一下你熟悉的設計模式?
- 觀察者模式
- 裝飾者模式
- 代理模式
3. 簡單工廠和抽象工廠有什麼區別?
- 工廠模式:定義一個用於創建對象的接口,讓子類決定實例化哪一個類
- 抽象工廠模式:爲創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類
4. 裝飾者模式和適配器模式以及代理模式的區別?
裝飾者和代理模式的區別
- 裝飾者模式關注的是對象的動態添加功能。代理模式關注的是對對象的控制訪問,對它的用戶隱藏對象的具體信息。
裝飾者模式和適配器模式
- 裝飾者模式和被裝飾的類要實現同一個接口,或者裝飾類是被裝飾的類的子類。適配器模式和被適配的類具有不同的接口。
- 適配器模式被用於橋接兩個接口,而裝飾模式的目的是在不修改類的情況下給類增加新的功能。
5. 說出幾個在 JDK 庫中使用的設計模式?
裝飾器設計模式(Decorator design pattern)被用於多個 Java IO 類中。單例模式(Singleton pattern)用於 Runtime,Calendar 和其他的一些類中。工廠模式(Factory pattern)被用於各種不可變的類如 Boolean,像 Boolean.valueOf,觀察者模式(Observer pattern)被用於 Swing 和很多的事件監聽中。
【Java 面試那點事】
這裏致力於分享 Java 面試路上的各種知識,無論是技術還是經驗,你需要的這裏都有!
這裏可以讓你【快速瞭解 Java 相關知識】,並且【短時間在面試方面有跨越式提升】
面試路上,你不孤單!