java核心面试_不正确的核心Java面试答案
java核心面試
總覽
在Internet上,Java面試問(wèn)題和答案從一個(gè)網(wǎng)站復(fù)制到另一個(gè)網(wǎng)站。 這可能意味著錯(cuò)誤或過(guò)時(shí)的答案可能永遠(yuǎn)不會(huì)得到糾正。 這是一些不太正確或已經(jīng)過(guò)時(shí)的問(wèn)題和答案。 即是Java 5.0之前的版本。
每個(gè)提供的問(wèn)題后都有兩個(gè)部分。 斜體的第一部分指示答案不完整/錯(cuò)誤。 最后一部分以純格式提供完整/正確的答案。
參數(shù)可以通過(guò)幾種方式傳遞給子例程并進(jìn)行解釋?
參數(shù)可以通過(guò)兩種方式傳遞。 它們通過(guò)價(jià)值傳遞,通過(guò)參考傳遞。
按值傳遞:此方法將參數(shù)的值復(fù)制到子例程的形式參數(shù)中。
通過(guò)引用傳遞:在此方法中,對(duì)參數(shù)的引用(不是參數(shù)的值)傳遞給參數(shù)。
Java僅支持按值傳遞。 您可以按值傳遞引用,但是在Java中不能按引用傳遞。 Java引用可以描述為“通過(guò)共享調(diào)用”,但這并不常用。
什么是垃圾回收?如何明確調(diào)用它?
當(dāng)某個(gè)對(duì)象不再由任何變量引用時(shí),java會(huì)自動(dòng)回收該對(duì)象使用的內(nèi)存。 這稱為垃圾收集。 系統(tǒng)。 gc()方法可用于顯式調(diào)用它。
當(dāng)對(duì)象不再具有來(lái)自Root上下文的強(qiáng)引用時(shí),就有資格進(jìn)行清除。 具有弱參考或軟參考的對(duì)象可以清除。 沒(méi)有強(qiáng)引用的對(duì)象可能無(wú)法清除(即沒(méi)有保證人將運(yùn)行GC,次要GC不會(huì)清除使用期限的對(duì)象)
System.gc() 提示應(yīng)運(yùn)行Full GC。 可以使用命令行選項(xiàng)禁用它。
什么是瞬態(tài)和揮發(fā)性修飾劑?
瞬態(tài):瞬態(tài)修飾符僅適用于變量,并且不存儲(chǔ)為對(duì)象持久性狀態(tài)的一部分。 暫態(tài)變量未序列化。
Volatile:Volatile修飾符僅適用于變量,它告訴編譯器,由volatile修改的變量可能會(huì)被程序的其他部分意外更改。
瞬變只能應(yīng)用于字段,而不能應(yīng)用于局部變量。 它可以應(yīng)用于靜態(tài)變量,但通常會(huì)被忽略。 瞬態(tài)字段不會(huì)自動(dòng)序列化,但可以通過(guò)自定義序列化進(jìn)行序列化,例如writeObject和readObject()
volatile只能應(yīng)用于字段,并告訴JIT而不是告訴編譯器,每次訪問(wèn)都必須獲取該字段的緩存一致性副本。 (通常來(lái)自“主”內(nèi)存)
解釋關(guān)鍵字transient的用法?
此關(guān)鍵字指示此成員變量的值不必與對(duì)象序列化。 當(dāng)將反序列化該類時(shí),將使用其數(shù)據(jù)類型的默認(rèn)值(即,對(duì)于整數(shù)為零)來(lái)初始化此變量。
此關(guān)鍵字表示該字段不能自動(dòng)序列化。 它不會(huì)自動(dòng)反序列化,并保留該字段的默認(rèn)值。 Integer的默認(rèn)值為null 。 int的默認(rèn)值為0
什么是方法重載和方法重載?
方法重載:當(dāng)類中具有相同方法名,不同參數(shù)的方法被稱為方法重載時(shí)。
方法覆蓋:當(dāng)類中具有相同方法名稱和相同參數(shù)的方法被稱為方法覆蓋。
當(dāng)兩個(gè)方法具有相同的名稱但簽名不同時(shí),就會(huì)發(fā)生方法重載。 簽名包括參數(shù)類型和通用類型。 可以使用不同的參數(shù)調(diào)用單個(gè)方法,而可以使用相同的參數(shù)調(diào)用兩個(gè)重載方法。 即它的簽名而不是重要的論點(diǎn)。
僅當(dāng)子類具有與父類中的方法相同的簽名時(shí),才發(fā)生方法重寫(xiě)。
Integer和int有什么區(qū)別?
Integer是對(duì)包裝int的對(duì)象的引用。自從添加自動(dòng)裝箱和拆箱以來(lái),主要區(qū)別在于Integer可以為null,并且==運(yùn)算符比較Integer的引用和int類型的實(shí)際值。
Integer i1 = 1; Integer i2 = 1; // true as the same autoboxed Integer is used. System.out.println(i1 == i2); Integer i3 = -200; Integer i4 = -200; // false as different autoboxed Integer objects are used. System.out.println(i3 == i4);線程的不同狀態(tài)是什么?
不同的線程狀態(tài)為就緒,運(yùn)行,等待和死機(jī)。
由于Java 5.0應(yīng)該是正在開(kāi)發(fā)的大多數(shù)Java系統(tǒng),因此Thread.State類將線程可能的狀態(tài)列出為
- NEW –尚未啟動(dòng)的線程處于此狀態(tài)。
- 可運(yùn)行–在Java虛擬機(jī)中執(zhí)行的線程處于此狀態(tài)。
- 已阻塞–等待監(jiān)視器鎖定的已阻塞線程處于此狀態(tài)。
- 等待中–無(wú)限期等待另一個(gè)線程執(zhí)行特定操作的線程處于此狀態(tài)。
- TIMED_WAITING –正在等待另一個(gè)線程在指定的等待時(shí)間內(nèi)執(zhí)行操作的線程處于此狀態(tài)。
- 終止–退出的線程處于此狀態(tài)。
所有班級(jí)的基礎(chǔ)班是哪一個(gè)?
java.lang.Object
對(duì)于自定義類,這是正確的。 對(duì)于基本類型,例如int.class,void.class和Object本身沒(méi)有超類。
Class parent = boolean.class.getSuperclass(); // returns null什么是守護(hù)線程?
在后臺(tái)運(yùn)行的Theards(sic)被稱為守護(hù)進(jìn)程線程。 守護(hù)程序線程是一個(gè)線程,一旦進(jìn)入運(yùn)行狀態(tài),該線程便沒(méi)有任何機(jī)會(huì)運(yùn)行其他線程,而它也沒(méi)有任何機(jī)會(huì)運(yùn)行其他線程。
守護(hù)程序線程是不會(huì)阻止JVM關(guān)閉的任何線程。 任何線程都可以視為“后臺(tái)”線程。 守護(hù)程序線程被賦予與非守護(hù)程序線程相同的優(yōu)先級(jí)(基于它們的優(yōu)先級(jí))。當(dāng)守護(hù)程序線程正在運(yùn)行時(shí),它不會(huì)阻止另一個(gè)線程與非守護(hù)程序線程在運(yùn)行上有任何不同。
守護(hù)程序線程是一個(gè)低優(yōu)先級(jí)的線程,它在后臺(tái)間歇運(yùn)行,為Java運(yùn)行時(shí)系統(tǒng)執(zhí)行垃圾回收操作。
垃圾收集器是守護(hù)線程的示例。 守護(hù)程序線程可以具有較高的優(yōu)先級(jí),并且可以一直運(yùn)行。
對(duì)switch語(yǔ)句的每種情況的值施加什么限制?
在編譯時(shí),switch語(yǔ)句的每個(gè)case值必須計(jì)算為int值
從Java 5.0開(kāi)始,支持打開(kāi)枚舉,從Java 7開(kāi)始,支持打開(kāi)String。
什么是Java Bean?
Java Bean是一種軟件組件,其設(shè)計(jì)旨在可以在各種不同的環(huán)境中重用。
恕我直言:這個(gè)答案含糊不清,可能在談?wù)撊魏问虑椤?
Java Bean是“可序列化的Java對(duì)象,具有null構(gòu)造函數(shù),并允許使用getter和setter方法訪問(wèn)屬性。”
為什么要使用同步塊與同步方法?
與同步方法相比,同步塊放置鎖的時(shí)間更短。
這可能是正確的,但不能保證。 通常,同步塊用于通過(guò)同步方法來(lái)鎖定對(duì)對(duì)象的多次調(diào)用。 IMHO用于同步塊的最常見(jiàn)的用途是鎖定在這以外另一個(gè)目的
Map<key, value=""> map = Collections.synchronizedMap(new LinkedHashMap<key, value="">()); // perform multiple operations in a thread safe manner synchronized(map) { Value value = map.get(key); if (value == null) map.put(key, value = new Value(key)); return value; }Java中哪一個(gè)更快?
for(int i = 100000; i > 0; i--) {} for(int i = 1; i < 100001; i++) {}答:最快的是第二個(gè)。 服務(wù)器JVM可以檢測(cè)并消除不執(zhí)行任何操作的循環(huán)。 當(dāng)循環(huán)迭代大約10,000次時(shí),將編譯帶有任一循環(huán)的方法。 (基于-XX:CompileThreshold = 10000)第一個(gè)循環(huán)將花費(fèi)一些時(shí)間來(lái)檢測(cè)它沒(méi)有執(zhí)行任何操作,但是第二個(gè)循環(huán)將被編譯。
哪個(gè)Java運(yùn)算符是正確的關(guān)聯(lián)?
=運(yùn)算符是右關(guān)聯(lián)的。
根據(jù)http://introcs.cs.princeton.edu/java/11precedence/ ,從右到左的關(guān)聯(lián)運(yùn)算符是列表。 (不止一個(gè))
- ( ) 投
- 新對(duì)象
- ? :
- 分配= + =-= * = / =%=&= ^ = | = << = >> = >>> =
Java運(yùn)行時(shí)系統(tǒng)生成什么類的異常?
Java運(yùn)行時(shí)系統(tǒng)生成RuntimeException和Error異常。
恕我直言:這是對(duì)另一個(gè)問(wèn)題的答案。 這是對(duì)的回答; 什么是運(yùn)行時(shí)超類,未經(jīng)檢查的異常?
Java運(yùn)行時(shí)可以生成Error,Exception或RuntimeException。
參考: Java Java核心訪談不正確來(lái)自我們的JCG合作伙伴 Peter Lawrey在Vanilla Java上的 回答 。
相關(guān)文章:- 每個(gè)程序員都應(yīng)該知道的事情
- 正確記錄應(yīng)用程序的10個(gè)技巧
- 軟件設(shè)計(jì)法則
- Java最佳實(shí)踐系列
- 生存在荒野西部開(kāi)發(fā)過(guò)程中的9條提示
- 如何在不到1ms的延遲內(nèi)完成100K TPS
- 提升您的Hibernate引擎
翻譯自: https://www.javacodegeeks.com/2011/07/incorrect-core-java-interview-answers.html
java核心面試
總結(jié)
以上是生活随笔為你收集整理的java核心面试_不正确的核心Java面试答案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 水养的富贵竹怎么能养好(主意4点水培富贵
- 下一篇: java高频面试_C ++或Java,高