如何強制執行垃圾回收?
(1)首先,垃圾回收是JVM自動處理的,我們不能強制致敬,儘管我們可以調用System.gc()。
(2)JVM不能保證GC能夠直接開始回收。
(3)每一個class都從Object基礎了finalize()方法。
(4)當垃圾回收器覺得應用中沒有更多的引用對象存在時就會調用finalize()。因此我們手動調用finalize()並沒有什麼多大作用
(5)我們可以通過調用System.gc()和Runtime.gc()來請求回收不用的對象,但是不能保證這些對象何時會被回收。
Java的Socket的有點和缺點
優點:
(1)Socket是靈活的,可以很容易的實現一般的通信。
(2)Socket通信只需要很少的流量而不像HTML表單和CGI腳本那樣每次請求網頁都會傳輸整個頁面。
缺點:
(1)基於Socket的通信只允許在應用間發送原始的數據。
(2)無論是客戶端還是服務端都必須提供一個機制使數據在任何情況下都是有用的。
你如何理解Synchronization?爲什麼它很重要?
(1)Synchronization關鍵字是控制多線程訪問共享資源的一種手段。
(2)Synchronization只允許在一個時間點一個線程訪問一個資源。
(3)Synchronization保證當一個線程在修改共享的對象時另一個線程不能再訪問該對象。
(4)Synchronization通常會導致錯誤,因爲它防止了一些類型的數據被損壞。
什麼是不變類?如何創建一個不變類?
(1)不變類是指一個類一旦被創建了,它的內容就不能被修改。比如不能被繼承,其所有屬性/方法都不能被重寫等。
(2)不變對象是那些一旦被創建就狀態不能再被修改的對象
(3)既然不變類一般被創建就不能被修改,那麼它們就是典型的線程安全的。
(4)JDK的不變類有八大基本類型的包裝類:String、Integer、Boolean、等等。
ArrayList和Vector的區別?
(1)ArrayList是線程不安全的,Vectory是線程安全的,因爲Vectory的每一個方法都用synchronization裝飾了。
(2)這兩者的元素都是通過數組來持有的
JDK、JRE和JVM有什麼區別?
JVM爲內存分配了多少類型的區域?
什麼是JIT編譯器?
什麼是Platform?
Java平臺和其他平臺的主要區別是什麼?
Java的“一次編寫處處運行”的本質是什麼?
什麼是類加載器(ClassLoader)
局部變量默認值是多少?
什麼是運行時多態性(Runtime Polymorphism)?
什麼是抽象?
抽象是隱藏實現的細節而只向用戶突出功能的一個過程。
在Java中創建對象有哪幾種方式?
(1)使用關鍵字new對象
(2)使用Class.forName()根據對象的名稱去反射一個對象,反射見http://blog.csdn.net/u012481172/article/details/49668315;
(3)使用clone()方法克隆一個已經存在的對象。
(4)使用反序列化,將已經序列化的對象反序列化成對象。