115個Java面試題和答案——終極(上)
本文我們將要討論Java面試中的各種不同型別的面試題,它們可以讓僱主測試應聘者的Java和通用的面向物件程式設計的能力。下面的章節分為上下兩篇,第一篇將要討論面向物件程式設計和它的特點,關於Java和它的功能的常見問題,Java的集合類,垃圾收集器,第二篇主要討論異常處理,Java小應用程式,Swing,JDBC,遠端方法呼叫(RMI),Servlet和JSP。
目錄
面向物件程式設計(OOP)
常見的Java問題
Java執行緒
Java集合類
垃圾收集器
面向物件程式設計(OOP)
Java是一個支援併發、基於類和麵向物件的計算機程式語言。下面列出了面向物件軟體開發的優點:
程式碼開發模組化,更易維護和修改。
程式碼複用。
增強程式碼的可靠性和靈活性。
增加程式碼的可理解性。
面向物件程式設計有很多重要的特性,比如:封裝,繼承,多型和抽象。下面的章節我們會逐個分析這些特性。
封裝
封裝給物件提供了隱藏內部特性和行為的能力。物件提供一些能被其他物件訪問的方法來改變它內部的資料。在Java當中,有3種修飾符:public,private和protected。每一種修飾符給其他的位於同一個包或者不同包下面物件賦予了不同的訪問許可權。
下面列出了使用封裝的一些好處:
通過隱藏物件的屬性來保護物件內部的狀態。
提高了程式碼的可用性和可維護性,因為物件的行為可以被單獨的改變或者是擴充套件。
禁止物件之間的不良互動提高模組化。
參考這個文件獲取更多關於封裝的細節和示例。
多型
多型是程式語言給不同的底層資料型別做相同的介面展示的一種能力。一個多型型別上的操作可以應用到其他型別的值上面。
繼承
繼承給物件提供了從基類獲取欄位和方法的能力。繼承提供了程式碼的重用行,也可以在不修改類的情況下給現存的類新增新特性。
抽象
抽象是把想法從具體的例項中分離出來的步驟,因此,要根據他們的功能而不是實現細節來建立類。Java支援建立只暴漏介面而不包含方法實現的抽象的類。這種抽象技術的主要目的是把類的行為和實現細節分離開。
抽象和封裝的不同點
抽象和封裝是互補的概念。一方面,抽象關注物件的行為。另一方面,封裝關注物件行為的細節。一般是通過隱藏物件內部狀態資訊做到封裝,因此,封裝可以看成是用來提供抽象的一種策略。
常見的Java問題
1.什麼是Java虛擬機器?為什麼Java被稱作是“平臺無關的程式語言”?
Java虛擬機器是一個可以執行Java位元組碼的虛擬機器程序。Java原始檔被編譯成能被Java虛擬機器執行的位元組碼檔案。
Java被設計成允許應用程式可以執行在任意的平臺,而不需要程式設計師為每一個平臺單獨重寫或者是重新編譯。Java虛擬機器讓這個變為可能,因為它知道底層硬體平臺的指令長度和其他特性。
2.JDK和JRE的區別是什麼?
Java執行時環境(JRE)是將要執行Java程式的Java虛擬機器。它同時也包含了執行applet需要的瀏覽器外掛。Java開發工具包(JDK)是完整的Java軟體開發包,包含了JRE,編譯器和其他的工具(比如:JavaDoc,Java偵錯程式),可以讓開發者開發、編譯、執行Java應用程式。
3.”static”關鍵字是什麼意思?Java中是否可以覆蓋(override)一個private或者是static的方法?
“static”關鍵字表明一個成員變數或者是成員方法可以在沒有所屬的類的例項變數的情況下被訪問。
Java中static方法不能被覆蓋,因為方法覆蓋是基於執行時動態繫結的,而static方法是編譯時靜態繫結的。static方法跟類的任何例項都不相關,所以概念上不適用。
4.是否可以在static環境中訪問非static變數?
static變數在Java中是屬於類的,它在所有的例項中的值是一樣的。當類被Java虛擬機器載入的時候,會對static變數進行初始化。如果你的程式碼嘗試不用例項來訪問非static的變數,編譯器會報錯,因為這些變數還沒有被創建出來,還沒有跟任何例項關聯上。
5.Java支援的資料型別有哪些?什麼是自動拆裝箱?
Java語言支援的8中基本資料型別是:
byte
short
int
long
float
double
boolean
char
自動裝箱是Java編譯器在基本資料型別和對應的物件包裝型別之間做的一個轉化。比如:把int轉化成Integer,double轉化成double,等等。反之就是自動拆箱。
本教程由尚矽谷教育大資料研究院出品,如需轉載請註明來源。