這些基礎(chǔ)的java面試題,你都知道嗎?
最近收到好多正在找工作的同學(xué)的訴苦,辛辛苦苦準(zhǔn)備了十多天,終于有了一個(gè)面試的機(jī)會(huì),卻折在了“八大基本數(shù)據(jù)類型都有什么?”這種最基礎(chǔ)的問(wèn)題上,因而痛失offer,錯(cuò)失機(jī)會(huì),真是太可惜了。

面試官的心思難以捉摸,鬼知道會(huì)問(wèn)什么奇葩問(wèn)題,可能很多同學(xué)都把精力用在了IOC,AOP,數(shù)據(jù)庫(kù)調(diào)優(yōu)以及各種框架原理的準(zhǔn)備上,而忽略了那些最簡(jiǎn)單,最基礎(chǔ)的問(wèn)題。
有了前車之鑒,為了避免其他同學(xué)也遇到這種情況。UP特意整理了一些在面試中出現(xiàn)頻率比較高的Java基礎(chǔ)的問(wèn)題,希望能幫助各位同學(xué)快速回憶起Java中基礎(chǔ)的知識(shí)點(diǎn),順利拿到offer,找到自己滿意的工作。

以下總結(jié)的問(wèn)題,全都來(lái)自Java300集,基礎(chǔ)不太扎實(shí)的同學(xué),一定要再好好學(xué)一下哦~
1、什么是JVM?什么是JDK? 什么是JRE?
JVM :JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫(xiě),它是整個(gè)java實(shí)現(xiàn)跨平臺(tái)的最核心的部分,所有的java程序會(huì)首先被編譯為.class的類文件,這種類文件可以在虛擬機(jī)上執(zhí)行。
JRE:JRE是java runtime environment(java運(yùn)行環(huán)境)的縮寫(xiě)。光有JVM還不能讓class文件執(zhí)行,因?yàn)樵诮忉宑lass的時(shí)候JVM需要調(diào)用解釋所需要的類庫(kù)lib。在JDK的安裝目錄里你可以找到j(luò)re目錄,里面有兩個(gè)文件夾bin和lib,在這里可以認(rèn)為bin里的就是jvm,lib中則是jvm工作所需要的類庫(kù),而jvm和lib和起來(lái)就稱為jre。
JDK:JDK是java development kit(java開(kāi)發(fā)工具包)的縮寫(xiě)。每個(gè)學(xué)java的人都會(huì)先在機(jī)器上裝一個(gè)JDK,那 讓我們看一下JDK的安裝目錄。在目錄下面有六個(gè)文件夾、一個(gè)src類庫(kù)源碼壓縮包、和其他幾個(gè)聲明文件。其中,真正在運(yùn)行java時(shí)起作用的是以下四個(gè)文件夾:bin、include、lib、jre。
現(xiàn)在我們可以看出這樣一個(gè)關(guān)系,JDK包含JRE,而JRE包含JVM。
JDK,JRE,JVM三者關(guān)系概括如下:
jdk是JAVA程序開(kāi)發(fā)時(shí)用的開(kāi)發(fā)工具包,其內(nèi)部也有JRE運(yùn)行環(huán)境JRE。JRE是JAVA程序運(yùn)行時(shí)需要的運(yùn)行環(huán)境,就是說(shuō)如果你光是運(yùn)行JAVA程序而不是去搞開(kāi)發(fā)的話,只安裝JRE就能運(yùn)行已經(jīng)存在的JAVA程序了。JDk、JRE內(nèi)部都包含JAVA虛擬機(jī)JVM,JAVA虛擬機(jī)內(nèi)部包含許多應(yīng)用程序的類的解釋器和類加載器等等。
2、Java三種注釋類型
1)單行注釋,采用“//”方式.只能注釋一行代碼。
2)多行注釋,采用“/*...*/”方式,可注釋多行代碼,其中不允許出現(xiàn)嵌套。
3)文檔注釋,采用“/**...*/”方式。
3、8種基本數(shù)據(jù)類型及其字節(jié)數(shù)

4、i++和++i的異同之處
共同點(diǎn):
i++和++i都是變量自增1,都等價(jià)于i=i+1
如果i++,++i是一條單獨(dú)的語(yǔ)句,兩者沒(méi)有任何區(qū)別
i++和++i的使用僅僅針對(duì)變量。 5++和++5會(huì)報(bào)錯(cuò),因?yàn)?不是變量。
不同點(diǎn):
如果i++,++i不是一條單獨(dú)的語(yǔ)句,他們就有區(qū)別。
i++ :先運(yùn)算后增1。如:
++i : 先增1后運(yùn)算。如:
5、if多分支語(yǔ)句和switch多分支語(yǔ)句的異同之處
相同之處:
都是分支語(yǔ)句,對(duì)超過(guò)一種的情況進(jìn)行判斷處理。
不同之處:
switch更適合用于多分支情況,就是有很多種情況需要判斷處理,判斷條件類型單一,只有一個(gè)入口,在分支執(zhí)行完后(如果沒(méi)有break跳出),不加判斷地執(zhí)行下去;
而if—elseif---else多分枝主要適用于分支較少的分支結(jié)構(gòu),判斷類型不是單一,只要一個(gè)分支被執(zhí)行后,后邊的分支不再執(zhí)行。
switch為等值判斷(不允許比如>= <=),而if為等值和區(qū)間都可以,if的使用范圍大。
6、while和do-while循環(huán)的區(qū)別
while先判斷后執(zhí)行,第一次判斷為false,循環(huán)體一次都不執(zhí)行
do while先執(zhí)行 后判斷,最少執(zhí)行1次。
如果while循環(huán)第一次判斷為true, 則兩種循環(huán)沒(méi)有區(qū)別。
7、break和continue的作用
break:?結(jié)束當(dāng)前循環(huán)并退出當(dāng)前循環(huán)體。
break還可以退出switch語(yǔ)句
continue:?循環(huán)體中后續(xù)的語(yǔ)句不執(zhí)行,但是循環(huán)沒(méi)有結(jié)束,繼續(xù)進(jìn)行循環(huán)條件的判斷(for循環(huán)還會(huì)i++)。continue只是結(jié)束本次循環(huán)。
8、類和對(duì)象的關(guān)系
類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。類是抽象的,不占用內(nèi)存,而對(duì)象是具體的,占用存儲(chǔ)空間。類是用于創(chuàng)建對(duì)象的藍(lán)圖,它是一個(gè)定義包括在特定類型的對(duì)象中的方法和變量的軟件模板。
類和對(duì)象好比圖紙和實(shí)物的關(guān)系,模具和鑄件的關(guān)系。
比如人類就是一個(gè)概念,人類具有身高,體重等屬性。人類可以做吃飯、說(shuō)話等方法。
小明就是一個(gè)具體的人,也就是實(shí)例,他的屬性是具體的身高200cm,體重180kg,他做的方法是具體的吃了一碗白米飯,說(shuō)了“12345”這樣一句話。
9、面向過(guò)程和面向?qū)ο蟮膮^(qū)別

比喻
面向過(guò)程是蛋炒飯,面向?qū)ο笫巧w澆飯。蓋澆飯的好處就是“飯”“菜”分離,從而提高了制作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用軟件工程的專業(yè)術(shù)語(yǔ)就是“可維護(hù)性”比較好,“飯” 和“菜”的耦合度比較低。
區(qū)別
編程思路不同:面向過(guò)程以實(shí)現(xiàn)功能的函數(shù)開(kāi)發(fā)為主,而面向?qū)ο笠紫瘸橄蟪鲱?、屬性及其方法,然后通過(guò)實(shí)例化類、執(zhí)行方法來(lái)完成功能。
封裝性:都具有封裝性,但是面向過(guò)程是封裝的是功能,而面向?qū)ο蠓庋b的是數(shù)據(jù)和功能。
面向?qū)ο缶哂欣^承性和多態(tài)性,而面向過(guò)程沒(méi)有繼承性和多態(tài)性,所以面向?qū)ο髢?yōu)勢(shì)是明顯。
10、方法重載和方法重寫(xiě)(覆蓋)的區(qū)別

以上這十道面試題UP認(rèn)為還是很重要的,UP一共整理了600多道面試題,包括java的各個(gè)方面。光基礎(chǔ)部分就有300多,占了一半。所以,基礎(chǔ)很重要啊同學(xué)們。把基礎(chǔ)部分再好好學(xué)一下吧。

最近有準(zhǔn)備面試的同學(xué),抓緊時(shí)間好好準(zhǔn)備一下了,有需要全部面試題的同學(xué),可以留言,UP會(huì)私發(fā)給各位同學(xué)的。