面經(jīng)整理第一天-java基礎(chǔ)

1.finally語(yǔ)句塊什么情況不會(huì)執(zhí)行

四種情況:

? ? (1)finally語(yǔ)句塊第一行出現(xiàn)異常

? ? (2)程序拋出異常(或者return)之前,調(diào)用system.exits(),退出程序

? ? (3)程序拋出異常(或者return)之前,線程死亡

? ? (4)程序拋出異常(或者return)之前,關(guān)閉CPU

2.java有了基本類型,為什么還要設(shè)計(jì)對(duì)應(yīng)的引用類型

? ? (1)可以使用為該引用類型而編寫的方法

? ? (2)Java集合(map、set、list)等所有集合只能存放引用類型數(shù)據(jù),不能存放基本類型數(shù)據(jù)(容器中實(shí)際存放的是對(duì)象的引用)。

? ? (3)引用類型對(duì)象存儲(chǔ)在堆上,可以控制其生命周期;而基本類型存儲(chǔ)在棧上,會(huì)隨著代碼塊運(yùn)行結(jié)束被回收。

? ? (4)java泛型使用類型擦除法實(shí)現(xiàn),基本類型無(wú)法實(shí)現(xiàn)泛型。

3.怎么理解多態(tài)(多態(tài)的好處

是什么:多態(tài)是引用變量指向的實(shí)例對(duì)象在程序運(yùn)行期才確定;

好處:1.提高的代碼的可維護(hù)性(即可以通過(guò)改寫父類屬性與方法來(lái)改寫子類共有屬性與方法)

? ? ? ? ? ?2.提高了代碼的可擴(kuò)展性(即子類方法可以被父類的引用變量調(diào)用)

怎么實(shí)現(xiàn):繼承父類、實(shí)現(xiàn)接口

4.什么是反射?

(1)反射是可以在運(yùn)行時(shí)得到某個(gè)類的完整信息;

(2)獲取類的信息首先要得到該類對(duì)應(yīng)的Class對(duì)象,拿到Class對(duì)象的方式如下;

(3)拿到class對(duì)象后,就可以調(diào)用class對(duì)象的成員方法,得到類的信息,如 getMethod、getField,getConstructor,newInstance

(4)反射的原理:

(5)反射的應(yīng)用:

5.自動(dòng)拆裝箱

什么時(shí)候發(fā)生、具體怎么實(shí)現(xiàn)

自動(dòng)拆箱:當(dāng)基礎(chǔ)類型與引用類型進(jìn)行 “==、+、-、×、÷” 運(yùn)算時(shí),會(huì)對(duì)引用類型進(jìn)行自動(dòng)拆箱;

????具體實(shí)現(xiàn),引用類型對(duì)象內(nèi)部包含對(duì)應(yīng)基本類型的成員變量,自動(dòng)拆箱時(shí)返回該成員變量即可;

自動(dòng)裝箱:使用基礎(chǔ)類型給引用類型變量賦值

? ? 具體實(shí)現(xiàn):調(diào)用引用類型對(duì)應(yīng)的靜態(tài)方法valueOf,本質(zhì)是在該方法內(nèi)部調(diào)用構(gòu)造函數(shù)創(chuàng)建對(duì)象。


6.java泛型相關(guān)問(wèn)題

(1)是什么:泛型就是將類型參數(shù)化,在編譯時(shí)才確定具體的參數(shù)。這種參數(shù)類型可以用在類、接口和方法的創(chuàng)建中,分別稱為泛型類、泛型接口、泛型方法。

(2)為什么(好處):為了創(chuàng)建容器類,可以實(shí)現(xiàn)類型安全且消除了很多的強(qiáng)制類型轉(zhuǎn)換;

(3)原理:??泛型只存在于編譯階段,不存在與運(yùn)行階段(編譯后的class文件不存在泛型的概念)

? ? 編譯時(shí),使用Object代替泛型參數(shù)T,如果使用T extends XXX 或者 T super XXX,則使用XXX代替泛型參數(shù)T

7.序列化反序列化相關(guān)問(wèn)題

(1)是什么:序列化是將對(duì)象轉(zhuǎn)換為字節(jié)序列,以便在網(wǎng)絡(luò)中傳輸或保存在本地;

? ? ? ? ? ? ? ? ? ? ? 反序列化是把字節(jié)序列轉(zhuǎn)換為對(duì)象。(通過(guò)讀取字節(jié)流中對(duì)象的屬性,創(chuàng)建出一個(gè)有著同樣屬性的? ? 對(duì)象)

(2)為什么:需要對(duì)內(nèi)存中的對(duì)象進(jìn)行持久化或者網(wǎng)絡(luò)傳輸。序列化反序列化還可以用于深拷貝(因?yàn)樾蛄谢梢詫⒄麄€(gè)對(duì)象層次寫入字節(jié)流中)

(3)怎么實(shí)現(xiàn):實(shí)現(xiàn)Serializable接口或者Externalizable接口。

(4)serialVersionUID:用來(lái)表明類不同版本之間的兼容性

理解:JVM會(huì)在序列化的時(shí)候,自動(dòng)創(chuàng)建一個(gè)serialVersionUID字段,一起序列化成字節(jié)流,如果在類中顯示指定了該字段并賦值,則序列化的值會(huì)用顯示指定的;在反序列化的時(shí)候,JVM也會(huì)創(chuàng)建一個(gè)serialVersionUID(根據(jù)反序列化這邊所在的程序,和字節(jié)流無(wú)關(guān)),如果反序列化這邊的類同樣指定了serialVersionUID字段,則JVM創(chuàng)建的serialVersionUID的值就是顯示指定的。在反序列化的時(shí)候,JVM會(huì)比較創(chuàng)建的serialVersionUID值和字節(jié)流中的serialVersionUID值是否一致,一致則可以反序列化,不一致會(huì)異常。

? ? 如果不顯示指定,則不能保證序列化和反序列化兩邊JVM創(chuàng)建的serialVersionUID值相等。

(5)對(duì)于不想序列化的字段,使用 transient 關(guān)鍵字修飾,該字段在被反序列化的時(shí)候,會(huì)被設(shè)置為零值。

(6)序列化和反序列化是針對(duì)對(duì)象的,靜態(tài)字段不會(huì)被序列化(也不需要被序列化)


8.java異常相關(guān)問(wèn)題

(1)是什么:?Throwable派生出Error、Exception。Exception又分為運(yùn)行時(shí)異常非運(yùn)行時(shí)異常。

error:程序無(wú)法處理的嚴(yán)重錯(cuò)誤 ,不能通過(guò)?catch?來(lái)進(jìn)行捕獲,通常會(huì)導(dǎo)致程序終止。例如系統(tǒng)崩潰、內(nèi)存不足;

exception:程序可以處理的異常,需要對(duì)其進(jìn)行處理 ;

其中非運(yùn)行時(shí)異常必須對(duì)其進(jìn)行處理,運(yùn)行時(shí)異常可以由程序員自己決定(因?yàn)檫\(yùn)行時(shí)異常中有很多是代碼本身寫錯(cuò)了,需要的不是處理異常,而是修改代碼,如空指針異常、數(shù)據(jù)訪問(wèn)越界異常)。

(2)java常見異常:

java.lang.InstantiationError:實(shí)例化錯(cuò)誤。當(dāng)一個(gè)應(yīng)用試圖通過(guò)new操作符構(gòu)造一個(gè)抽象類或者接口時(shí)拋出該異常.

java.lang.OutOfMemoryError:內(nèi)存不足錯(cuò)誤。當(dāng)可用內(nèi)存不足以讓Java虛擬機(jī)分配給一個(gè)對(duì)象時(shí)拋出該錯(cuò)誤。

java.lang.StackOverflowError:堆棧溢出錯(cuò)誤。當(dāng)一個(gè)應(yīng)用遞歸調(diào)用的層次太深而導(dǎo)致堆棧溢出或者陷入死循環(huán)時(shí)拋出該錯(cuò)誤。

java.lang.IndexOutOfBoundsException:索引越界異常。當(dāng)訪問(wèn)某個(gè)序列的索引值小于0或大于等于序列大小時(shí),拋出該異常。

java.lang.NullPointerException:空指針異常。

java.lang.ArithmeticException:算術(shù)條件異常。譬如:整數(shù)除零等。

9.java IO流相關(guān)問(wèn)題

(1)IO流分類:

按流向:輸入流、輸出流

按操作的數(shù)據(jù)單元:字節(jié)流、字符流

按流的角色:節(jié)點(diǎn)流、處理流

(2)字節(jié)流和字符流區(qū)別

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容