java面試題--虛擬機、拆箱裝箱、線程創建、泛型等

1. 什麼是java虛擬機?爲什麼java可以跨平臺?

答:java虛擬機是用來運行字節碼文件,識別其中字節碼指令,並識別調用操作系統向上的API完成相應命令執行.簡而言之,JVM是使用軟件模擬Java 字節碼的指令集的虛擬機
Java 能夠跨平臺運行的核心在於 JVM ,屏蔽了操作系統的底層,再利用不具有平臺依賴性的中間產物字節碼文件完成跨平臺

2. Java支持的數據類型有哪些?什麼是自動拆箱裝箱?

答:java支持的基本數據類型有八種,也叫元數據爲:char,byte,short,int,long,float,double,boolean;引用數據類型有枚舉,接口,類
自動裝箱:就是把基本類型數據轉換成包裝器類型數據
自動拆箱:就是把包裝器類型數據轉換成基本類型數據

Java基礎之包裝類的自動裝箱、拆箱
Java基礎之包裝類的自動裝箱、拆箱和Integer的值緩存範圍

3. 創建線程的方式有幾種?

有三種方式:
第一種是繼承Thread類,重寫run方法,用繼承Thread類的那個類去new對象,調用start()方法進入就緒狀態
第二種是實現Runnable接口,實現run方法,用實現該接口的類去new對象,並new出一個Thread類中,把那個實現接口的類創建的對象傳遞進去,調用start方法.
第三種是實現callable接口,實現call方法,該方法能有返回值,而且能拋出異常.
CallableThreadTest ctt = new CallableThreadTest();
FutureTask ft = new FutureTask<>(ctt);

創建線程的三種方式

4.進程和線程的區別

進程是資源分配的最小單位,線程是程序執行的最小單位(資源調度的最小單位)
進程有自己的獨立地址空間,每啓動一個進程,系統就會爲它分配地址空間,建立數據表來維護代碼段、堆棧段和數據段,這種操作非常昂貴。
而線程是共享進程中的數據的,使用相同的地址空間,因此CPU切換一個線程的花費遠比進程要小很多,同時創建一個線程的開銷也比進程要小很多。
進程和線程的區別

5. 什麼是死鎖?

死鎖是指兩個或兩個以上的線程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。
舉例:哲學家進餐問題,銀行家算法

6.什麼是泛型,怎麼使用,有什麼好處?

類型的參數化,就是可以把類型像方法的參數那樣傳遞
泛型類
泛型接口
泛型方法
泛型使編譯器可以在編譯期間對類型進行檢查以提高類型安全,減少運行時由於對象類型不匹配引發的異常
泛型全解

7.& 和 && 的區別

8.輸入一個字符串,統計這個字符串中的字母,數字,符號,和空格的個數

答案

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