學(xué)好java技術(shù)后,大家面臨的問(wèn)題便是求職,在求職過(guò)程中,求職者會(huì)被問(wèn)到很多專(zhuān)業(yè)技術(shù)上的問(wèn)題,那么有哪些是Java程序員面試中容易被問(wèn)到的問(wèn)題呢?下面云和小編收集了八個(gè)常常被問(wèn)到的Java面試題,希望能幫助到大家。
Java程序員面試中容易被問(wèn)到的問(wèn)題
1.闡述 Java 7 和 Java 8 的區(qū)別。
實(shí)話(huà)說(shuō),兩者有很多不同。如果你能列出最重要的,應(yīng)該就足夠了。你應(yīng)該解釋 Java 8 中的新功能。想要獲得完整清單,請(qǐng)?jiān)L問(wèn)官網(wǎng):Java 8 JDK。
你應(yīng)該知道以下幾個(gè)重點(diǎn):
lambda 表達(dá)式,Java 8 版本引入的一個(gè)新特性。lambda 表達(dá)式允許你將功能當(dāng)作方法參數(shù)或?qū)⒋a當(dāng)作數(shù)據(jù)。lambda 表達(dá)式還能讓你以更簡(jiǎn)潔的方式表示只有一個(gè)方法的接口 (稱(chēng)為函數(shù)式接口) 的實(shí)例。
方法引用,為已命名方法提供了易于閱讀的 lambda 表達(dá)式。
默認(rèn)方法,支持將新功能添加到類(lèi)庫(kù)中的接口,并確保與基于這些接口的舊版本的代碼的二進(jìn)制兼容性。
重復(fù)注解,支持在同一聲明或類(lèi)型上多次應(yīng)用同一注解類(lèi)型。
類(lèi)型注解,支持在任何使用類(lèi)型的地方應(yīng)用注解,而不僅限于聲明。此特性與可插入型系統(tǒng)一起使用時(shí),可增強(qiáng)對(duì)代碼的類(lèi)型檢查。
2.你了解哪些集合類(lèi)型?
你應(yīng)該知道以下幾個(gè)最重要的類(lèi)型:ArrayList、LinkedList、HashMap、HashSet
之后,你可能會(huì)被問(wèn)到這樣一些問(wèn)題,比如何時(shí)應(yīng)該使用此種特定類(lèi)型,它比其他的好在哪里,它是怎么存儲(chǔ)數(shù)據(jù)的以及隱匿在其后的數(shù)據(jù)結(jié)構(gòu)是什么。
最好的方法是盡可能多地了解這些集合類(lèi)型,因?yàn)檫@類(lèi)問(wèn)題幾乎是無(wú)窮盡的。
3.Object 類(lèi)包含哪些方法?
這是一個(gè)非常常見(jiàn)的問(wèn)題,用來(lái)確定你對(duì)基礎(chǔ)知識(shí)的熟悉程度。以下是每個(gè)對(duì)象都具有的方法:
在 java.lang 包中,Object 類(lèi)位于類(lèi)層次結(jié)構(gòu)的頂端。每個(gè)類(lèi)都是 Object 類(lèi)直接或間接的子類(lèi)。你使用或編寫(xiě)的每個(gè)類(lèi)都繼承了 Object 類(lèi)中的實(shí)例方法。你并不需要使用這些方法中的任何一種,但是,如果你選擇這樣做,則可能需要用你的類(lèi)的特定代碼來(lái)重寫(xiě)這些方法。以下是本節(jié)所討論的從 Object 類(lèi)中繼承的方法:
protected Object clone throws CloneNotSupportedException 創(chuàng)建并返回此對(duì)象的副本。
public boolean equals(Object obj) 判斷另一對(duì)象與此對(duì)象是否「相等」。
protected void finalize throws Throwable 當(dāng)垃圾回收機(jī)制確定該對(duì)象不再被調(diào)用時(shí),垃圾回收器會(huì)調(diào)用此方法。
public final Class getClass 返回此對(duì)象的運(yùn)行時(shí)類(lèi)。
public int hashCode 返回此對(duì)象的散列碼值。
public String toString 返回此對(duì)象的字符串表示形式。
Object 類(lèi)的 notify,notifyAll 和 wait 方法都在同步程序中獨(dú)立運(yùn)行線程的活動(dòng)方面發(fā)揮了作用。
public final void notify
public final void notifyAll
public final void wait
public final void wait(long timeout)
public final void wait(long timeout, int nanos)
4.為什么 String 對(duì)象是不可變的?
因?yàn)樽址?Java 中是不可變的,由此 Java 運(yùn)行時(shí)環(huán)境節(jié)省了大量堆空間,因?yàn)椴煌?String 變量可以引用池中的同一 String 變量。如果 String 不是不可變的, 則字符串駐留(String interning)將是不可能的,因?yàn)橐坏┤我蛔兞扛乃玫腟tring對(duì)象的值,它也會(huì)反映在其他變量中。
如果字符串不是不可變的,那么它可能會(huì)對(duì)應(yīng)用程序造成嚴(yán)重的安全威脅。例如,數(shù)據(jù)庫(kù)用戶(hù)名和密碼都作為 String 傳遞以獲取數(shù)據(jù)庫(kù)連接,Socket 編程的主機(jī)和端口信息也是如此。由于字符串是不可變的,因此其值不能被更改。否則,任何黑客都可以篡改其引用的值,這會(huì)導(dǎo)致應(yīng)用程序中的安全問(wèn)題。
由于 String 是不可變的,因此它對(duì)與多線程處理來(lái)說(shuō)是安全的,并且可以在不同的線程之間共享單個(gè) String 實(shí)例。這避免了為線程安全使用同步;字符串是隱式線程安全的。
字符串被用在 Java 類(lèi)加載器中,其不可變性為類(lèi)加載器加載正確的類(lèi)提供了安全性。否則的話(huà),請(qǐng)考慮這樣一個(gè)危險(xiǎn)的情況,在你嘗試加載 java.sql.Connection 類(lèi)時(shí),你引用的值卻被更改為 myhacked.Connection,并且它能對(duì)數(shù)據(jù)庫(kù)執(zhí)行你不需要的操作。
由于 String 是不可變的,因此在它被創(chuàng)建時(shí)其散列碼就被緩存,不需要再次計(jì)算。這使得它成為映射中鍵的理想對(duì)象,它的處理速度比其他HashMap 鍵類(lèi)型快。這就是為什么 String 是 HashMap 中最常用的鍵類(lèi)型。
5.final,finally,和 finalize 三者之間有什么不同?
final 關(guān)鍵字用于在多個(gè)語(yǔ)境下定義只能分配一次的實(shí)體。
finally 代碼塊是用于執(zhí)行重要代碼 (如關(guān)閉連接、流等) 的代碼塊。無(wú)論是否處理異常,finally 代碼塊總會(huì)被執(zhí)行。finally 代碼塊緊隨 try 代碼塊或 catch 代碼塊。
finalize 是在刪除或銷(xiāo)毀對(duì)象之前垃圾回收器總會(huì)調(diào)用的方法,該方法使得垃圾回收機(jī)制能夠執(zhí)行清理活動(dòng)。
6.如何使一個(gè)類(lèi)不可變?
將類(lèi)聲明為 final,使其無(wú)法被繼承。
所有域都用 private 修飾,不允許直接訪問(wèn)。
不提供變量的 setter 方法。
所有可變域都用 final 修飾, 使它的值只能分配一次。
通過(guò)構(gòu)造函數(shù)執(zhí)行深克隆初始化所有域。
對(duì) getter 方法獲取的對(duì)象執(zhí)行克隆以返回副本,而不是返回實(shí)際的對(duì)象引用。
7.什么是單例模式?
單例模式是指一個(gè)類(lèi)僅允許創(chuàng)建其自身的一個(gè)實(shí)例,并提供對(duì)該實(shí)例的訪問(wèn)權(quán)限。它包含靜態(tài)變量,可以容納其自身的唯一和私有實(shí)例。它被應(yīng)用于這種場(chǎng)景——用戶(hù)希望類(lèi)的實(shí)例被約束為一個(gè)對(duì)象。在需要單個(gè)對(duì)象來(lái)協(xié)調(diào)整個(gè)系統(tǒng)時(shí),它會(huì)很有幫助。
8.什么是依賴(lài)注入?
依賴(lài)注入是spring框架中的解耦的一種策略,稱(chēng)為DI,主要有set方式(提供set和get方法)和constractor(構(gòu)造方法)方式,它使得類(lèi)與類(lèi)之間以配置文件的形式組織在一起,而不是硬編碼的方式
Java程序員面試中容易被問(wèn)到的問(wèn)題都有哪些呢?以上就是常見(jiàn)的八個(gè)Java面試題,如果你了解了這些問(wèn)題,相信你能在面試中獲得很大的優(yōu)勢(shì),即使這次面試沒(méi)有被問(wèn)到,很可能下次的面試中就會(huì)被問(wèn)到了哦,更多java培訓(xùn)咨詢(xún)盡在云和數(shù)據(jù)官網(wǎng),歡迎大家?guī)?lái)咨詢(xún)。