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