本篇內容介紹了“2021常見的Java面試題有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1.解釋Java 7和8之間的區別。
老實說,有很多差異。在這里,如果您可以列出最重要的那些,就足夠了。您應該解釋Java 8的新功能。
您應該知道的最重要的是:
· 此版本中引入了Lambda表達式(一種新的語言功能)。Lambda表達式使您可以將功能視為方法參數或將代碼視為數據。Lambda表達式使您可以更緊湊地表示單方法接口(稱為功能接口)的實例。
· 方法引用為已經具有名稱的方法提供了易于閱讀的lambda表達式。
· 默認方法允許將新功能添加到庫的接口,并確保與為這些接口的較早版本編寫的代碼二進制兼容。
· 重復注釋提供了將同一注釋類型多次應用于同一聲明或類型使用的能力。
· 類型注釋提供了將注釋應用于任何使用類型的地方,而不僅僅是在聲明上的能力。與可插拔類型系統一起使用時,此功能可改進代碼的類型檢查。
2.您知道哪種類型的館藏?
在這里您應該了解最重要的一些:
· ArrayList
· LinkedList
· HashMap
· HashSet
在此之后,您可能會遇到以下問題:何時應使用此特定工具,相對于另一工具有什么好處,如何存儲數據以及幕后工作的數據結構。
在這里,最好的方法是盡可能多地了解這些收集類型,因為各種問題幾乎是無窮無盡的。
3.對象類有哪些方法?
這是一個非常常見的問題,用于確定您對基礎知識的掌握程度。這些是每個對象都具有的方法:
該Object班,在java.lang包裝,坐鎮類層次結構樹的頂端。每個類都是該類的直接或間接后代Object。您使用或編寫的每個類都繼承的實例方法Object。您不需要使用任何這些方法,但是,如果您選擇使用這些方法,則可能需要使用特定于您的類的代碼覆蓋它們。Object本節將討論從中繼承的方法:
· protected Object clone() throws CloneNotSupportedException
創建并返回此對象的副本。
· public boolean equals(Object obj)
指示其他某個對象是否與此對象“相等”。
· protected void finalize() throws Throwable
當garbagecollection 確定不再有對該對象的引用時,由垃圾收集器在對象上調用 。
· public final Class getClass()
返回對象的運行時類。
· public int hashCode()
返回對象的哈希碼值。
· public String toString()
返回對象的字符串表示形式。
的notify,notifyAll和wait方法Object都在一個程序,它在后面的課程中討論,并不會在這里介紹的同步獨立運行的線程的活動中發揮作用。這些方法有五種:
· 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.為什么 字符串對象在Java中是不可變的?
僅在Java中字符串是不可變的,所以才可能使用字符串池。這樣,Java運行時可以節省大量Java堆空間,因為不同的String變量可以引用池中的相同String變量。如果String是不可變的,那么將不可能進行String實習,因為如果有任何變量更改了值,則它將反映在其他變量中。
如果String不可更改,那么它將對應用程序造成嚴重的安全威脅。例如,數據庫用戶名和密碼作為String傳遞,以獲取數據庫連接,套接字編程主機和端口詳細信息作為String傳遞。由于String是不可變的,因此其值無法更改。否則,任何黑客都可能更改參考值,從而導致應用程序中的安全問題。
由于String是不可變的,因此對于多線程是安全的,并且可以在不同線程之間共享單個String實例。這樣可以避免為了線程安全而使用同步。字符串是隱式線程安全的。
5. Final,Final和Finalize有什么區別?
這個問題是我最喜歡的一個。
· 的最終關鍵字將在若干情況下使用,以限定只能一次被分配的實體。
· Java finally 塊是用于執行重要代碼(如關閉連接,流等)的finally 塊。無論是否處理異常,Java 塊始終執行。Java finally 塊位于 try 或 catch 塊之后。
· 這是一種始終在刪除/銷毀對象之前調用的方法,該 對象適合垃圾回收執行清理活動。GarbageCollector
6.什么是鉆石問題?
鉆石問題反映了為什么我們不允許在Java中進行多重繼承。如果有兩個類具有使用特定方法共享的超類,則在兩個子類中都將其覆蓋。然后,如果您決定從這兩個繼承 subClasses ,則如果您想調用該方法,則該語言無法確定您要調用的是哪一個。
我們把這個問題稱為鉆石問題。它是從上圖描述警告的名稱中獲得的。
7.您如何 使一個類不可變?
我認為這是一個非常困難的問題。您需要對類進行一些修改以實現不變性:
(1)將課程聲明為最終課程,因此無法擴展。
(2)將所有字段設為私有,以便不允許直接訪問。
(3)不要提供變量的setter方法
(4) 將所有可變字段定為最終值,使其值只能分配一次。
(5) 通過執行深度復制的構造函數初始化所有字段。
(6)在getter方法中執行對象的克隆以返回副本,而不是返回實際的對象引用。
8. Singleton是什么意思?
單例是僅允許創建其自身的單個實例并提供對該創建實例的訪問權限的類。它包含靜態變量,可以容納其自身的唯一實例和私有實例。當用戶希望將類的實例化限制為僅一個對象時,可以使用它。通常在需要單個對象來協調整個系統中的動作時,這很有用。
“2021常見的Java面試題有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。