Java面試題之JVM相關(1)

2021-07-12 02:32:20 字數 1774 閱讀 1632

女朋友給她男友打**,**接通的那一刻,

手機裡竟然傳出一句:對不起,您所撥打的**正在通話中,請稍後再撥……

女朋友一聽就知道是她男友的聲音,

所以沒有結束通話問:不是還有一句英文嗎?

對面支支吾吾:sorry,you……the number ……

一道很坑的面試題,但是對理解jvm很有幫助???

例一:

package com.evada.de;

class singleton

public static singleton getinstance()

}/**

* created by ay on 2016/5/24.

*/public class lambdatest

}

執行結果:

counter1 :1

counter2 :0

解釋:

從main函式開始,根據jvm對類的載入機制,singleton.getinstance()主動使用,會觸發類的載入,首先會為類的靜態變數賦予初始值(程式從上到下執行),

即:singleton singleton = null,counter1 = 0,counter2 = 0.

然後會進行類的初始化,即singleton = new singleton(),會觸發建構函式,執行:

counter1 ++;

counter2 ++;

後 counter1 = 1,

counter2 = 1

最後,類在初始化後,為類的靜態變數賦予正確的初始值,為使用者賦予的正確值(從上到下)

即: public static int counter1;//無使用者賦值

public static long counter2 = 0;//使用者賦予初始值0

最終結果:

counter1 :1

counter2 :0

例二:

package com.evada.de;

class singleton

public static singleton getinstance()

}/**

* created by ay on 2016/5/24.

*/public class lambdatest

}

執行結果

counter1 :1

counter2 :1

解釋:

從main函式開始,根據jvm對類的載入機制,singleton.getinstance()主動使用,會觸發類的載入,首先會為類的靜態變數賦予初始值(程式從上到下執行),

即:singleton singleton = null,counter1 = 0,counter2 = 0.

然後會進行類的初始化,即

public static int counter1;//無使用者賦值

public static long counter2 = 0;//使用者賦予初始值0

後 counter1 = 0,

counter2 = 0

singleton = new singleton(),會觸發建構函式,執行:

counter1 ++;

counter2 ++;

最終結果:

counter1 :1

counter2 :1

來自《紅豬》

Java常見面試題 JVM

1.方法區 method area 方法區存放了要載入的類的資訊 如類名 修飾符等 靜態變數 建構函式 final定義的常量 類中的字段和方法等資訊。方法區是全域性共享的,在一定條件下也會被gc。當方法區超過它允許的大小時,就會丟擲outofmemory permgen space異常。在hotsp...

java執行緒面試題1

子執行緒迴圈 10次,接著主線程迴圈 100,接著又回到子執行緒迴圈 10次,接著再回到主線程又迴圈 100,如此迴圈 50次,請寫出程式。備註 不可能一上來就寫出上面的完整 最初寫出來的 如下,問題在於兩個執行緒的 要參照同乙個變數,即這兩個執行緒的 要共享資料,所以,把這兩個執行緒的執行 搬到同...

Java之面試題1

題 大廳裡有100盞燈,每盞燈都編了號碼,分別為1 100。每盞燈由乙個開關來控制。開關按一下,燈亮,再按一下燈滅。開關的編號與被控制的燈相同。開始時,燈是全滅的。現在按照以下規則按動開關。第一次,將所有的燈點亮。第二次,將所有2的倍數的開關按一下。第三次,將所有3的倍數的開關按一下。以此類推。第n...