Java面試題!一起來看看吧~

小夥伴們大家好啊~今天浙江優就業為大家整理了一些Java的經典面試試題,一起來看一下吧!

Java面試題!一起來看看吧~

1、內部類可以引用它的包含類(外部類)的成員嗎?有沒有什麼限制?

答:一個內部類對象可以訪問創建它的外部類對象的成員,包括私有成員

2、接口是否可繼承(extends)接口?抽象類是否可實現(implements)接口?抽象類是否可繼承具體類(concrete class)?

答:接口可以繼承接口,而且支持多重繼承。抽象類可以實現(implements)接口,抽象類可繼承具體類也可以繼承抽象類。

舉一個多繼承的例子,我們定義一個動物(類)既是狗(父類1)也是貓(父類2),兩個父類都有“叫”這個方法。那麼當我們調用“叫”這個方法時,它就不知道是狗叫還是貓叫了,這就是多重繼承的衝突。

而接口沒有具體的方法實現,所以多繼承接口也不會出現這種衝突。

3、String s = new String(“xyz”);創建了幾個字符串對象?

答:兩個對象,一個是靜態區的”xyz”,一個是用new創建在堆上的對象。

4、Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現接口?

答:可以繼承其他類或實現其他接口,在Swing編程和Android開發中常用此方式來實現事件監聽和回調。

5、一個”.java”源文件中是否可以包含多個類(不是內部類)?有什麼限制?

答:可以,但一個源文件中最多隻能有一個公開類(public class)而且文件名必須和公開類的類名完全保持一致。

6、GC是什麼?為什麼要有GC?

答:GC是垃圾收集的意思,內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會導致程序或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯式操作方法。Java程序員不用擔心內存管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM可以屏蔽掉顯式的垃圾回收調用。

垃圾回收可以有效的防止內存洩露,有效的使用可以使用的內存。垃圾回收器通常是作為一個單獨的低優先級的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清除和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。在Java誕生初期,垃圾回收是Java最大的亮點之一,因為服務器端的編程需要有效的防止內存洩露問題,然而時過境遷,如今Java的垃圾回收機制已經成為被詬病的東西。移動智能終端用戶通常覺得iOS的系統比Android系統有更好的用戶體驗,其中一個深層次的原因就在於Android系統中垃圾回收的不可預知性。

補充:垃圾回收機制有很多種,包括:分代複製垃圾回收、標記垃圾回收、增量垃圾回收等方式。標準的Java進程既有棧又有堆。棧保存了原始型局部變量,堆保存了要創建的對象。Java平臺對堆內存回收和再利用的基本算法被稱為標記和清除,但是Java對其進行了改進,採用“分代式垃圾收集”。這種方法會根據Java對象的生命週期將堆內存劃分為不同的區域,在垃圾收集過程中,可能會將對象移動到不同區域:

- 伊甸園(Eden):這是對象最初誕生的區域,並且對大多數對象來說,這裡是它們唯一存在過的區域。

- 倖存者樂園(Survivor):從伊甸園倖存下來的對象會被挪到這裡。

- 終身頤養園(Tenured):這是足夠老的倖存對象的歸宿。年輕代收集(Minor-GC)過程是不會觸及這個地方的。當年輕代收集不能把對象放進終身頤養園時,就會觸發一次完全收集(Major-GC),這裡可能還會牽扯到壓縮,以便為大對象騰出足夠的空間。

與垃圾回收相關的JVM參數:

-Xms / -Xmx — 堆的初始大小 / 堆的最大大小

-Xmn — 堆中年輕代的大小

-XX:-DisableExplicitGC — 讓System.gc()不產生任何作用

-XX:+PrintGCDetails — 打印GC的細節

-XX:+PrintGCDateStamps — 打印GC操作的時間戳

-XX:NewSize / XX:MaxNewSize — 設置新生代大小/新生代最大大小

-XX:NewRatio — 可以設置老生代和新生代的比例

-XX:PrintTenuringDistribution — 設置每次新生代GC後輸出倖存者樂園中對象年齡的分佈

-XX:InitialTenuringThreshold / -XX:MaxTenuringThreshold:設置老年代閥值的初始值和最大值

-XX:TargetSurvivorRatio:設置倖存區的目標使用率


分享到:


相關文章: