溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java秋招面試題有哪些

發(fā)布時(shí)間:2021-12-22 16:00:44 來(lái)源:億速云 閱讀:113 作者:iii 欄目:編程語(yǔ)言

這篇文章主要講解了“Java秋招面試題有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Java秋招面試題有哪些”吧!

1、hread類(lèi)的start()和run()方法的區(qū)別。

答案:start()方法會(huì)創(chuàng)建新的線(xiàn)程并啟動(dòng)該線(xiàn)程,所以該方法會(huì)調(diào)用其他native方法,而run()方法就是:正常的Java方法調(diào)用,即在原來(lái)的線(xiàn)程中執(zhí)行java代碼。

2、Java中Runnable和Callable的區(qū)別。

答案:Runnable和Callable都代表要線(xiàn)程中執(zhí)行的任務(wù)。Runnable是JDK1.0加入的,而Callable確實(shí)是在JDK1.5加入的。區(qū)別:Callable的 call() 方法可以返回值和拋出異常,而Runnable的run()方法不能返回值也不能拋出異常。Callable是需要使用java.util.concurrent.ExecutorService.submit(Callable<T>)方法提交的,這樣就可以獲得Future對(duì)象,該對(duì)象可以裝載了Callable接口的call()方法的返回結(jié)果。

3、簡(jiǎn)述Java內(nèi)存模型。

答案:Java內(nèi)存模型包含了一系列的規(guī)則和指導(dǎo)原則。Java語(yǔ)言是跨平臺(tái)的,Java的內(nèi)存模型確保了Java在不同的操作系統(tǒng)、CPU、內(nèi)存架構(gòu)上有確定的行為,特別是在多線(xiàn)程的情況下,一個(gè)線(xiàn)程所做的變動(dòng)對(duì)其他線(xiàn)程是否可見(jiàn)是很重要的,這叫做先行發(fā)生關(guān)系。

4、態(tài)的好處

答案:允許不同類(lèi)對(duì)象對(duì)同一消息做出響應(yīng),即同一消息可以根據(jù)發(fā)送對(duì)象的不同而采用多種不同的行為方式(發(fā)送消息就是函數(shù)調(diào)用).主要有以下優(yōu)點(diǎn):

可替換性:多態(tài)對(duì)已存在代碼具有可替換性;

可擴(kuò)充性:增加新的子類(lèi)不影響已經(jīng)存在的類(lèi)結(jié)構(gòu);

接口性:多態(tài)是超類(lèi)通過(guò)方法簽名,向子類(lèi)提供一個(gè)公共接口,由子類(lèi)來(lái)完善或者重寫(xiě)它來(lái)實(shí)現(xiàn)的。

5、否創(chuàng)建一個(gè)包含可變對(duì)象的不可變對(duì)象?

答案:當(dāng)然可以創(chuàng)建一個(gè)包含可變對(duì)象的不可變對(duì)象的,你只需要謹(jǐn)慎一點(diǎn),不要共享可變對(duì)象的引用就可以了,如果需要變化時(shí),就返回原對(duì)象的一個(gè)拷貝。最常見(jiàn)的例子就是對(duì)象中包含一個(gè)日期對(duì)象的引用.

6、bject中有哪些公共方法?

答案:

equals()

clone()

getClass()

notify(),notifyAll(),wait()

toString

7、Java當(dāng)中的四中引用:

答案:強(qiáng)引用,軟引用,弱引用,虛引用.不同的引用類(lèi)型主要體現(xiàn)在GC上。

(1)強(qiáng)引用:如果一個(gè)對(duì)象具有強(qiáng)引用,它就不會(huì)被垃圾回收器回收。即使當(dāng)前內(nèi)存空間不足,JVM也不會(huì)回收它,而是拋出 OutOfMemoryError 錯(cuò)誤,使程序異常終止。如果想中斷強(qiáng)引用和某個(gè)對(duì)象之間的關(guān)聯(lián),可以顯式地將引用賦值為null,這樣一來(lái)的話(huà),JVM在合適的時(shí)間就會(huì)回收該對(duì)象。

(2)軟引用:在使用軟引用時(shí),如果內(nèi)存的空間足夠,軟引用就能繼續(xù)被使用,而不會(huì)被垃圾回收器回收,只有在內(nèi)存不足時(shí),軟引用才會(huì)被垃圾回收器回收。

(3)弱引用:具有弱引用的對(duì)象擁有的生命周期更短暫。因?yàn)楫?dāng) JVM 進(jìn)行垃圾回收,一旦發(fā)現(xiàn)弱引用對(duì)象,無(wú)論當(dāng)前內(nèi)存空間是否充足,都會(huì)將弱引用回收。不過(guò)由于垃圾回收器是一個(gè)優(yōu)先級(jí)較低的線(xiàn)程,所以并不一定能迅速發(fā)現(xiàn)弱引用對(duì)象。

(4)虛引用:顧名思義,就是形同虛設(shè),如果一個(gè)對(duì)象僅持有虛引用,那么它相當(dāng)于沒(méi)有引用,在任何時(shí)候都可能被垃圾回收器回收。

8、什么是編譯器常量?使用它有什么風(fēng)險(xiǎn)?

答案:公共靜態(tài)不可變(public static final )變量也就是我們所說(shuō)的編譯期常量,這里的 public 可選的。實(shí)際上這些變量在編譯時(shí)會(huì)被替換掉,因?yàn)榫幾g器知道這些變量的值,并且知道這些變量在運(yùn)行時(shí)不能改變。這種方式存在的一個(gè)問(wèn)題是你使用了一個(gè)內(nèi)部的或第三方庫(kù)中的公有編譯時(shí)常量,但是這個(gè)值后面被其他人改變了,但是你的客戶(hù)端仍然在使用老的值,甚至你已經(jīng)部署了一個(gè)新的jar。為了避免這種情況,當(dāng)你在更新依賴(lài) JAR 文件時(shí),確保重新編譯你的程序。

9、如何判斷一個(gè)對(duì)象是否應(yīng)該被回收?

答案:這就是所謂的對(duì)象存活性判斷,常用的方法有兩種:引用計(jì)數(shù)法和對(duì)象可達(dá)性分析。由于引用計(jì)數(shù)法存在互相引用導(dǎo)致無(wú)法進(jìn)行GC的問(wèn)題,所以目前JVM虛擬機(jī)多使用對(duì)象可達(dá)性分析算法。

10、volatile類(lèi)型變量提供什么保證?

答案:volatile 主要有兩方面的作用:避免指令重排和可見(jiàn)性保證。例如,JVM 或者 JIT為了獲得更好的性能會(huì)對(duì)語(yǔ)句重排序,但是 volatile 類(lèi)型變量即使在沒(méi)有同步塊的情況下賦值也不會(huì)與其他語(yǔ)句重排序。 volatile 提供 happens-before 的保證,確保一個(gè)線(xiàn)程的修改能對(duì)其他線(xiàn)程是可見(jiàn)的。某些情況下,volatile 還能提供原子性,如讀 64 位數(shù)據(jù)類(lèi)型,像 long 和 double 都不是原子的(低32位和高32位),但 volatile 類(lèi)型的 double 和 long 就是原子的。

感謝各位的閱讀,以上就是“Java秋招面試題有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Java秋招面試題有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI