首頁  >  文章  >  Java  >  一些在JAVA筆試中出現的試題

一些在JAVA筆試中出現的試題

怪我咯
怪我咯原創
2017-06-25 10:19:511326瀏覽

      2017年6月7日,天氣晴轉陰。心情還不錯。

      上週六參加了自己的第一場筆試,感覺很糟糕,主要是對基礎知識掌握不紮實,現在把筆試中的部分問題總結歸納如下,便於以後查看。

1.GC是什麼?為什麼要GC?

      GC(GarbageCollection)是垃圾回收機制。在Java中開發人員無法使用指標來自由的管理內存,GC是JVM對記憶體(實際上就是物件)進行管理的方式。 java虛擬機器可以自動判斷並收集到垃圾,但一般不會立即釋放它們的記憶體空間,也可以在程式中使用System.gc()來強制垃圾回收,但是要注意的是,系統並不保證會立即進行釋放記憶體。 GC使得Java開發人員擺脫了繁瑣的記憶體管理工作,讓程式的開發更有效率。

GC基本原則:

      Java的記憶體管理其實是物件的管理,其中包含物件的分配和釋出。

      對於程式設計師來說,分配對象使用new關鍵字;釋放對象時,只要將對象所有引用賦值為null,讓程式不能夠再存取到這個對象,我們稱該對象為"不可達的"。 GC將負責回收所有"不可達"物件的記憶體空間。 

      對GC來說,當程式設計師建立物件時,GC就開始監控這個物件的位址、大小、使用情況。通常,GC會採用有向圖的方式來記錄和管理堆(heap)中的所有物件。透過這種方式確定哪些物件是"可達的",哪些物件是"不可達的"。當GC確定一些物件為"不可達"時,GC就有責任回收這些記憶體空間。但是,為了確保 GC能夠在不同平台實現,Java對GC的許多行為都沒有嚴格的規定。例如,對於採用哪種類型的回收演算法、何時進行回收等重要問題都沒有明確的規定。因此,不同的JVM的實作者往往有不同的實作演算法,這為Java程式設計師的開發帶來行多不確定性。

2.介面和抽象類別的差別?

介面是對動作的抽象,抽象類別是對根源的抽象。抽象類別表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。 例如,男人、女人,這兩個類別(如果是類別的話),他們的抽象類別是人。說明:他們都是人。人可以吃東西,狗也可以吃東西,你可以把「吃東西」定義成一個接口,然後讓這些類別去實現它。所以,在高階語言上,一個類別只能繼承一個類別(抽象類別)(正如人不可能同時是生物和非生物),但是可以實作多個介面(吃飯介面、走路介面)。

當你專注於一個事物的本質的時候,用抽象類別;當你專注於一個操作的時候,用介面。

(1)抽象類別和介面都不能直接實例化,如果要實例化,抽象類別變數必須指向實作所有抽象方法的子類別對象,介面變數必須指向實作所有介面方法的類別對象。

(2)抽象類別要被子類別繼承,介面要被子類別實作。

(3)介面只能做方法申明,在抽象類別中可以做方法申明,也可以做方法實作。

(4)介面裡定義的變數只能是公共的靜態常數,抽象類別中的變數是普通變數。

(5)抽象類別裡的抽象方法必須全部被子類別所實現,如果子類別不能全部實作父類別抽象方法,那麼該子類別只能是抽象類別。同樣,一個類別實作介面的時候,如不能全部實作介面方法,那麼該類別也只能為抽象類別。

(6)抽象方法只能申明,不能實現,介面是設計的結果 ,抽象類別是重構的結果。

(7)抽象類別裡可以沒有抽象方法。

(8)如果一個類別裡有抽象方法,那麼這個類別只能是抽象類別。

(9)抽象方法要實現,所以不能是靜態的,也不能是私有的。

(10)接口可繼承接口,並可多繼承接口,但類別只能單根繼承。

(11)抽象類別和介面都是用來抽象化具體物件的,但是介面的抽象層級最高。

(12)抽象類別可以有具體的方法和屬性, 介面只能有抽象方法和不可變常數。

(13)抽象類別主要用來抽象類別,介面主要用來抽像功能。

(14)在抽象類別中,如果方法不包含任何實現,則衍生類別必須覆寫它們。介面中所有方法都必須是未實現的。

3.為什麼說Mybatis是半自動ORM映射工具?它與全自動的差異在哪裡?

Hibernate屬於全自動ORM映射工具,使用Hibernate查詢關聯物件或關聯集合物件時,可以根據物件關係模型直接取得,所以它是全自動的。而Mybatis在查詢關聯物件或關聯集合物件時,則需要手動編寫sql來完成,所以稱為半自動ORM映射工具。

 

以上是一些在JAVA筆試中出現的試題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn