java基礎學習——java開發環境面試筆試題

                                                                               

                                                                                   java基礎學習——java開發環境面試題

1.什麼是JVM?Java跨平臺的原理是什麼?

答:

•JVM:(java virtual machine)java虛擬機。

•Java程序實際是在Java虛擬機(JRE是軟件實現)中運行,Java虛擬機類似一個模擬執行環境,在不同的操作系統上擁有不同的Java虛擬機實現,但是這些Java虛 擬機遵循統一的規範來解釋class文件,並將class文件中的指令轉換爲本地操作系統對應的指令,這樣就實現了相同的class文件,可以通過Java虛擬機轉換爲 對應操作系統上的對應指令,實現class文件,也就是Java程序,的跨平臺性。

2.JVM將類加載過程劃分成哪幾步?

答:

•JVM將類加載過程劃分爲三個步驟:裝載、鏈接和初始化。

• 裝載(Load):裝載過程負責找到二進制字節碼並加載至JVM中,JVM通過類的全限定名(com.bluedavy. HelloWorld)及類加載器(ClassLoaderA實例)完 成類的加載。
•鏈接(Link):鏈接過程負責對二進制字節碼的格式進行校驗、初始化裝載類中的靜態變量及解析類中調用的接口、類。
•初始化(Initialize):執行類中的靜態初始化代碼、構造器代碼及靜態屬性的初始化。

3.描述一下JVM加載class文件的原理機制?

答:

•JVM中類的裝載是由類加載器(ClassLoader)和它的子類來實現的,Java中的類加載器是一個重要的Java運行時系統組件,它負責在運行時查找和裝入類文 件中的類。

4.JVM內存管理的機制?

答:

•內存空間劃分爲:Sun JDK在實現時遵照JVM規範,將內存空間劃分爲堆、JVM方法棧、方法區、本地方法棧、PC寄存器。

•堆: 堆用於存儲對象實例及數組值,可以認爲Java中所有通過new創建的對象的內存都在此分配,Heap中對象所佔用的內存由GC進行回收,在32位操作系統 上最大爲 2GB,在64位操作系統上則沒有限制,其大小可通過-Xms和-Xmx來控制,-Xms爲JVM啓動時申請的最小Heap內存,默認爲物理內存的1/64但小1G B;-Xmx爲JVM可 申請的最大Heap內存,默認爲物理內存的1/4 但小於1GB,默認當空餘堆內存小於40%時,JVM會增大Heap到-Xmx指定的大小,可通 過-XX:MinHeapFreeRatio =來指定這個比例;當空餘堆內存大於70%時,JVM會減小Heap的大小到-Xms指定的大小,可通過-XX:MaxHeapFreeRatio=來指 定這個比例,對於運行系統而言, 爲避免在運行時頻繁調整Heap 的大小,通常將-Xms和-Xmx的值設成一樣。
•JVM方法棧: 爲線程私有,其在內存分配上非常高效。當方法運行完畢時,其對應的棧幀所佔用的內存也會自動釋放。當JVM方法棧空間不足時,會拋
StackOverflowError的錯誤,在Sun JDK中可以通過-Xss來指定其大小。
• 方法區: 要加載的類的信息(名稱、修飾符等)、類中的靜態變量、類中定義爲final類型的常量、類中的Field信息、類中的方法信息。方法區域也是全局共享的,在 一定 條件下它也會被GC,當方法區域要使用的內存超過其允許的大小時,會拋出OutOfMemory的錯誤信息。在Sun JDK中這塊區域對應Permanet Generation,又稱爲 持久代,默認最小值爲16MB,最大值爲64MB,可通過-XX:PermSize及-XX:MaxPermSize來指定最小值和最大值。
•本地方法棧: 用於支持native方法的執行,存儲了每個native方法調用的狀態。在Sun JDK的實現中,和JVM方法棧是同一個。
•PC寄存器: 佔用的可能爲CPU寄存器或操作系統內存。

5.JDKJREJVM的關係是什麼?

答:


6.JDK和JRE的區別是什麼?

答: 
•Java運行時環境(JRE)是將要執行Java程序的Java虛擬機。它同時也包含了執行applet需要的瀏覽器插件。Java開發工具包(JDK)是完整的Java軟件開發包 ,包含了JRE,編譯器和其他的工具(比如:JavaDoc,Java調試器),可以讓開發者開發、編譯、執行 Java應用程序。


7.什麼是JDK,舉出幾個公司開發的JDK?
答:
•JDK(Java Development Kit)是整個Java的核心,包括了Java運行環境(Java Runtime Envirnment),一堆Java工具和Java基礎的類庫(rt.jar)。
•最主流的JDK是Sun公司發佈的JDK。
•除了Sun之外,還有很多公司和組織都開發了自己的JDK,例如IBM公司開發的JDK,BEA公司的Jrocket,還有GNU組織開發的JDK等等。其中IBM的JD K包含的JVM(Java Virtual Machine)運行效率要比Sun JDK包含的JVM高出許多。


希望大神能夠指點一些錯誤和補充一些知識,謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章