好程式員大資料教育訓練分享大資料面試寶典四,31、abstract 的method 是否可同時是static,是否可同時是native,是否可同時是synchronized? 【基礎】
答:都不能。
32、靜态變量和執行個體變量的差別?【基礎】
答:靜态變量也稱為類變量,歸全類共有,它不依賴于某個對象,可通過類名直接通路;而執行個體變量必須依存于某一執行個體,隻能通過對象才能通路到它。
33、是否可以從一個static 方法内部發出對非static 方法的調用?【基礎】
答:不可以,如果其中包含對象的method(),不能保證對象初始化。
34、寫clone()方法時,通常都有一行代碼,是什麼?【基礎】
答:Clone 有預設行為:super.clone(),他負責産生正确大小的空間,并逐位複制。
35、GC 是什麼? 為什麼要有GC? 【基礎】
答:GC 是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導緻程式或系統的不穩定甚至崩潰,Java 提供的GC 功能可以自動監測對象是否超過作用域進而達到自動回收記憶體的目的,Java 語言沒有提供釋放已配置設定記憶體的顯示操作方法。Java 程式員不用擔心記憶體管理,因為垃圾收集器會自動進行管理。要請求垃圾收集,可以調用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() 。
36、垃圾回收的優點和原理。并考慮2 種回收機制。【基礎】
答:Java 語言中一個顯著的特點就是引入了垃圾回收機制,使c++程式員最頭疼的記憶體管理的問題迎刃而解,它使得Java 程式員在編寫程式的時候不再需要考慮記憶體管理。由于有個垃圾回收機制,Java 中的對象不再有“作用域”的概念,隻有對象的引用才有“作用域”。垃圾回收可以有效的防止記憶體洩露,有效的使用可以使用的記憶體。垃圾回收器通常是作為一個單獨的低級别的線程運作,不可預知的情況下對記憶體堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程式員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代複制垃圾回收和标記垃圾回收,增量垃圾回收。
37、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛拟機進行垃圾回收?【基礎】
答:對于GC 來說,當程式員建立對象時,GC 就開始監控這個對象的位址、大小以及使用情況。通常,GC 采用有向圖的方式記錄和管理堆(heap)中的所有對象。通過這種方式确定哪些對象是"可達的",哪些對象是"不可達的"。當GC 确定一些對象為"不可達"時,GC 就有責任回收這些記憶體空間。可以。程式員可以手動執行System.gc(),通知GC 運作,但是Java 語言規範并不保證GC 一定會執行。
38、String s=new String(“xyz”);建立了幾個String Object? 【基礎】
答:兩個對象,一個是"xyx",一個是指向"xyx"的引用對象s。
39、接口是否可繼承接口? 抽象類是否可實作(implements)接口? 抽象類是否可繼承實體類(concrete class)? 【基礎】
答:接口可以繼承接口。抽象類可以實作(implements)接口,抽象類可繼承實體類,但前提是實體類必須有明确的構造函數。
40、Java 的接口和C++的虛類的相同和不同處。【基礎】
答:由于Java 不支援多繼承,而有可能某個類或對象要使用分别在幾個類或對象裡面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,接口有更高的靈活性,因為接口中沒有任何實作代碼。當一個類實作了接口以後,該類要實作接口裡面所有的方法和屬性,并且接口裡面的屬性在預設狀态下面都是public static,所有方法預設情況下是public.一個類可以實作多個接口。