Java实用面试题及参考答案分享
Java開(kāi)發(fā)人員在面試中少不了會(huì)被詢問(wèn)專(zhuān)業(yè)上的問(wèn)題,面試官到底會(huì)問(wèn)什么問(wèn)題呢,想必小伙伴們一定很好奇吧,接下來(lái)小千就帶大家一起來(lái)看看java常見(jiàn)的面試題。
1、什么是多線程上下文切換?
多線程的上下文切換是指CPU控制權(quán)由一個(gè)已經(jīng)正在運(yùn)行的線程切換到另外一個(gè)就緒并等待獲取CPU執(zhí)行權(quán)的線程的過(guò)程。
2、創(chuàng)建兩種線程的方式?他們有什么區(qū)別?
通過(guò)實(shí)現(xiàn)java.lang.Runnable或者通過(guò)擴(kuò)展java.lang.Thread類(lèi)。相比擴(kuò)展Thread,實(shí)現(xiàn)Runnable接口可能更優(yōu).原因有二:Java不支持多繼承。因此擴(kuò)展Thread類(lèi)就代表這個(gè)子類(lèi)不能擴(kuò)展其他類(lèi)。而實(shí)現(xiàn)Runnable接口的類(lèi)還可能擴(kuò)展另一個(gè)類(lèi)。類(lèi)可能只要求可執(zhí)行即可,因此繼承整個(gè)Thread類(lèi)的開(kāi)銷(xiāo)過(guò)大。
3、Thread類(lèi)中的start()和run()方法有什么區(qū)別?
start()方法被用來(lái)啟動(dòng)新創(chuàng)建的線程,而且start()內(nèi)部調(diào)用了run()方法,這和直接調(diào)用run()方法的效果不一樣。當(dāng)你調(diào)用run()方法的時(shí)候,只會(huì)是在原來(lái)的線程中調(diào)用,沒(méi)有新的線程啟動(dòng),start()方法才會(huì)啟動(dòng)新線程。
4、怎么檢測(cè)一個(gè)線程是否持有對(duì)象監(jiān)視器?
Thread類(lèi)提供了一個(gè)holdsLock(Object obj)方法,當(dāng)且僅當(dāng)對(duì)象obj的監(jiān)視器被某條線程持有的時(shí)候才會(huì)返回true,注意這是一個(gè)static方法,這意味著”某條線程”指的是當(dāng)前線程。
5、你知道哪些垃圾回收算法?
垃圾回收從理論上非常容易理解,具體的方法有以下幾種:
標(biāo)記-清除
標(biāo)記-復(fù)制
標(biāo)記-整理
分代回收
6、如何判斷一個(gè)對(duì)象是否應(yīng)該被回收?
這就是所謂的對(duì)象存活性判斷,常用的方法有兩種:
引用計(jì)數(shù)法;
對(duì)象可達(dá)性分析。
由于引用計(jì)數(shù)法存在互相引用導(dǎo)致無(wú)法進(jìn)行GC的問(wèn)題,所以目前JVM虛擬機(jī)多使用對(duì)象可達(dá)性分析算法。
7、int和Integer的區(qū)別?
Integer是int的包裝類(lèi)型,在拆箱和裝箱中,二者自動(dòng)轉(zhuǎn)換。int是基本類(lèi)型,直接存數(shù)值,而integer是對(duì)象,用一個(gè)引用指向這個(gè)對(duì)象。
8、String, StringBuffer和StringBuilder區(qū)別?
String是字符串常量,final修飾:StringBuffer字符串變量(線程安全);
StringBuilder 字符串變量(線程不安全)。
9、如何將byte轉(zhuǎn)為String?
可以使用 String 接收 byte[] 參數(shù)的構(gòu)造器來(lái)進(jìn)行轉(zhuǎn)換,需要注意的點(diǎn)是要使用的正確的編碼,否則會(huì)使用平臺(tái)默認(rèn)編碼,這個(gè)編碼可能跟原來(lái)的編碼相同,也可能不同。
10、可以將int強(qiáng)轉(zhuǎn)為byte類(lèi)型么?會(huì)產(chǎn)生什么問(wèn)題?
可以做強(qiáng)制轉(zhuǎn)換,但是Java中int是32位的而byte是8 位的,所以,如果強(qiáng)制轉(zhuǎn)化int類(lèi)型的高24位將會(huì)被丟棄,byte 類(lèi)型的范圍是從-128到128。
以上就是小千為大家整理的Java面試實(shí)用面試題及參考答案,希望可以幫到即將面臨面試的小伙伴們。
本文來(lái)自千鋒教育,轉(zhuǎn)載請(qǐng)注明出處。
總結(jié)
以上是生活随笔為你收集整理的Java实用面试题及参考答案分享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 初学Java,这三个阶段你经历过吗?
- 下一篇: 初学Java你有这些疑惑吗?本文给你几个