更新時(shí)間:2020-05-28 16:37:44 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2323次
面試Java開發(fā)的求職者要想從眾多的優(yōu)秀者脫穎而出并不容易,因此小編專門匯總了程序員面試掌握的Java筆試面試題,希望能讓大家在面試前做好更充足的準(zhǔn)備。
1、hread類的start()和run()方法的區(qū)別。
答案:start()方法會(huì)創(chuàng)建新的線程并啟動(dòng)該線程,所以該方法會(huì)調(diào)用其他native方法,而run()方法就是:正常的Java方法調(diào)用,即在原來(lái)的線程中執(zhí)行java代碼。
2、Java中Runnable和Callable的區(qū)別。
答案:Runnable和Callable都代表要線程中執(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)上有確定的行為,特別是在多線程的情況下,一個(gè)線程所做的變動(dòng)對(duì)其他線程是否可見是很重要的,這叫做先行發(fā)生關(guān)系。
4、態(tài)的好處
答案:允許不同類對(duì)象對(duì)同一消息做出響應(yīng),即同一消息可以根據(jù)發(fā)送對(duì)象的不同而采用多種不同的行為方式(發(fā)送消息就是函數(shù)調(diào)用).主要有以下優(yōu)點(diǎn):
可替換性:多態(tài)對(duì)已存在代碼具有可替換性;
可擴(kuò)充性:增加新的子類不影響已經(jīng)存在的類結(jié)構(gòu);
接口性:多態(tài)是超類通過方法簽名,向子類提供一個(gè)公共接口,由子類來(lái)完善或者重寫它來(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è)拷貝。最常見的例子就是對(duì)象中包含一個(gè)日期對(duì)象的引用.
6、bject中有哪些公共方法?
答案:
7、Java當(dāng)中的四中引用:
答案:強(qiáng)引用,軟引用,弱引用,虛引用.不同的引用類型主要體現(xiàn)在GC上。
8、什么是編譯器常量?使用它有什么風(fēng)險(xiǎn)?
答案:公共靜態(tài)不可變(public static final)變量也就是我們所說(shuō)的編譯期常量,這里的public可選的。實(shí)際上這些變量在編譯時(shí)會(huì)被替換掉,因?yàn)榫幾g器知道這些變量的值,并且知道這些變量在運(yùn)行時(shí)不能改變。這種方式存在的一個(gè)問題是你使用了一個(gè)內(nèi)部的或第三方庫(kù)中的公有編譯時(shí)常量,但是這個(gè)值后面被其他人改變了,但是你的客戶端仍然在使用老的值,甚至你已經(jīng)部署了一個(gè)新的jar。為了避免這種情況,當(dāng)你在更新依賴JAR文件時(shí),確保重新編譯你的程序。
9、如何判斷一個(gè)對(duì)象是否應(yīng)該被回收?
答案:這就是所謂的對(duì)象存活性判斷,常用的方法有兩種:引用計(jì)數(shù)法和對(duì)象可達(dá)性分析。由于引用計(jì)數(shù)法存在互相引用導(dǎo)致無(wú)法進(jìn)行GC的問題,所以目前JVM虛擬機(jī)多使用對(duì)象可達(dá)性分析算法。
10、volatile類型變量提供什么保證?
答案:volatile主要有兩方面的作用:避免指令重排和可見性保證。例如,JVM或者JIT為了獲得更好的性能會(huì)對(duì)語(yǔ)句重排序,但是volatile類型變量即使在沒有同步塊的情況下賦值也不會(huì)與其他語(yǔ)句重排序。volatile提供happens-before的保證,確保一個(gè)線程的修改能對(duì)其他線程是可見的。某些情況下,volatile還能提供原子性,如讀64位數(shù)據(jù)類型,像long和double都不是原子的(低32位和高32位),但volatile類型的double和long就是原子的。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“程序員面試掌握的Java筆試面試題”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)