【001期】 | JavaSE面試題(一):面向對象

1、面向對象和麪向過程的區別?

面向過程java

  • 優勢:性能比面向對象高,由於類調用時須要實例化,開銷比較大,比較消耗 資源;好比單片機、嵌入式開發、Linux/Unix 等通常採用面向過程開發,性能是 最重要的因素。
  • 缺點:沒有面向對象易維護、易複用、易擴展

面向對象面試

  • ​優勢:易維護、易複用、易擴展,因爲面向對象有封裝、繼承、多態性的特 性,能夠設計出低耦合的系統,使系統更加靈活、更加易於維護
  • 缺點:性能比面向過程低

2、面向對象的特性以及你對這些特性的理解?

封裝:
一般認爲封裝是把數據和操做數據的方法綁定起來,對數據的訪問只能經過已定義的接口。面向對象 的本質就是將現實世界描繪成一系列徹底自治、封閉的對象。咱們在類中編寫的方法就是對實現細節的一種封裝;我 們編寫一個類就是對數據和數據操做的封裝。能夠說,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡單的編程 接口。編程

繼承
繼承是從已有類獲得繼承信息建立新類的過程。提供繼承信息的類被稱爲父類(超類、基類);獲得繼 承信息的類被稱爲子類(派生類)。繼承讓變化中的軟件系統有了必定的延續性,同時繼承也是封裝程序中可變因素的 重要手段。服務器

多態
多態是指容許不一樣子類型的對象對同一消息做出不一樣的響應。簡單的說就是用一樣的對象引用調用一樣的方法可是作了不一樣的事情。多態性分爲編譯時的多態性和運行時的多態性。若是將對象的方法視爲對象向外界提供的服務,那麼運行時的多態性能夠解釋爲:當 A 系統訪問 B 系統提供的服務時,B 系統有多種提供服務的方式,但一切對 A 系統來講都是透明的。ide

方法重載(overload)實現的是編譯時的多態性(也稱爲前綁定);
方法重寫(override)實現的是運行時的多態性(也稱爲後綁定)。工具

運行時的多態是面向對象最精髓的東西,要實現多態須要作兩件事:性能

  • 方法重寫:子類繼承父類並重寫父類中已有的或抽象的方法;
  • 對象造型:用父類型引用引用子類型對象,這樣一樣的引用調用一樣的方法就會根據子類對象的不一樣而表現出不一樣的行爲。

抽象
抽象是將一類對象的共同特徵總結出來構造類的過程,包括數據抽象和行爲抽象兩方面。抽象只關注對象有哪些屬性和行爲,並不關注這些行爲的細節是什麼。spa

注意:默認狀況下面向對象有 3 大特性,封裝、繼承、多態,若是面試官問讓說出 4 大特性,那麼咱們就把抽象 加上去。

3、Java中多態的實現機制?

Java中的多態靠的是父類或接口定義的引用變量能夠指向子類或具體實現類的實例對象, 而程序調用的方法在運行期才動態綁定,就是引用變量所指向的具體實例對象的方法, 也就是內存里正在運行的那個對象的方法,而不是引用變量的類型中定義的方法。設計

4、JDK、JRE、JVM三者間的聯繫與區別?

image.png
JDK
Java Development Kit,它是功能齊全的 Java SDK。它擁有 JRE 所擁有 的一切,還有編譯器(javac)和工具(如 javadoc 和 jdb)。它可以建立和編 譯程序。code

JRE
Java 運行時環境。它是運行已編譯 Java 程序所需的全部內容的集合, 包括 Java 虛擬機(JVM),Java 類庫,java 命令和其餘的一些基礎構件。可是,它不能用於建立新程序。

兩者比較
若是你只是爲了運行一下 Java 程序的話,那麼你只須要安裝 JRE 就能夠了。
若是你須要進行一些 Java 編程方面的工做,那麼你就須要安裝 JDK 了。

可是,這不是絕對的:有時,即便你不打算在計算機上進行任何 Java 開發,仍然須要安裝 JDK。例如,若是要使用 JSP 部署 Web 應用程序,那麼從技術上講,只是在應用程序服務器中運行 Java 程序。那爲何須要 JDK 呢?由於應用程序服務器會將 JSP 轉換爲 Java servlet,而且須要使用 JDK 來編譯servlet。

相關文章
相關標籤/搜索