java集合面試題
Java面試中,Java工程師該如何應對面試題目呢?你做好準備了嗎?了解面試題目了嗎?以下是陽光網小編幫你們整理的java集合面試題,一起來學習啦。
java集合面試題篇一
問題1:靜態類型有什么特點?
答案:靜態變量是和類綁定到一起的,而不是類的實例對象。每一個實例對象都共享同樣一份靜態變量。也就是說,一個類的靜態變量只有一份,不管它有多少個對象。類變量或者說靜態變量是通過static這個關鍵字來聲明的。類變量通常被用作常量。靜態變量通常通過類名字來進行訪問。當程序運行的時候這個變量就會創建直到程序結束后才會被銷毀。類變量的作用域和實例變量是一樣的。它的初始值和成員變量也是一樣的,當變量沒被初始化的時候根據它的數據類型,會有一個默認值。類似的,靜態方法是屬于類的方法,而不是類對象,它的調用并不作用于類對象,也不需要創建任何的類實例。靜態方法本身就是final的,因為重寫只會發生在類實例上,靜態方法是和類綁定在一起的,不是對象。父類的靜態方法會被子類的靜態方法屏蔽,只要原來方法沒有聲明為final。非靜態方法不能重寫靜態方法,也就是說,你不能在子類中把一個靜態方法改成實例方法。
非靜態變量在每一個對象實例上都有單獨的'一份值。
問題2:&操作符和&&操作符有什么區別?
答案:當一個&表達式在求值的時候,兩個操作數都會被求值,&&更像是一個操作符的快捷方式。當一個&&表達式求值的時候,先計算第一個操作數,如果它返回true才會計算第二個操作數。如果第一個操作數取值為fale,第二個操作數就不會被求值。
問題3:Java是如何處理整型的溢出和下溢的?
答案:Java根據類型的大小,將計算結果中的對應低階字節存儲到對應的值里面。
問題4:public static void寫成static public void會怎樣?
答案:程序正常編譯及運行。
問題5,聲明變量和定義變量有什么不同?
答案:聲明變量我們只提供變量的類型和名字,并沒有進行初始化。定義包括聲明和初始化兩個階段String s;只是變量聲明,String s = new String(“bob”); 或者String s = “bob”;是變量定義。
問題6:Java支持哪種參數傳遞類型?
答案:Java參數都是進行傳值。對于對象而言,傳遞的值是對象的引用,也就是說原始引用和參數引用的那個拷貝,都是指向同一個對象。
問題7:對象封裝的原則是什么?
答案:封裝是將數據及操作數據的代碼綁定到一個獨立的單元。這樣保障了數據的安全,防止外部代碼的錯誤使用。對象允許程序和數據進行封裝,以減少潛在的干涉。對封裝的另一個理解是作為數據及代碼的保護層,防止保護層外代碼的隨意訪問。
問題8:你怎么理解變量?
答案:變量是一塊命名的內存區域,以便程序進行訪問。變量用來存儲數據,隨著程序的執行,存儲的數據也可能跟著改變。
問題9:數值提升是什么?
答案:數值提升是指數據從一個較小的數據類型轉換成為一個更大的數據類型,以便進行整型或者浮點型運算。在數值提升的過程中,byte,char,short值會被轉化成int類型。需要的時候int類型也可能被提升成long。long和float則有可能會被轉換成double類型。
問題10:Java的類型轉化是什么?
答案:從一個數據類型轉換成另一個數據類型叫做類型轉換。Java有兩種類型轉換的方式,一個是顯式的類型轉換,一個是隱式的。
java集合面試題篇二
問題1:main方法的參數里面,字符串數組的第一個參數是什么?
答案:數組是空的,沒有任何元素。不像C或者C++,第一個元素默認是程序名。如果命令行沒有提供任何參數的話,main方法中的String數組為空,但不是null。
問題2:怎么判斷數組是null還是為空?
答案:輸出array.length的值,如果是0,說明數組為空。如果是null的話,會拋出空指針異常。
問題3:程序中可以允許多個類同時擁有都有main方法嗎?
答案:可以。當程序運行的時候,我們會指定運行的類名。JVM只會在你指定的類中查找main方法。因此多個類擁有main方法并不存在命名沖突的問題。
問題4:靜態變量在什么時候加載?編譯期還是運行期?靜態代碼塊加載的時機呢?
答案:當類加載器將類加載到JVM中的時候就會創建靜態變量,這跟對象是否創建無關。靜態變量加載的時候就會分配內存空間。靜態代碼塊的代碼只會在類第一次初始化的.時候執行一次。一個類可以有多個靜態代碼塊,它并不是類的成員,也沒有返回值,并且不能直接調用。靜態代碼塊不能包含this或者super,它們通常被用初始化靜態變量。
問題5:簡單的介紹下JVM是如何工作的?
答案:JVM是一臺抽象的計算機,就像真實的計算機那樣,它們會先將.java文件編譯成.class文件(.class文件就是字節碼文件),然后用它的解釋器來加載字節碼。
java集合面試題篇三
問題1:什么是數據的封裝?
答案:數據封裝的一種方式是在類中創建set和get方法來訪問對象的數據變量。一般來說變量是private的,而get和set方法是public的。封裝還可以用來在存儲數據時進行數據驗證,或者對數據進行計算,或者用作自省(比如在struts中使用javabean)。把數據和功能封裝到一個獨立的結構中稱為數據封裝。封裝其實就是把數據和關聯的操作方法封裝到一個獨立的單元中,這樣使用關聯的這些方法才能對數據進行訪問操作。封裝提供的是數據安全性,它其實就是一種隱藏數據的方式。
問題2:什么是反射API?它是如何實現的?
答案:反射是指在運行時能查看一個類的狀態及特征,并能進行動態管理的功能。這些功能是通過一些內建類的反射API提供的,比如Class,Method,Field, Constructors等。使用的例子:使用Java反射API的'getName方法可以獲取到類名。
問題3:JVM自身會維護緩存嗎,是不是在堆中進行對象分配,操作系統的堆還是JVM自己管理的堆?為什么?
答案:是的,JVM自身會管理緩存,它在堆中創建對象,然后在棧中引用這些對象。
問題4:虛擬內存是什么?
答案:虛擬內存又叫延伸內存,實際上并不存在真實的物理內存。
問題5:transient變量有什么特點?
答案:transient變量不會進行序列化。例如一個實現Serializable接口的類在序列化到ObjectStream的時候,transient類型的變量不會被寫入流中,同時,反序列化回來的時候,對應變量的值為null。
問題6:哪些容器使用Border布局作為它們的默認布局?
答案:Window, Frame, Dialog。
【java面試題】相關文章:
java經典面試題目12-09
java測試面試題11-25
java最新面試題04-05
java基礎面試題04-04
java面試題匯總04-05
java高級面試題04-06
java面試題全集04-06
華為java面試題04-06
java基礎面試題及答案04-05