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