久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當(dāng)前位置:首頁>職場>java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)

發(fā)布時(shí)間:2024-01-24閱讀(18)

導(dǎo)讀“金三銀四”的跳槽季又來臨了,程序員如何才能在這個(gè)跳槽季把握時(shí)機(jī),搞定面試官獲得一個(gè)身心愉悅的工作呢?一份面試寶典定是必不可少的,所以筆者在這里整理了Jav....

“金三銀四”的跳槽季又來臨了,程序員如何才能在這個(gè)跳槽季把握時(shí)機(jī),搞定面試官獲得一個(gè)身心愉悅的工作呢?一份面試寶典定是必不可少的,所以筆者在這里整理了Java的100道面試題,希望能夠?qū)?zhǔn)備跳槽的Java程序員有所幫助。

Q1 Java內(nèi)部類和子類之間有什么區(qū)別?

Ans:內(nèi)部類是指在一個(gè)外部類的內(nèi)部再定義一個(gè)類,內(nèi)部類對外部類有訪問權(quán)限,可以訪問類中定義的所有變量和方法。

子類是從父類(superclass)中繼承的類,子類可以訪問父類所有public和protected的字段和方法。

Q2 Java語言中有哪些常見的訪問說明符,有什么意義?

Ans:Java中的訪問說明符是放在類名之前,用于定義訪問范圍的關(guān)鍵字,常見的訪問說明符有以下幾類:

Public:公共,能被項(xiàng)目中的任何一個(gè)Class、Method、Field訪問。

Protected:受保護(hù),能被同類或子類訪問,不能從外部訪問。

Default:默認(rèn),只能被同一個(gè)包的Class、Method、Field訪問。

Private:私有,只能被本類訪問。

Q3 靜態(tài)方法和靜態(tài)變量的目的是什么?

答:靜態(tài)變量被類的所有實(shí)例共用,靜態(tài)類只能訪問類的靜態(tài)變量,或調(diào)用類的靜態(tài)方法。

Q4 什么是數(shù)據(jù)封裝及其意義?

Ans:封裝是面向?qū)ο缶幊讨杏糜谠趩蝹€(gè)單元中組合屬性和方法。

封裝可以幫助程序員遵循模塊化方法進(jìn)行軟件開發(fā),每個(gè)對象都有自己的一組方法和變量,并且可以獨(dú)立于其他對象來執(zhí)行其功能。另外,封裝也有數(shù)據(jù)隱藏的目的。

Q5 什么是 singleton class(單例類)?并給出其用法的實(shí)際例子。

單例類只能有一個(gè)實(shí)例,必須自己創(chuàng)建自己的唯一實(shí)例,必須給所有其他對象提供這一實(shí)例。

單例使用場景的最佳實(shí)踐是由于某些驅(qū)動程序限制或由于許可問題的限制只能連接數(shù)據(jù)庫。

Q6什么是循環(huán)?Java中有哪些循環(huán)?

Ans:循環(huán)用于編程中重復(fù)執(zhí)行語句,Java中的循環(huán)有三類:

1)for循環(huán)

for循環(huán)用于執(zhí)行指定重復(fù)次數(shù)的語句,當(dāng)程序員明確知道循環(huán)次數(shù)可以使用for循環(huán)。

2)while循環(huán)

當(dāng)語句滿足條件時(shí)開始進(jìn)行重復(fù)執(zhí)行,直到語句不再滿足條件退出循環(huán)。While循環(huán)中在執(zhí)行語句之前先檢查是否滿足條件。

3)do while循環(huán)

Do while 和while循環(huán)基本類似,唯一不同的是do while是先執(zhí)行語句再檢查條件,也就是說do while循環(huán)至少會執(zhí)行一次語句。

Q7:什么是無限循環(huán)? 如何聲明無限循環(huán)?

Ans:無限循環(huán)是指無條件執(zhí)行,無限運(yùn)行。無限循環(huán)可以由定義中斷語句塊來結(jié)束。

無限循環(huán)聲明如下:

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(1)

Q8 continue和break語句有什么區(qū)別?

Ans:break和continue都是循環(huán)中的重要關(guān)鍵詞,break語句是結(jié)束整個(gè)循環(huán)過程,continue語句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。

Break:

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(2)

Continue:

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(3)

Q9 Java中的double和float變量有什么區(qū)別?

Ans:float是單精度浮點(diǎn)數(shù),內(nèi)存中占用4字節(jié),double是雙精度浮點(diǎn)數(shù),內(nèi)存中占用8字節(jié)。

Q10 Java中的Final關(guān)鍵字是什么意思?請舉例說明

Ans:final是Java中的關(guān)鍵字,有“無法改變”、“終態(tài)”的含義,final類不能被繼承,沒有子類,final類中的方法默認(rèn)是final的,且不能被子類的方法覆蓋,但可以被繼承。final成員變量表示常量,只能被賦值一次,賦值后值不再改變。final不能用于修飾構(gòu)造方法。

下面的例子中,const_val被聲明且賦值為常量100:

Private Final int const_val=100

而當(dāng)一個(gè)方法被聲明為final之后,它不能被子類覆蓋,而且會比其他方法都快。

Q11 舉例說明什么是三元運(yùn)算符?

Ans:三元運(yùn)算符,也稱為條件運(yùn)算符,根據(jù)布爾值來決定將哪個(gè)值分配給變量,它被表示為...?...:...

在下面的示例中,如果rank為1,status=Done,否則status=Pending

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(4)

Q12:如何在Java中生成隨機(jī)數(shù)?

Ans:使用Math.random()可以生成0.1到1.0范圍內(nèi)的隨機(jī)數(shù)字,然后通過數(shù)學(xué)方法實(shí)現(xiàn)生成符合要求的隨機(jī)數(shù)。

Q13 舉例說明什么是default switch case?

Ans:在switch語句中,如果沒有case條件匹配,那么它會就會執(zhí)行default后面的語句。

在下面的例子中,當(dāng)score既不是1也不是2時(shí),就會執(zhí)行default之后的語句。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(5)

Q14 Java中所有派生類的基類是什么?

Ans:java.lang.object

Q15 Java中的main()方法可以返回任何數(shù)據(jù)嗎?

Ans:java中的main()方法不能返回任何數(shù)據(jù),它的返回類型始終是void。

Q16 什么是Java Packages?其意義是什么?

Ans:為了更好地組織類,Java 提供了包機(jī)制,用于區(qū)別類名的命名空間。

包的作用

  1. 把功能相似或相關(guān)的類或接口組織在同一個(gè)包中,方便類的查找和使用。

  2. 如同文件夾一樣,包也采用了樹形目錄的存儲方式。同一個(gè)包中的類名字是不同的,不同的包中的類的名字是可以相同的,當(dāng)同時(shí)調(diào)用兩個(gè)不同包中相同類名的類時(shí),應(yīng)該加上包名加以區(qū)別。因此,包可以避免名字沖突。

  3. 包也限定了訪問權(quán)限,擁有包訪問權(quán)限的類才能訪問某個(gè)包中的類。

Q17 我們可以聲明一個(gè)抽象類,但是沒有任何抽象方法嗎?

Ans:是的,我們可以聲明一個(gè)抽象類,且不包含任何抽象方法,但是一旦一個(gè)類中含有一個(gè)抽象方法,那么該類必須聲明為抽象。

Q18 Java中的抽象類和接口有什么區(qū)別?

Ans:抽象類和接口之間的主要區(qū)別在于,抽象類可以擁有任意范圍的成員數(shù)據(jù),同時(shí)也可以擁有自己的非抽象方法,但是接口方式中,它僅能夠有靜態(tài)、不能修改的成員數(shù)據(jù),同時(shí)它所有的方法都必須是抽象的。

抽象類是對類抽象,而接口是對行為的抽象。抽象類是對整個(gè)類整體進(jìn)行抽象,包括屬性、行為,但是接口卻是對類局部(行為)進(jìn)行抽象。

一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但它只能擴(kuò)展一個(gè)抽象類。

Q19 接口對抽象類的性能影響是什么?

Ans:與抽象類相比,接口性能較慢。一個(gè)類只能擴(kuò)展一個(gè)抽象類,卻能實(shí)現(xiàn)許多接口,隨著接口在類中的實(shí)現(xiàn),也會給開發(fā)人員帶來額外負(fù)擔(dān)。

Q20 Java中導(dǎo)入包時(shí),其子包是否會被導(dǎo)入?

Ans:在Java中導(dǎo)入包時(shí),其子包不會被導(dǎo)入,如果有需要,開發(fā)者必須單獨(dú)導(dǎo)入。

開發(fā)者需要單獨(dú)導(dǎo)入它們。

Q21 類中的main方法可以聲明為private?

Ans:Java中main方法必須是public,如果是private,那么它雖然在編譯時(shí)不會出錯(cuò),但是在運(yùn)行時(shí)會出錯(cuò)。

Q22 我們能不能通過引用向函數(shù)傳遞參數(shù)?

Ans:不能,我們只能通過引用將值傳遞給函數(shù)。

Q23 對象在java中如何序列化?

Ans:序列化是指把Java對象轉(zhuǎn)換為字節(jié)序列的過程,只能將支持 java.io.Serializable 接口的對象寫入流中,每個(gè) serializable 對象的類都被編碼。

Q24 Java中的try...catch是用于異常處理嗎?

Ans:try后面往往會跟著catch或finally,try拋出的任何異常都會被捕獲在catch中,在代碼終止前的要執(zhí)行的任務(wù)放在finally中。

Q25 有沒有什么辦法在出現(xiàn)異常時(shí)跳過finally?

Ans:當(dāng)在try中出現(xiàn)異常時(shí),如果存在catch,會先被catch捕獲,否則會執(zhí)行到finally。異常發(fā)生時(shí)肯定會執(zhí)行finally,除非在try的末尾有強(qiáng)制中止代碼:System.exit(0);

Q26 什么時(shí)候類的構(gòu)造函數(shù)會被調(diào)用?

Ans:每次用new來創(chuàng)建對象時(shí),都會調(diào)用構(gòu)造函數(shù)。

例如,下例中new創(chuàng)建了兩個(gè)對象,構(gòu)造函數(shù)也被調(diào)用了兩次。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(6)

Q27 一個(gè)類可以有多個(gè)構(gòu)造函數(shù)嗎?

Ans:是的,一個(gè)類可以有多個(gè)具有不同參數(shù)的構(gòu)造函數(shù),創(chuàng)建對象的構(gòu)造函數(shù)取決于創(chuàng)建對象時(shí)傳遞的參數(shù)。

Q28 我們可以覆蓋類的靜態(tài)方法嗎?

Ans:我們不能覆蓋靜態(tài)方法,靜態(tài)方法屬于一個(gè)類而不是單個(gè)對象,并且在編譯時(shí)解析(而不是在運(yùn)行時(shí))。

Q29 在下面的例子中,輸出是什么?

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(7)

Ans: 輸出為:

Displaying from subclass

Displaying from superclass

Q30 String是Java的數(shù)據(jù)類型嗎?

Ans:String不是Java的原始數(shù)據(jù)類型,Java中創(chuàng)建一個(gè)string時(shí),實(shí)際上是創(chuàng)建了Java.Lang.String類的對象,這個(gè)對象可以使用String類的所有內(nèi)置方法。

Q31下面的示例中,共創(chuàng)建了多少個(gè)String對象?

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(8)

Ans:共創(chuàng)建了兩個(gè)java.Lang.String類的對象。 s1和s3是對同一個(gè)對象的引用。

Q32 為什么Java中的String被稱為Immutable?

Ans:Java中,string對象是不可變的,一旦賦值不可更改,如果更改,則會創(chuàng)建一個(gè)新對象。

在下面的示例中,str是值為“Value One”的字符串對象。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(9)

當(dāng)分配一個(gè)新值時(shí),將創(chuàng)建一個(gè)新的String對象,并將引用移動到新對象。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(10)

Q33 數(shù)組和向量之間有什么區(qū)別?

Ans:數(shù)組是對相同原始類型的數(shù)據(jù)進(jìn)行組合,本質(zhì)上是靜態(tài)的,而矢量本質(zhì)上是動態(tài)的,并且可以容納不同數(shù)據(jù)類型的數(shù)據(jù)。

Q34 什么是多線程?

Ans:多線程是一個(gè)編程概念,可以在單個(gè)程序中以并發(fā)方式執(zhí)行多個(gè)任務(wù)。同一個(gè)進(jìn)程的多個(gè)線程堆棧共享,有助于程序的性能改進(jìn)。

Q35 為什么在ava中使用Runnable Interface?

Ans:Runnable接口在Java中用于實(shí)現(xiàn)多線程應(yīng)用程序,Java.Lang.Runnable接口由一個(gè)支持多線程的類來實(shí)現(xiàn)。

Q36 Java中實(shí)現(xiàn)多線程的兩種方法是什么?

Ans:1.通過使用Java.Lang.Runnable Interface,通過Run()方法來啟用多線程。

2.編寫一個(gè)擴(kuò)展Java.Lang.Thread類的類。

Q37 當(dāng)數(shù)據(jù)需要進(jìn)行大量更改時(shí), String和StringBuffer誰是更好的選擇?

Ans:StringBuffers本質(zhì)上是動態(tài)的,我們可以改變StringBuffer對象的值,而String是不可變的,每次數(shù)據(jù)更改都會創(chuàng)建一個(gè)新的String對象,增加額外開銷,所以在數(shù)據(jù)更改很多的情況下,StringBuffer是一個(gè)更好的選擇。

Q38每個(gè)switch語句后使用break的目的是什么?

Ans:switch使用break可以在執(zhí)行完這個(gè)語句后中斷,如果不使用break,那么它將把所有情況都執(zhí)行一遍。

Q39 如何在Java中完成垃圾回收?

Ans:Java中,對象不被引用時(shí),垃圾回收就會發(fā)生,對象會被自動銷毀,調(diào)用System.gc()方法或Runtime.gc()方法。

Q40 可以在Main()方法前執(zhí)行代碼?

Ans:如果我們要在類加載時(shí),對象創(chuàng)建之前執(zhí)行語句,可以在類中使用靜態(tài)代碼塊,這樣即使在main方法中創(chuàng)建對象之前,此靜態(tài)代碼塊中的語句都將在加載類時(shí)執(zhí)行一次。

Q41 一個(gè)類可以同時(shí)既是父類也是子類嗎?請舉例說明?

Ans:如果使用了繼承層次結(jié)構(gòu),那么這個(gè)類就可能既是一個(gè)類的父類也是另一個(gè)類的子類,如下例中的大陸類既是世界類的子類,同時(shí)也是國家類的父類。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(11)

Q42 如果類中沒有定義構(gòu)造函數(shù),那么類的對象將會怎么創(chuàng)建?

Ans:即使類沒有定義顯式構(gòu)造函數(shù),對象在創(chuàng)建時(shí)也會執(zhí)行隱式構(gòu)造函數(shù),且該構(gòu)造函數(shù)沒有參數(shù)。

Q43 在多線程中,如何確保資源不會同時(shí)被多個(gè)線程使用?

Ans:在多線程中,可以通過使用同步的概念來控制對多個(gè)線程之間共享的資源的訪問。 使用synchronized關(guān)鍵字,我們可以確保只有一個(gè)線程可以一段時(shí)間內(nèi)使用共享資源。

Q44 我們是否可以為對象多次調(diào)用類的構(gòu)造函數(shù)?

Ans:使用new創(chuàng)建對象時(shí),會自動調(diào)用構(gòu)造函數(shù),對象創(chuàng)建之后,則無法再調(diào)用該構(gòu)造函數(shù)。

Q45 兩個(gè)類classA和classB都在同一個(gè)包中,那么classA的私有成員可以被classB的對象訪問嗎?

Ans:類的私有成員在該類的范圍之外是不可訪問的,即使在同一個(gè)包中也不能訪問任何其他類。

Q46 同一類中可以定義重名的方法嗎?

Ans:可以定義重名的方法,但是其參數(shù)的數(shù)量和類型是不同的,調(diào)用哪個(gè)方法取決于傳遞的參數(shù)。

例如在下面的類中,我們有兩個(gè)具有相同名稱但不同參數(shù)的打印方法。 根據(jù)參數(shù),將調(diào)用適當(dāng)?shù)膮?shù):

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(12)

Q47 如何制作一個(gè)Java對象的副本?

Ans:使用克隆,我們可以創(chuàng)建具有對象的實(shí)際狀態(tài)的副本。Clone()是Cloneable interface的方法,因此需要實(shí)現(xiàn)Cloneable interface來進(jìn)行對象拷貝。

Q48 使用繼承有什么好處?

Ans:使用繼承的主要優(yōu)點(diǎn)是代碼的可重用性,因?yàn)槔^承使子類能夠重用其父類的代碼。 多態(tài)性(可擴(kuò)展性)是另一個(gè)好處,允許引入新的功能而不影響現(xiàn)有的派生類。

Q49 類的變量和方法的默認(rèn)訪問說明符是什么?

Ans:變量和方法的默認(rèn)訪問說明符是protected,即變量和類可用于同一個(gè)包中的任何其他類。

Q50 舉一個(gè)在Java類中使用指針的例子。

Ans:Java中沒有指針。

Q51 如何限制一個(gè)類不被繼承?

Ans:使用關(guān)鍵字Final。

在下面的例子中,Stone類就不能被繼承了。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(13)

Q52 訪問說明符的訪問范圍是什么?

Ans:

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(14)

Q53 棧和隊(duì)列之間有什么區(qū)別?

Ans:棧和隊(duì)列之間的主要區(qū)別在于,棧基于“后進(jìn)先出(LIFO)”原則,而隊(duì)列基于FIFO(先進(jìn)先出)原則。

Q54 在Java中,我們?nèi)绾谓剐蛄谢兞浚?/strong>

Ans:想要某些變量不被序列化,那么可以在聲明時(shí)使用關(guān)鍵字transient。例如,下面的變量trans_var是一個(gè)臨時(shí)變量,不能被序列化:

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(15)

Q55 我們?nèi)绾问褂迷紨?shù)據(jù)類型作為對象?

Ans:Java提倡“一切皆為對象”,引用數(shù)據(jù)類型可以實(shí)例化為對象,基本數(shù)據(jù)類型卻無法變?yōu)閷ο螅槍@一不足,JAVA中設(shè)置了包裝類,例如,Integer是原始數(shù)據(jù)類型int的包裝類。

Q56 編譯時(shí)會遇到哪些類型的異常?

Ans:程序編譯時(shí)可以捕獲被檢查的異常,為了成功編譯代碼,異常會通過try...catch來處理。

Q57 請描述一下線程的不同狀態(tài)。

Ans:Java中的線程往往是處于下面的某一種狀態(tài)

  • NEW:通過New關(guān)鍵字創(chuàng)建了Thread類(或其子類)的對象

  • RUNNABLE:這種情況指的是Thread類的對象調(diào)用了start()方法,線程處于就緒狀態(tài)。

  • RUNNING:線程獲得了CPU,處于運(yùn)行狀態(tài)。

  • DEAD:處于RUNNING狀態(tài)的線程,在執(zhí)行完run方法之后,就變成了DEAD狀態(tài)了。

  • BLOCKED:這種狀態(tài)指的是處于RUNNING狀態(tài)的線程,出于某種原因,比如調(diào)用了sleep方法、等待用戶輸入等而讓出當(dāng)前的CPU給其他的線程。

Q58 定義了類的顯式構(gòu)造函數(shù)之后,還可以使用默認(rèn)構(gòu)造函數(shù)嗎?

Ans:如果沒有定義顯式構(gòu)造函數(shù),那么Java將提供一個(gè)默認(rèn)的無參數(shù)構(gòu)造函數(shù),但是如果定義了顯式構(gòu)造函數(shù)之后,就不能再調(diào)用默認(rèn)構(gòu)造函數(shù)。

Q59 可以有兩個(gè)方法,它們方法名和參數(shù)都相同,但返回值類型不同?

Ans:相同的方法指的是方法名、參數(shù)以及返回類型都相同,因此返回類型不同的兩個(gè)方法是可以并存的。

Q60 以下代碼的輸出是什么?

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(16)

Ans:輸出為4

Q61 在沒有執(zhí)行main()的情況下,成功編譯了一個(gè)Java類,這一說法正確嗎?

Ans:正確,雖然Java編譯器規(guī)定程序的入口點(diǎn)為staticmain,但是沒有main()還是能夠編譯,只是不能運(yùn)行。

Q62 我們可以在靜態(tài)方法中調(diào)用非靜態(tài)方法?

Ans:非靜態(tài)方法歸類的對象所有,且具有對象的級別范圍,所以如果想要在靜態(tài)方法中調(diào)用非靜態(tài)方法,首先要?jiǎng)?chuàng)建類的對象,然后使用對象引用,調(diào)用這些方法。

Q63 為了運(yùn)行Java程序,必須設(shè)置兩個(gè)環(huán)境變量是什么?

Ans:PATH變量和CLASSPATH變量。

Q64 Java中變量沒有初始化可以使用嗎?

Ans:Java不會給變量分配默認(rèn)值,因此變量沒有初始化的情況下,程序會編譯失敗并給出錯(cuò)誤提示。

Q65 Java中的類可以繼承多個(gè)類嗎?

Ans:Java不支持多重繼承。

Q66 Java中,構(gòu)造函數(shù)可以與類名不同嗎?

Ans:不可以,Java的構(gòu)造函數(shù)必須與類名相同,如果不同,它將被視作普通函數(shù)。

Q67 Round(3.7)和Ceil(3.7)的輸出分別是什么?

Ans:它們的輸出都是4。Round()遵循四舍五入,Ceil()遵循向上舍入。

Q68 Java中可以使用goto來轉(zhuǎn)到特定行嗎?

Ans:不可以,Java中沒有g(shù)oto關(guān)鍵字。

Q69 已經(jīng)死亡的線程可以再次啟動嗎?

Ans:不可以。

Q70 以下類的聲明是否正確?

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(17)

Ans:不正確,抽象類不能被聲明為Final。

Q71 每個(gè)機(jī)器都需要JDK來運(yùn)行Java程序?

Ans:JDK是Java的開發(fā)工具包,不是必需的,JRE才是必需的。

Q72 Equals()和==有什么區(qū)別?

Ans:Java中,==操作比較的是兩個(gè)變量的值是否相等,對于引用型變量表示的是兩個(gè)變量在堆中存儲的地址是否相同,即棧中的內(nèi)容是否相同。equals操作表示的兩個(gè)變量是否是對同一個(gè)對象的引用,即堆中的內(nèi)容是否相同

下例中,equals()返回true,而==操作符則返回false:

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(18)

Q73 Java類中定義方法,可否使用其他語言代碼實(shí)現(xiàn),如C語言?

Ans:可以,在基于原生開發(fā)的情況下,我們可以在Java類中定義公共靜態(tài)方法,但是不執(zhí)行,然后用另外一種語言(如C)實(shí)現(xiàn)。

Q74 如何在Java中定義析構(gòu)函數(shù)?

Ans:Java類中沒必要定義析構(gòu)函數(shù),它有自己的垃圾回收機(jī)制,當(dāng)不再引用對象時(shí),會自動執(zhí)行。

Q75 Java中變量可以既是局部變量又是靜態(tài)變量嗎?

Ans:不能,將局部變量定義為靜態(tài)變量會導(dǎo)致編譯錯(cuò)誤。

Q76 Interface中可以有靜態(tài)方法嗎?

Ans:Interface中的靜態(tài)方法是沒有意義的,靜態(tài)方法在類中不能被覆蓋,而Interface中的方法默認(rèn)都是抽象的,所以只能在實(shí)現(xiàn)Interface的類中實(shí)現(xiàn)。

Q77 在實(shí)現(xiàn)接口的類中,我們可以更改接口中定義的變量的值嗎?

Ans:不能,接口中定義的變量大多都默認(rèn)是public、static和final等不可更改的常量。

Q78 Java中的垃圾回收機(jī)制能夠確保程序永遠(yuǎn)不會超出內(nèi)存?

Ans:即使Java提供自動垃圾回收,也不能確保程序不會超出內(nèi)存,因?yàn)榕c垃圾回收相比,Java對象的創(chuàng)建速度更快。

Q79 main()能否有除void之外的返回類型?

Ans:不可以,main()必須返回值為void,程序才能成功執(zhí)行。

Q80 垃圾回收之后,還能否重新觸發(fā)并使用該對象?

Ans:不能,一旦對象被回收之后,就不再存在于堆棧上,也就不能再次訪問和引用了。

Q81 在Java線程編程中,哪個(gè)方法是所有線程必須實(shí)現(xiàn)的?

Ans:Run()是一個(gè)Runnable接口的方法,必須由所有線程實(shí)現(xiàn)。

Q82 如何在程序中控制數(shù)據(jù)庫連接,且每次只有一個(gè)線程可以進(jìn)行數(shù)據(jù)庫連接?

Ans:應(yīng)用同步的概念來實(shí)現(xiàn),將數(shù)據(jù)庫相關(guān)代碼hs synchronized關(guān)鍵字的方法中,以便一次只有一個(gè)線程可以訪問它。

Q83 程序員手動拋出異常怎么辦?

Ans:為了處理手動拋出的異常,我們可以使用throw關(guān)鍵字,并在catch中捕獲和處理異常。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(19)

Q84 如何實(shí)現(xiàn)一個(gè)類不允許其他類(甚至派生類)創(chuàng)建其對象?

Ans:將該類的構(gòu)造函數(shù)聲明為private,那么它就不會被其他類訪問。

Q85 對象如何存儲在Java中?

Ans:每個(gè)對象在創(chuàng)建時(shí)都會從堆棧中獲取內(nèi)存空間,被垃圾回收器銷毀之后,其空間將被釋放重新分配給其它對象。

Q86 如何確定堆棧上對象的實(shí)際大小?

Ans:Java中,沒辦法確定對象的確切大小。

Q87 以下哪個(gè)類將分配更多的內(nèi)存?

A類:三種方法,四個(gè)變量,無對象

B類:五個(gè)方法,三個(gè)變量,無對象

Ans:在創(chuàng)建對象之前,不會分配內(nèi)存,所以這兩個(gè)類都沒有分配內(nèi)存。

Q88 如果程序中沒有處理異常,會發(fā)生什么?

Ans:如果沒有異常處理,那么程序?qū)⒅兄梗也粫?zhí)行異常拋出之后的語句。

Q89 如果定義了一個(gè)類定義了多個(gè)構(gòu)造函數(shù),那么是否可以在一個(gè)構(gòu)造函數(shù)中調(diào)用另一個(gè)構(gòu)造函數(shù)?

Ans:如果一個(gè)類有多個(gè)構(gòu)造函數(shù),那么可以使用this()在一個(gè)構(gòu)造函數(shù)中調(diào)用另一個(gè)構(gòu)造函數(shù)。

Q90 什么是匿名類?

Ans:匿名類是不能有名字的類,它們不能被引用,只能在創(chuàng)建時(shí)用New語句來聲明它們。

下例中,我們定義了一個(gè)匿名類:

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(20)

Q91 數(shù)組聲明之后是否還可以改變其大小?

Ans:數(shù)組是靜態(tài)的,一旦指定了大小,就不能改變。

Q92 應(yīng)用程序中有多個(gè)類,但只有一個(gè)main()可以嗎?

Ans:可以,main()方法是Java應(yīng)用程序的入口方法,代碼總是從特定類的main方法開始。

Q93 如果我想要保留對象的數(shù)據(jù)以供以后使用,最好的做法是什么?

Ans:使用序列化。

Q94 什么是局部類?

Ans:如果我們在Java的特定塊中定義一個(gè)新類,那么這個(gè)類就被稱為局部類,它在局部范圍內(nèi)可用,在其定義的塊之外不可用。

Q95 String和StringBuffer都表示String對象,這兩個(gè)對象之間可以互相比較嗎?

Ans:不可以。

Q96 Java提供了哪些API用于集合類的操作?

Ans:Java提供了Collection API,可應(yīng)用于一組對象的,Collection API支持的重要類包括

ArrayList,HashMap,TreeSet和TreeMap。

Q97 Java的類型轉(zhuǎn)換可以將所有其他類轉(zhuǎn)換為布爾類型嗎?

Ans:不可以,其它原始類型不能轉(zhuǎn)換為布爾類型,布爾類型也不能轉(zhuǎn)換為其它原始數(shù)據(jù)類型。

Q98 方法的重寫允許返回類型不同嗎?

Ans:方法的重寫要求子類的方法的名稱及參數(shù)必須和所覆蓋的方法相同,返回類型可以不同但必須是所覆蓋方法的子類。

java面試必須掌握的基礎(chǔ)(Java程序員面試寶典)(21)

Q99 所有異常類的基類是什么?

Ans:Java.Lang.throwable。

Q100 構(gòu)造函數(shù)在繼承中的調(diào)用順序是什么?

Ans:在繼承的情況下,創(chuàng)建派生類的新對象時(shí),首先調(diào)用父類的構(gòu)造函數(shù),然后調(diào)用派生類的構(gòu)造函數(shù)。

TAGS標(biāo)簽:  java  面試  必須  掌握  基礎(chǔ)  java面試必須掌握

歡迎分享轉(zhuǎn)載→http://www.avcorse.com/read-233603.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖