Java面試必會的java基礎概念與常識總結

何爲編程

編程就是讓計算機爲解決某個問題而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
爲了使計算機能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算機之間交流的過程就是編程。

什麼是Java,Java概述

  • Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作爲靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 。
  • 1991 年Sun公司的James Gosling等人開始開發名稱爲 Oak 的語言,希望用於控制嵌入在有線電視交換盒、PDA等的微處理器;
    1994年將Oak語言更名爲Java;
    Java的三種技術架構:
    JAVAEE:Java Platform Enterprise Edition,開發企業環境下的應用程序,主要針對web程序開發;
    JAVASE:Java Platform Standard Edition,完成桌面應用程序的開發,是其它兩者的基礎;
    JAVAME:Java Platform Micro Edition,開發電子消費產品和嵌入式設備,如手機中的程序;

Java 語言有哪些特點?

  • 簡單易學;
  • 面向對象(封裝,繼承,多態);
  • 平臺無關性( Java 虛擬機實現平臺無關性);
  • 可靠性;
  • 安全性;
  • 支持多線程( C++ 語言沒有內置的多線程機制,因此必須調用操作系統的多線程功能來進行多線程程序設計,而 Java 語言卻提供了多線程支持);
  • 支持網絡編程並且很方便( Java 語言誕生本身就是爲簡化網絡編程設計的,因此 Java 語言不僅支持網絡編程而且很方便);
  • 編譯與解釋並存;

JVM JDK 和 JRE 的區別

  • JVM
    Java 虛擬機(Java Virtual Machine, JVM)是運行 Java 字節碼的虛擬機。JVM 有針對不同系統的特定實現(Windows,Linux,macOS),目的是使用相同的字節碼,它們都會給出相同的結果。字節碼和不同系統的 JVM 實現是 Java 語言“一次編譯,隨處可以運行”的關鍵所在。
  • JRE
    JRE 是 Java 運行時環境(Java Runtime Environment)。它是運行已編譯 Java 程序所需的所有內容的集合,包括 Java 虛擬機(JVM),Java 類庫,java 命令和其他的一些基礎構件。但是,它不能用於創建新程序。如果你只是爲了運行一下 Java 程序的話,那麼你只需要安裝 JRE 就可以了。
  • JDK
    JDK 是 Java Development Kit,它是功能齊全的 Java SDK。它擁有 JRE 所擁有的一切,還有編譯器(javac)和工具(如 javadoc 和 jdb)。它能夠創建和編譯程序。如果你需要進行一些 Java 編程方面的工作,那麼你就需要安裝 JDK 了。
  • 三者關係
    在這裏插入圖片描述

什麼是字節碼?採用字節碼的好處是什麼?

在 Java 中,JVM 可以理解的代碼就叫做字節碼(即擴展名爲 .class 的文件),它不面向任何特定的處理器,只面向虛擬機。Java 語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。所以 Java 程序運行時比較高效,而且,由於字節碼並不針對一種特定的機器,因此,Java 程序無須重新編譯便可在多種不同操作系統的計算機上運行。
Java 程序從源代碼到運行一般有下面 3 步:

在這裏插入圖片描述

什麼是 Java 程序的主類 應用程序和小程序的主類有何不同?

一個程序中可以有多個類,但只能有一個類是主類。在 Java 應用程序中,這個主類是指包含 main()方法的類。而在 Java 小程序中,這個主類是一個繼承自系統類 JApplet 或 Applet 的子類。應用程序的主類不一定要求是 public 類,但小程序的主類要求必須是 public 類。主類是 Java 程序執行的入口點。

Java 應用程序與小程序之間有哪些差別?

簡單說應用程序是從主線程啓動(也就是 main() 方法)。applet 小程序沒有 main() 方法,主要是嵌在瀏覽器頁面上運行(調用init()或者run()來啓動),嵌入瀏覽器這點跟 flash 的小遊戲類似。

import java 和 javax 有什麼區別?

剛開始的時候 JavaAPI 所必需的包是 java 開頭的包,javax 當時只是擴展 API 包來使用。然而隨着時間的推移,javax 逐漸地擴展成爲 Java API 的組成部分。但是,將擴展從 javax 包移動到 java 包確實太麻煩了,最終會破壞一堆現有的代碼。因此,最終決定 javax 包將成爲標準 API 的一部分。
所以,實際上 java 和 javax 沒有區別。這都是一個名字。

Java 和 C++的區別

  • 都是面向對象的語言,都支持封裝、繼承和多態
  • Java不提供指針來直接訪問內存,程序內存更加安全
  • Java的類是單繼承的,C++支持多重繼承;雖然Java的類不可以多
  • 繼承,但是接口可以多繼承。
  • Java有自動內存管理機制,不需要程序員手動釋放無用內存

Oracle JDK 和 OpenJDK 的對比

  • Oracle JDK 大概每 6 個月發一次主要版本,而 OpenJDK 版本大概每三個月發佈一次。但這不是固定的,我覺得了解這個沒啥用處。詳情參見:https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence 。
  • OpenJDK 是一個參考模型並且是完全開源的,而 Oracle JDK 是
  • OpenJDK 的一個實現,並不是完全開源的;
  • Oracle JDK 比 OpenJDK 更穩定。OpenJDK 和 Oracle JDK 的代碼幾乎相同,但 Oracle JDK 有更多的類和一些錯誤修復。因此,如果您想開發企業/商業軟件,我建議您選擇 Oracle JDK,因爲它經過了徹底的測試和穩定。某些情況下,有些人提到在使用 OpenJDK 可能會遇到了許多應用程序崩潰的問題,但是,只需切換到 Oracle JDK 就可以解決問題;
  • 在響應性和 JVM 性能方面,Oracle JDK 與 OpenJDK 相比提供了更好的性能;
  • Oracle JDK 不會爲即將發佈的版本提供長期支持,用戶每次都必須通過更新到最新版本獲得支持來獲取最新版本;
  • Oracle JDK 根據二進制代碼許可協議獲得許可,而 OpenJDK 根據 GPL v2 許可獲得許可。

本文章只是爲了記錄知識點方便日後複習查看,內容均來源於網絡,如侵權刪!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章