java面試題--java基礎--1

面試了好幾家公司,這個星期就抽空整理一下網上的還有我面試的時候問的面試題,記得不多,湊合着寫。。。
中軟融鑫是我面試過問得最多基礎java的公司,而且還往裏深。。。
我記得最清楚的也就是那麼幾個問題。。。
1.java 類加載器有幾種?
2.java 的 GC 機制怎麼判斷一個對象什麼時候回收?
3.hibernate 和 mybatis 的 區別?
印象最深的只記得三個。。。
因爲回答的不好,回頭我也百度了一下,發現自己真的學得不深。。。
所以要惡補一下java基礎知識。。。
故寫下這篇文章。。。
1.java加載器
1.1、概念
類加載器(class loader)用來加載 Java 類到 Java 虛擬機中。一般來說,Java虛擬機使用 Java 類的方式如下:Java 源程序(.java 文件)在經過 Java 編譯器編譯之後就被轉換成 Java 字節代碼(.class 文件)。類加載器負責讀取Java字節代碼,並轉換成 java.lang.Class類的一個實例。每個這樣的實例用來表示一個Java 類。通過此實例的 newInstance()方法就可以創建出該類的一個對象。
1.2、類加載器結構

Java 中的類加載器大致可以分成兩類:

一類是系統提供的:

引導類加載器(bootstrapclass loader):它用來加載 Java 的核心庫,是用原生代碼而不是java來實現的,並不繼承自java.lang.ClassLoader,除此之外基本上所有的類加載器都是java.lang.ClassLoader類的一個實例。
擴展類加載器(extensionsclass loader):它用來加載 Java 的擴展庫。Java 虛擬機的實現會提供一個擴展庫目錄(一般爲%JRE_HOME%/lib/ext)。該類加載器在此目錄裏面查找並加載 Java 類。
系統類加載器(systemclass loader或 App class loader):它根據當前Java 應用的類路徑(CLASSPATH)來加載 Java 類。一般來說,Java 應用的類都是由它來完成加載的。可以通過 ClassLoader.getSystemClassLoader() 來獲取它。

另外一類則是由 Java 應用開發人員編寫的:

開發人員可以通過繼承java.lang.ClassLoader 類的方式實現自己的類加載器,以滿足一些特殊的需求
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章