面試是我們每個(gè)人都要經(jīng)歷的事情,大部分人且不止一次,這里給大家總結(jié)10個(gè)最新的2020年面試題,讓大家在找工作時(shí)候能夠事半功倍。
Q1:下面Java代碼的輸出是什么?
publicclassTest{publicstaticvoidmain(String[] args){? ? method(null);? }publicstaticvoidmethod(Object o){? ? System.out.println("Object method");? }publicstaticvoidmethod(String s){? ? System.out.println("String method");? }}
答案:
將打印“String method”。首先,null 在 Java 中不是一個(gè)對(duì)象,在 Java 中我們可以將 null 賦給任何一個(gè)引用類型。而 Java 中的字符串是 Java.lang.String 類的對(duì)象。在這里,Java 編譯器會(huì)選擇使用最具體的參數(shù)類型來(lái)調(diào)用重載方法。而String類型比Object更為具體,所以會(huì)調(diào)用?method(String s)?方法。
Q2:下面Java代碼的輸出是什么?
publicclassTest{publicstaticvoidmain(String[] args){? ? Integer num1 =100;? ? Integer num2 =100;if(num1 == num2){? ? ? System.out.println("num1 == num2");? ? }else{? ? ? System.out.println("num1 != num2");? ? }? }}
答案:將打印“num1 == num2”。每當(dāng)使用“ == ”比較兩個(gè)不同的對(duì)象引用時(shí),值總是“false”。但是在這里,由于 Integer 緩存,num1和 num2是自動(dòng)裝箱的。因此num1 == num2返回“true”。同時(shí),整數(shù)緩存只會(huì)發(fā)生在-128到127之間的值。
Q3:垃圾收集是如何防止Java應(yīng)用程序內(nèi)存不足的?
答案:
Java 垃圾收集器不能防止 Java 應(yīng)用程序耗盡內(nèi)存。它只是在對(duì)象超出范圍且不再需要時(shí)清除未使用的內(nèi)存。因此,它不能保證防止Java應(yīng)用程序不耗盡內(nèi)存!
Q4: Java 是「按引用傳遞」還是「按值傳遞」
答案:
Java總是“按值傳遞”。然而,當(dāng)我們傳遞一個(gè)對(duì)象的值時(shí),我們傳遞對(duì)它的引用,因?yàn)樽兞看鎯?chǔ)對(duì)象引用,而不是對(duì)象本身。但這不是“引用傳遞”,這可能會(huì)讓初學(xué)者感到困惑。
Q5:下面的代碼創(chuàng)建了多少個(gè)String對(duì)象
publicclassTest{publicstaticvoidmain(String[] args){Strings =newString("Hello World");? }}
答案:
創(chuàng)建了2個(gè)String對(duì)象。一個(gè)在堆內(nèi)存中,一個(gè)在方法區(qū)中的字符串常量池中。
Q6:下面的代碼輸出是什么
publicclassTest{publicstaticvoidmain(String[] arr){? ? System.out.println(0.1*3==0.3);? ? System.out.println(0.1*2==0.2);? }}
答案:
第一句print輸出false,第二句print輸出true。因?yàn)楦↑c(diǎn)數(shù)的誤差舍入導(dǎo)致,只有2的冪數(shù)可以用簡(jiǎn)單的二進(jìn)制表示法精確表示。不對(duì)應(yīng)于2次方的數(shù)字必須四舍五入以適應(yīng)有限數(shù)量的位,因此,0.1*3是不等于0.3的。
Q7:有沒有可能在 Java 中重寫或重載靜態(tài)方法?
答案:
重載(overload)靜態(tài) Java 方法是可能的,但是不可能重寫(override)它們。你可以在子類中編寫具有相同命名的另一個(gè)靜態(tài)方法,但它不會(huì)重寫超類方法。它在 Java 中被稱為方法隱藏。
Q8:測(cè)試兩個(gè)double值是否相等的最可靠的方法是什么?
答案:
Double.compare(d1, d2) == 0
Q9:如果 try 或 catch 塊執(zhí)行一個(gè) return 語(yǔ)句,finally 塊是否會(huì)被執(zhí)行?
答案:
會(huì)執(zhí)行。阻止 finally 塊執(zhí)行的唯一方法是使用?System.exit()?。
Q10:下面的代碼輸出是什么
publicclassTest{publicstaticvoidmain(String[] args){? ? System.out.println("main method");? }publicstaticvoidmain(String args){? ? System.out.println("Overloaded main method");? } }
答案:
會(huì)打印“main method”。不會(huì)有錯(cuò)誤或異常,因?yàn)?main 方法可以在 Java 中重載。必須從 main 方法內(nèi)部調(diào)用它才能像其他方法一樣執(zhí)行。
好了,10道題目分享完畢,你答對(duì)了幾道呢?