這篇文章主要講解了“Java秋招面試題有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java秋招面試題有哪些”吧!
創(chuàng)新互聯(lián)建站專業(yè)提供成都溫江機房服務,為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買成都溫江機房服務,并享受7*24小時金牌售后服務。
1、hread類的start()和run()方法的區(qū)別。
答案:start()方法會創(chuàng)建新的線程并啟動該線程,所以該方法會調用其他native方法,而run()方法就是:正常的Java方法調用,即在原來的線程中執(zhí)行java代碼。
2、Java中Runnable和Callable的區(qū)別。
答案:Runnable和Callable都代表要線程中執(zhí)行的任務。Runnable是JDK1.0加入的,而Callable確實是在JDK1.5加入的。區(qū)別:Callable的 call() 方法可以返回值和拋出異常,而Runnable的run()方法不能返回值也不能拋出異常。Callable是需要使用java.util.concurrent.ExecutorService.submit(Callable
3、簡述Java內存模型。
答案:Java內存模型包含了一系列的規(guī)則和指導原則。Java語言是跨平臺的,Java的內存模型確保了Java在不同的操作系統(tǒng)、CPU、內存架構上有確定的行為,特別是在多線程的情況下,一個線程所做的變動對其他線程是否可見是很重要的,這叫做先行發(fā)生關系。
4、態(tài)的好處
答案:允許不同類對象對同一消息做出響應,即同一消息可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式(發(fā)送消息就是函數(shù)調用).主要有以下優(yōu)點:
可替換性:多態(tài)對已存在代碼具有可替換性;
可擴充性:增加新的子類不影響已經(jīng)存在的類結構;
接口性:多態(tài)是超類通過方法簽名,向子類提供一個公共接口,由子類來完善或者重寫它來實現(xiàn)的。
5、否創(chuàng)建一個包含可變對象的不可變對象?
答案:當然可以創(chuàng)建一個包含可變對象的不可變對象的,你只需要謹慎一點,不要共享可變對象的引用就可以了,如果需要變化時,就返回原對象的一個拷貝。最常見的例子就是對象中包含一個日期對象的引用.
6、bject中有哪些公共方法?
答案:
equals()
clone()
getClass()
notify(),notifyAll(),wait()
toString
7、Java當中的四中引用:
答案:強引用,軟引用,弱引用,虛引用.不同的引用類型主要體現(xiàn)在GC上。
(1)強引用:如果一個對象具有強引用,它就不會被垃圾回收器回收。即使當前內存空間不足,JVM也不會回收它,而是拋出 OutOfMemoryError 錯誤,使程序異常終止。如果想中斷強引用和某個對象之間的關聯(lián),可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時間就會回收該對象。
(2)軟引用:在使用軟引用時,如果內存的空間足夠,軟引用就能繼續(xù)被使用,而不會被垃圾回收器回收,只有在內存不足時,軟引用才會被垃圾回收器回收。
(3)弱引用:具有弱引用的對象擁有的生命周期更短暫。因為當 JVM 進行垃圾回收,一旦發(fā)現(xiàn)弱引用對象,無論當前內存空間是否充足,都會將弱引用回收。不過由于垃圾回收器是一個優(yōu)先級較低的線程,所以并不一定能迅速發(fā)現(xiàn)弱引用對象。
(4)虛引用:顧名思義,就是形同虛設,如果一個對象僅持有虛引用,那么它相當于沒有引用,在任何時候都可能被垃圾回收器回收。
8、什么是編譯器常量?使用它有什么風險?
答案:公共靜態(tài)不可變(public static final )變量也就是我們所說的編譯期常量,這里的 public 可選的。實際上這些變量在編譯時會被替換掉,因為編譯器知道這些變量的值,并且知道這些變量在運行時不能改變。這種方式存在的一個問題是你使用了一個內部的或第三方庫中的公有編譯時常量,但是這個值后面被其他人改變了,但是你的客戶端仍然在使用老的值,甚至你已經(jīng)部署了一個新的jar。為了避免這種情況,當你在更新依賴 JAR 文件時,確保重新編譯你的程序。
9、如何判斷一個對象是否應該被回收?
答案:這就是所謂的對象存活性判斷,常用的方法有兩種:引用計數(shù)法和對象可達性分析。由于引用計數(shù)法存在互相引用導致無法進行GC的問題,所以目前JVM虛擬機多使用對象可達性分析算法。
10、volatile類型變量提供什么保證?
答案:volatile 主要有兩方面的作用:避免指令重排和可見性保證。例如,JVM 或者 JIT為了獲得更好的性能會對語句重排序,但是 volatile 類型變量即使在沒有同步塊的情況下賦值也不會與其他語句重排序。 volatile 提供 happens-before 的保證,確保一個線程的修改能對其他線程是可見的。某些情況下,volatile 還能提供原子性,如讀 64 位數(shù)據(jù)類型,像 long 和 double 都不是原子的(低32位和高32位),但 volatile 類型的 double 和 long 就是原子的。
感謝各位的閱讀,以上就是“Java秋招面試題有哪些”的內容了,經(jīng)過本文的學習后,相信大家對Java秋招面試題有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!