分享Java面试中的几个重要基础问题
在國內互聯網企業中,Java工程師的缺口是最大的,可見Java的受歡迎程度。Java需求量大,自然競爭力也就高,如果沒有足夠的優勢,很難在激烈的競爭中脫穎而出。根據學員們的面試反饋情況,小千整理了大家在Java面試中常遇到的幾個重要基礎問題,供大家參考。
1、Java是否會出現內存溢出?
內存溢出是指應用系統中存在無法回收的內存或使用的內存過多,最終使得程序運行要用到的內存大于虛擬機能提供的最大內存。為了解決Java中內存溢出問題,我們首先必須了解Java是如何管理內存的,Java的內存管理就是對象的分配和釋放問題。引起內存溢出的原因有很多種,常見的有以下幾種:
①內存中加載的數據量過于龐大,如一次從數據庫取出過多數據;
②集合類中有對對象的引用,使用完后未清空,使得JVM不能回收;
③代碼中存在死循環或循環產生過多重復的對象實體;
④使用的第三方軟件中的BUG;
⑤啟動參數內存值設定的過小;
2、說說JVM內存組成
Java把內存分兩種:一種是棧內存,另一種是堆內存。
①在函數中定義的基本類型變量和對象的引用變量都在函數的棧內存中分配;
②堆內存用來存放由 new創建的對象和數組。
在函數(代碼塊)中定義一個變量時, Java就在棧中為這個變量分配內存空間,當超過變量的作用域后, Java會自動釋放掉為該變量所分配的內存空間;在堆中分配的內存由 Java虛擬機的自動垃圾回收器來管理。
3、”static”關鍵字是什么意思?Java中是否可以覆蓋(override)一個private或者是static的方法?
“static”關鍵字表明一個成員變量或者是成員方法可以在沒有所屬的類的實例變量的情況下被訪問。
Java中static方法不能被覆蓋,因為方法覆蓋是基于運行時動態綁定的,而static方法是編譯時靜態綁定的。static方法跟類的任何實例都不相關,所以概念上不適用。
4、是否可以在static環境中訪問非static變量?
static變量在Java中是屬于類的,它在所有的實例中的值是一樣的。當類被Java虛擬機載入的時候,會對static變量進行初始化。如果你的代碼嘗試不用實例來訪問非static的變量,編譯器會報錯,因為這些變量還沒有被創建出來,還沒有跟任何實例關聯上。
5、JDK和JRE的區別是什么?
JDK-Java Development Kit,Java開發包。JRE-Java Runtime Environment Java運行環境。
Java運行時環境(JRE)是將要執行Java程序的Java虛擬機。它同時也包含了執行applet需要的瀏覽器插件。Java開發工具包(JDK)是完整的Java軟件開發包,包含了JRE,編譯器和其他的工具(比如:JavaDoc,Java調試器),可以讓開發者開發、編譯、執行Java應用程序。
這幾個Java面試中的基礎問題還是很重要的,因為多數時候用人單位都會考量大家的基礎如何。希望能幫到大家!
本文來自千鋒教育,轉載請注明出處。
總結
以上是生活随笔為你收集整理的分享Java面试中的几个重要基础问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学完之后从业情况怎么样?
- 下一篇: 作为初学者,应该如何系统学习Java呢?