最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

面試大廠90%會(huì)被問到的Java面試題(附答案)

  發(fā)布時(shí)間:2020-06-15 16:55:38   作者:佚名   我要評(píng)論
這篇文章主要介紹了面試大廠90%會(huì)被問到的Java面試題(附答案),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

面向?qū)ο蟮娜齻€(gè)特征
封裝,繼承,多態(tài)

多態(tài)的好處,代碼中如何實(shí)現(xiàn)多態(tài),虛擬機(jī)中如何實(shí)現(xiàn)多態(tài)
允許不同類對(duì)象對(duì)同一消息作出相應(yīng),好處如下:

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

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

接口性:多態(tài)是超類通過方法簽名,向子類提供一個(gè)接口,由子類完善或重寫來實(shí)現(xiàn)

靈活性

簡(jiǎn)化性

代碼中:接口實(shí)現(xiàn),繼承父類重寫方法,同一類中方法重載

虛擬機(jī)中:動(dòng)態(tài)綁定技術(shù)(dynamic binding),執(zhí)行期間判斷所引用對(duì)象的實(shí)際類型,根據(jù)實(shí)際類型調(diào)用對(duì)應(yīng)的方法

接口的意義,抽象類的意義
接口:規(guī)范,拓展,回調(diào)

抽象類:為其他子類提供一個(gè)公共的類型;封裝子類中重復(fù)定義個(gè)內(nèi)容;定義抽象方法,子類雖然有不同的實(shí)現(xiàn),但是定義時(shí)是一致的

父類的靜態(tài)方法能否被子類重寫
不能。重寫只適用于實(shí)例方法,不能用于靜態(tài)方法,而子類當(dāng)中含有和父類相同簽名的靜態(tài)方法,我們一般稱之為隱藏。

什么是不可變對(duì)象
不可變對(duì)象指對(duì)象一旦被創(chuàng)建,狀態(tài)就不能再改變。任何修改都會(huì)創(chuàng)建一個(gè)新的對(duì)象,如String,Integer等其他包裝類。

靜態(tài)變量和實(shí)例變量的區(qū)別
靜態(tài)變量存在方法區(qū),屬于類所有。實(shí)例變量存儲(chǔ)在堆中,其引用存在當(dāng)前線程棧。

能否創(chuàng)建一個(gè)包含可變對(duì)象的不可變對(duì)象
可以,需要注意不要共享可變對(duì)象的引用,如果需要變化時(shí),就返回原對(duì)象的一個(gè)拷貝。舉例:日期對(duì)象。

Java創(chuàng)建對(duì)象的幾種方式
new,反射,clone(),通過序列化機(jī)制

Switch能否使用String做參數(shù),能否作用在byte,long上
Java7以前不能使用String做參數(shù),可以使用byte,short,char,int及封裝類和枚舉,Java7之后可以使用String,一直不能用long

說說string的intern()方法
intern()方法會(huì)先從常量池中查詢是否存在該常量值,如果不存在則創(chuàng)建,否則直接放回

Object有哪些公用方法
euqals(),toString(),clone(),wait(),notify(),nofifyAll(),getClass()

Java中的四種引用
強(qiáng)引用,軟引用,弱引用,虛引用。不同的引用類型主要體現(xiàn)在GC上:
       強(qiáng)引用:如果一個(gè)對(duì)象具有強(qiáng)引用,它就不會(huì)被垃圾回收器回收。即使當(dāng)前內(nèi)存空間不足,JVM也不會(huì)回收它,而是拋出 OutOfMemoryError 錯(cuò)誤,使程序異常終止。如果想中斷強(qiáng)引用和某個(gè)對(duì)象之間的關(guān)聯(lián),可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時(shí)間就會(huì)回收該對(duì)象。
       軟引用:在使用軟引用時(shí),如果內(nèi)存的空間足夠,軟引用就能繼續(xù)被使用,而不會(huì)被垃圾回收器回收,只有在內(nèi)存不足時(shí),軟引用才會(huì)被垃圾回收器回收。
       弱引用:具有弱引用的對(duì)象擁有的生命周期更短暫。因?yàn)楫?dāng) JVM 進(jìn)行垃圾回收,一旦發(fā)現(xiàn)弱引用對(duì)象,無論當(dāng)前內(nèi)存空間是否充足,都會(huì)將弱引用回收。不過由于垃圾回收器是一個(gè)優(yōu)先級(jí)較低的線程,所以并不一定能迅速發(fā)現(xiàn)弱引用對(duì)象。
       虛引用:顧名思義,就是形同虛設(shè),如果一個(gè)對(duì)象僅持有虛引用,那么它相當(dāng)于沒有引用,在任何時(shí)候都可能被垃圾回收器回收。

WeakReference與SoftReference的區(qū)別
雖然 WeakReference 與 SoftReference 都有利于提高 GC 和 內(nèi)存的效率,但是 WeakReference ,一旦失去最后一個(gè)強(qiáng)引用,就會(huì)被 GC 回收,而軟引用雖然不能阻止被回收,但是可以延遲到 JVM 內(nèi)存不足的時(shí)候。

為什么要有不同的引用類型
不像C語言,我們可以控制內(nèi)存的申請(qǐng)和釋放,在Java中有時(shí)候我們需要適當(dāng)?shù)目刂茖?duì)象被回收的時(shí)機(jī),因此就誕生了不同的引用類型,可以說不同的引用類型實(shí)則是對(duì)GC回收時(shí)機(jī)不可控的妥協(xié)。有以下幾個(gè)使用場(chǎng)景可以充分的說明:

利用軟引用和弱引用解決OOM問題:用一個(gè)HashMap來保存圖片的路徑和相應(yīng)圖片對(duì)象關(guān)聯(lián)的軟引用之間的映射關(guān)系,在內(nèi)存不足時(shí),JVM會(huì)自動(dòng)回收這些緩存圖片對(duì)象所占用的空間,從而有效地避免了OOM的問題.
       通過軟引用實(shí)現(xiàn)Java對(duì)象的高速緩存:比如我們創(chuàng)建了一Person的類,如果每次需要查詢一個(gè)人的信息,哪怕是幾秒中之前剛剛查詢過的,都要重新構(gòu)建一個(gè)實(shí)例,這將引起大量Person對(duì)象的消耗,并且由于這些對(duì)象的生命周期相對(duì)較短,會(huì)引起多次GC影響性能。此時(shí),通過軟引用和 HashMap 的結(jié)合可以構(gòu)建高速緩存,提供性能。

Java中==和equals()的區(qū)別,equals()和hashcode()的區(qū)別及聯(lián)系
==是運(yùn)算符,比較兩個(gè)變量是否相等,而equals是Object類的方法,用來比較兩個(gè)對(duì)象是否相等。

默認(rèn)equals方法比較兩個(gè)對(duì)象的地址,此時(shí)結(jié)果相同,如果要比較內(nèi)容,則要重寫equals方法

hashcode()是Object類的一個(gè)方法,返回一個(gè)hash值,如果equals()相同則hashcode()相同,反之不然。

有沒有可能兩個(gè)不相等的對(duì)象有相同的hashcode
有可能,兩個(gè)不相等的對(duì)象可能有相同的hashcode值,只就是hashmap中會(huì)有沖突,如果對(duì)象相等,則hashcode相等,反之不然

可以在hashcode中使用隨機(jī)數(shù)字嗎
不可以,hashcode必須是相同的值

a==b與a.equals(b)有什么區(qū)別
如果a和b都是對(duì)象,a==b比較的是引用,只有當(dāng)a和b指向堆中同一個(gè)對(duì)象才會(huì)返回true,而a.equals(b)進(jìn)行邏輯比較,通常呀哦重寫該方法提供邏輯性一個(gè)的比。

3*0.1==0.3返回值是什么
false,因?yàn)橛行└↑c(diǎn)數(shù)不能精確的表示出來

a=a+b與a+=b有什么區(qū)別嗎
+= 操作符會(huì)隱式轉(zhuǎn)換,例如下題

short s1 = 1;s1 = s1 +1;該代碼是否有錯(cuò)誤,如果有錯(cuò)誤怎么修改
有錯(cuò)誤,s1 = (short)(s1+1);

short s1 = 1;s1+= 1是否有錯(cuò)誤,如果有錯(cuò)誤怎么修改
+=操作符會(huì)自動(dòng)對(duì)右邊的表達(dá)式結(jié)果強(qiáng)轉(zhuǎn)匹配左邊的數(shù)據(jù)類型,所以沒錯(cuò)

&與&&的區(qū)別
前者是位操作,后者是邏輯運(yùn)算符

一個(gè)Java內(nèi)部可以有類?(非內(nèi)部類)
一個(gè)Java內(nèi)部只能有一個(gè)public的類,可以有多個(gè)default的類

如何正確的退出多層嵌套循環(huán)
使用標(biāo)號(hào)和break;

內(nèi)部類的作用
內(nèi)部類提供了更好的封裝,除了該外圍類,其他類都不能訪問

final,finally,finalize的不同之處
fianl是一個(gè)修飾符,可以修飾類,方法,變量的。finally是一個(gè)關(guān)鍵字,捕獲異常是與try連用的,一定會(huì)執(zhí)行。finalize是在對(duì)象被回收之前調(diào)用的方法,給對(duì)象自己最后一個(gè)復(fù)活的機(jī)會(huì),但是什么時(shí)候調(diào)用finalize沒有保證

clone()是哪個(gè)類的方法
java.lang.Cloneable的一個(gè)標(biāo)示性接口,不包含任何方法,clone方法在object中定義,clone()方法是一個(gè)本地方法,是由c或c++實(shí)現(xiàn)的

深拷貝和淺拷貝的區(qū)別是什么
淺拷貝:僅僅復(fù)制所考慮的對(duì)象,而不復(fù)制它引用的對(duì)象

深拷貝:所有的對(duì)象都復(fù)制

static有哪些用法
靜態(tài)變量和靜態(tài)方法,被類實(shí)例所共享。

靜態(tài)塊,初始化操作。

修飾內(nèi)部類,為靜態(tài)內(nèi)部類

導(dǎo)包,指定導(dǎo)入某個(gè)類中的靜態(tài)資源,并且不需要使用類名

final有哪些用法
被final修飾的方法不能被繼承,修飾的方法不能被重寫,修飾的變量不能被改變。被final修飾的方法,JVM會(huì)嘗試將其內(nèi)關(guān)聯(lián),以提高運(yùn)行效率,被修飾的變量會(huì)在編譯階段存在常量池中。

編譯器對(duì)final域要遵守兩個(gè)重排規(guī)則:

1,在構(gòu)造器內(nèi)對(duì)一個(gè)final域的寫入,與隨后把這個(gè)構(gòu)造對(duì)象的引用賦值給一個(gè)引用變量,這兩個(gè)操作之間不能重排序

2,初次讀一個(gè)包含final域?qū)ο蟮囊?,與隨后初次讀這個(gè)final域,這兩個(gè)操作之間不能重排序

到此這篇關(guān)于面試大廠90%會(huì)被問到的Java面試題(附答案)的文章就介紹到這了,更多相關(guān)Java面試題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

南安市| 蒲城县| 莆田市| 东乡| 海丰县| 图们市| 青阳县| 瑞安市| 当阳市| 胶南市| 万年县| 崇义县| 龙口市| 古田县| 溆浦县| 汾西县| 酉阳| 游戏| 全椒县| 朝阳县| 马山县| 临沧市| 枣强县| 尤溪县| 睢宁县| 万安县| 明溪县| 五寨县| 塔城市| 玉田县| 永靖县| 中西区| 个旧市| 余干县| 稷山县| 璧山县| 宜春市| 科技| 察哈| 曲阳县| 年辖:市辖区|