国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
1、用10分來評估你自己——你在Java方面有多好?
2、解釋Java 7和Java 8的區(qū)別。
3、您知道集合類型有哪些?
4. Object 類有哪些方法?
5、為什么String對象在Java中是不可變的?
6、Final、Finally和Finalize的區(qū)別是什么?
7、diamond的問題是什么?
8、你怎么能讓一個類不可變的?
9、單例Singleton什么意思?
10、什么是依賴注入?
總結(jié)
首頁 Java Java面試題 頻繁遇到的10個Java面試問題

頻繁遇到的10個Java面試問題

Feb 04, 2021 am 10:20 AM
java 面試

頻繁遇到的10個Java面試問題

下面是近來面試中經(jīng)常被問到的10個問題,現(xiàn)在整理分享出來,以供參考。

1、用10分來評估你自己——你在Java方面有多好?

如果您對自己或?qū)ava的熟練程度不太確定,那么這是一個非常棘手的問題。如果你是Java專家,你應(yīng)該放低一點。在這之后,你可能會根據(jù)你所承認的水平得到問題。因此,例如,如果您說了10,但不能回答一個相當(dāng)困難的問題,那么這將是一個缺點。

2、解釋Java 7和Java 8的區(qū)別。

老實說,有很多不同之處。在這里,如果你能列出最重要的,就足夠了。您應(yīng)該解釋Java 8中的新特性。有關(guān)完整列表,請訪問原始網(wǎng)站:Java 8 JDK。

你應(yīng)該知道的最重要的一點是:

Lambda表達式,一個新的語言特性,已經(jīng)在這個版本中引入。Lambda表達式允許您將功能視為方法參數(shù)或代碼視為數(shù)據(jù)。Lambda表達式允許您更緊湊地表達單方法接口的實例(稱為函數(shù)接口)。

Method references(方法引用)為已經(jīng)有名稱的方法提供了易于閱讀的lambda表達式。

Default methods(默認方法)允許將新功能添加到庫的接口中,并確保與為這些接口的舊版本編寫的代碼的二進制兼容性。

Repeating annotations提供了將相同注釋類型多次應(yīng)用于相同聲明或類型使用的能力。

Type annotations 類型注釋提供了在使用類型的任何地方應(yīng)用注釋的能力,而不僅僅是在聲明中。與可插入類型系統(tǒng)一起使用時,該特性支持改進的代碼類型檢查。

3、您知道集合類型有哪些?

在這里你應(yīng)該知道最重要的一點:

ArrayList

LinkedList

HashMap

HashSet

在此之后,您可能會遇到一些問題,比如什么時候應(yīng)該使用這個特定的集合類型,與其他類型相比有什么好處,它如何存儲數(shù)據(jù),以及幕后的數(shù)據(jù)結(jié)構(gòu)是如何工作的。

在這里,最好的方法是盡可能多地了解這些集合類型,因為各種問題幾乎是取之不盡的。

4. Object 類有哪些方法?

這是一個很常見的問題,用來確定你對基本知識的熟悉程度。這些是每個對象都有的方法:

Object類,屬于java.lang包,位于類層次結(jié)構(gòu)樹的頂部。每個類都是對象類的直接或間接的后代。您使用或編寫的每個類都繼承對象的實例方法。您不需要使用任何這些方法,但是,如果您選擇這樣做,您可能需要使用特定于類的代碼覆蓋它們。

從本節(jié)討論的Object繼承的方法有:

  • protected Object clone() throws CloneNotSupportedException創(chuàng)建并返回此對象的副本。
  • public boolean equals(Object obj)標識其他對象是否“等于”這個對象。
  • protected void finalize() throws Throwable當(dāng)垃圾收集確定沒有對對象的引用時,垃圾收集器在對象上調(diào)用。
  • public final Class getClass()返回對象的運行時類。
  • public int hashCode()返回對象的hashcode
  • public String toString()返回對象的字符串表示形式。

Object的notify、notifyAll和wait方法都在同步程序中獨立運行線程的活動中起著作用,這將在后面討論,在這里不會討論。

有五種方法:

  • 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)

5、為什么String對象在Java中是不可變的?

1、因為字符串在Java中是不可變的,才能有String pool。通過這種方式,Java運行時節(jié)省了大量Java堆空間,因為不同的字符串變量可以引用池中的相同字符串變量。如果String不是不可變的,那么String interning就不可能實現(xiàn),因為如果任何變量改變了值,它就會反映在其他變量中。

(更多相關(guān)面試題推薦:java面試題及答案

2、如果字符串不是不可變的,那么它將對應(yīng)用程序造成嚴重的安全威脅。例如,數(shù)據(jù)庫用戶名和密碼作為字符串傳遞,以獲得數(shù)據(jù)庫連接、套接字編程主機和作為字符串傳遞的端口詳細信息。因為String是不可變的,所以它的值不能更改。否則,任何黑客都可能更改引用值,從而導(dǎo)致應(yīng)用程序中的安全問題。

3、由于String是不可變的,所以它對于多線程是安全的,并且單個字符串實例可以在不同的線程之間共享。為了線程安全,避免使用同步;字符串是隱式線程安全的。

4、字符串在Java類加載器中使用,不可變性提供了正確的類被類加載器加載的安全性。例如,考慮一個您試圖加載java.sql的實例。連接類,但引用的值被更改為myhacking。連接類,可以對數(shù)據(jù)庫執(zhí)行不需要的操作。

5、因為String是不可變的,所以它的hashcode會在創(chuàng)建時緩存,不需要再次計算。這使它成為映射中鍵的一個很好的候選對象,而且它的處理速度比其他HashMap鍵對象快。這就是為什么String是HashMap鍵最常用的對象。

6、Final、Finally和Finalize的區(qū)別是什么?

這個問題是我最喜歡的。

final 關(guān)鍵字在幾個上下文中用于定義一個只能分配一次的實體。

Java finally塊是用來執(zhí)行重要代碼的塊,例如關(guān)閉連接、流等。無論是否處理異常,Java finally塊總是被執(zhí)行。Java finally塊跟隨try或catch塊。

Finalize是 GarbageCollector(垃圾收集器)在刪除/銷毀對象之前調(diào)用的方法,對象有資格進行垃圾收集以執(zhí)行清理活動。

7、diamond的問題是什么?

diamond問題反映了為什么不允許在Java中進行多次繼承。如果有兩個類具有具有特定方法的共享超類,那么它將在兩個子類中被重寫。然后,如果您決定從這兩個子類繼承,那么如果您想調(diào)用該方法,語言無法決定您想調(diào)用哪個方法

我們把這個問題稱為鉆石問題。它的名字來自上面的圖片,它描述了警告。

8、你怎么能讓一個類不可變的?

我認為這是一個相當(dāng)困難的問題。你需要對你的類做一些修改,以實現(xiàn)不變性:

1、將類聲明為final,這樣它就不能擴展了。

2、使所有字段都是私有的,這樣就不允許直接訪問。

3、不要為變量提供setter方法

4、讓所有可變字段成為final,這樣它的值只能被賦值一次。

5、通過執(zhí)行深度復(fù)制的構(gòu)造函數(shù)初始化所有字段。

6、在getter方法中執(zhí)行對象克隆,以返回副本,而不是返回實際的對象引用。

9、單例Singleton什么意思?

singleton是一個類,它只允許自己的一個實例被創(chuàng)建,并提供對所創(chuàng)建實例的訪問。它包含靜態(tài)變量,這些靜態(tài)變量可以容納其自身的惟一和私有實例。當(dāng)用戶希望將類的實例化限制為一個對象時,可以使用它。當(dāng)需要單個對象來協(xié)調(diào)跨系統(tǒng)的操作時,這通常是有幫助的。

10、什么是依賴注入?

這是您在Java EE或Spring工作時必須知道的第一個問題??刂品崔D(zhuǎn)(Inversion of Control,縮寫為IoC),是面向?qū)ο缶幊讨械囊环N設(shè)計原則,可以用來減低計算機代碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫“依賴查找”(Dependency Lookup)。通過控制反轉(zhuǎn),對象在被創(chuàng)建的時候,由一個調(diào)控系統(tǒng)內(nèi)所有對象的外界實體,將其所依賴的對象的引用傳遞給它。也可以說,依賴被注入到對象中。

組件不做定位查詢,只提供普通的Java方法讓容器去決定依賴關(guān)系。容器全權(quán)負責(zé)的組件的裝配,它會把符合依賴關(guān)系的對象通過JavaBean屬性或者構(gòu)造函數(shù)傳遞給需要的對象。通過JavaBean屬性注射依賴關(guān)系的做法稱為設(shè)值方法注入(Setter Injection);將依賴關(guān)系作為構(gòu)造函數(shù)參數(shù)傳入的做法稱為構(gòu)造器注入(Constructor Injection)

總結(jié)

在本文中,我們討論了10大Java面試問題,我認為,根據(jù)我的經(jīng)驗,這是當(dāng)今最重要的問題。如果你知道這些,我相信你在招聘過程中會有很大的優(yōu)勢。

如果你在這個話題上有類似的經(jīng)歷,或者你有一些成功的故事,請在下面的評論中分享。

相關(guān)推薦:java視頻教程

以上是頻繁遇到的10個Java面試問題的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動提交模式,再執(zhí)行多個操作,最后根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時應(yīng)使用try-with-resources管理資源,妥善處理異常并關(guān)閉連接,避免連接泄漏;此外建議使用連接池、設(shè)置保存點實現(xiàn)部分回滾,并保持事務(wù)盡可能短以提升性能。

了解Java虛擬機(JVM)內(nèi)部 了解Java虛擬機(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日歷? 如何使用Java的日歷? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時間;3.使用of()方法創(chuàng)建特定日期時間;4.利用plus/minus方法不可變地增減時間;5.使用ZonedDateTime和ZoneId處理時區(qū);6.通過DateTimeFormatter格式化和解析日期字符串;7.必要時通過Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

了解網(wǎng)絡(luò)端口和防火墻 了解網(wǎng)絡(luò)端口和防火墻 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動管理內(nèi)存的機制,通過回收不可達對象釋放堆內(nèi)存,減少內(nèi)存泄漏風(fēng)險。1.GC從根對象(如棧變量、活動線程、靜態(tài)字段等)出發(fā)判斷對象可達性,無法到達的對象被標記為垃圾。2.基于標記-清除算法,標記所有可達對象,清除未標記對象。3.采用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時較長的MajorGC;Metaspace存儲類元數(shù)據(jù)。4.JVM提供多種GC器:SerialGC適用于小型應(yīng)用;ParallelGC提升吞吐量;CMS降

使用HTML'輸入類型”作為用戶數(shù)據(jù) 使用HTML'輸入類型”作為用戶數(shù)據(jù) Aug 03, 2025 am 11:07 AM

選擇合適的HTMLinput類型能提升數(shù)據(jù)準確性、增強用戶體驗并提高可用性。1.根據(jù)數(shù)據(jù)類型選用對應(yīng)input類型,如text、email、tel、number和date,可實現(xiàn)自動校驗和適配鍵盤;2.利用HTML5新增類型如url、color、range和search,可提供更直觀的交互方式;3.配合使用placeholder和required屬性,可提升表單填寫效率和正確率,但需注意placeholder不能替代label。

比較Java構(gòu)建工具:Maven vs. Gradle 比較Java構(gòu)建工具:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

See all articles