昨晚看了幾個老外分享的面試題,還挺有意思的,下面我們分兩期來一起看看都是些怎么樣的問題難到了老外?如果是你,是否可以都答對呢?
如果您對原文感興趣,也可以通過這個鏈接查看:https://levelup.gitconnected.com/tricky-java-interview-questions-cfc546fd03ab
Q1:下面Java代碼的輸出是什么?
public class Test {
public static void main(String[] args) {
method(null);
}
public static void method(Object o) {
System.out.println("Object method");
}
public static void method(String s) {
System.out.println("String method");
}
}
答案:
將列印“String method”,首先,null 在 Java 中不是一個物件,在 Java 中我們可以將 null 賦給任何一個參考型別,而 Java 中的字串是 Java.lang.String 類的物件,在這里,Java 編譯器會選擇使用最具體的引數型別來呼叫多載方法,而String型別比Object更為具體,所以會呼叫method(String s)方法,
Q2:下面Java代碼的輸出是什么?
public class Test{
public static void main(String[] args){
Integer num1 = 100;
Integer num2 = 100;
if(num1 == num2){
System.out.println("num1 == num2");
}
else{
System.out.println("num1 != num2");
}
}
}
答案:
將列印“num1 == num2”,每當使用“ == ”比較兩個不同的物件參考時,值總是“false”,但是在這里,由于 Integer 快取,num1和 num2是自動裝箱的,因此num1 == num2回傳“true”,同時,整數快取只會發生在-128到127之間的值,
Q3:垃圾收集是如何防止Java應用程式記憶體不足的?
答案:
Java 垃圾收集器不能防止 Java 應用程式耗盡記憶體,它只是在物件超出范圍且不再需要時清除未使用的記憶體,因此,它不能保證防止Java應用程式不耗盡記憶體!
Q4:Java 是「按參考傳遞」還是「按值傳遞」
答案:
Java總是“按值傳遞”,然而,當我們傳遞一個物件的值時,我們傳遞對它的參考,因為變數存盤物件參考,而不是物件本身,但這不是“參考傳遞”,這可能會讓初學者感到困惑,
Q5:下面的代碼創建了多少個String物件
public class Test{
public static void main(String[] args){
String s = new String("Hello World");
}
}
答案:
創建了2個String物件,一個在堆記憶體中,一個在方法區中的字串常量池中,
Q6:下面的代碼輸出是什么
public class Test{
public static void main(String[] arr){
System.out.println(0.1*3 == 0.3);
System.out.println(0.1*2 == 0.2);
}
}
答案:
第一句print輸出false,第二句print輸出true,因為浮點數的誤差舍入導致,只有2的冪數可以用簡單的二進制表示法精確表示,不對應于2次方的數字必須四舍五入以適應有限數量的位,因此,0.1*3是不等于0.3的,
Q7:有沒有可能在 Java 中重寫或多載靜態方法?
答案:
多載(overload)靜態 Java 方法是可能的,但是不可能重寫(override)它們,你可以在子類中撰寫具有相同命名的另一個靜態方法,但它不會重寫超類方法,它在 Java 中被稱為方法隱藏,
Q8:測驗兩個double值是否相等的最可靠的方法是什么?
答案:
Double.compare(d1, d2) == 0
Q9:如果 try 或 catch 塊執行一個 return 陳述句,finally 塊是否會被執行?
答案:
會執行,阻止 finally 塊執行的唯一方法是使用System.exit(),
Q10:下面的代碼輸出是什么
public class Test{
public static void main(String[] args){
System.out.println("main method");
}
public static void main(String args){
System.out.println("Overloaded main method");
}
}
答案:
會列印“main method”,不會有錯誤或例外,因為 main 方法可以在 Java 中多載,必須從 main 方法內部呼叫它才能像其他方法一樣執行,
好了,10道題目分享完畢,你答對了幾道呢?
DD自研的滬牌代拍業務,點擊直達
往期推薦
Git 提交代碼之后的幾種后悔藥
為什么大多數IOC容器使用ApplicationContext,而不用BeanFactory
JIRA、Confluence等產品明年2月停售本地化版本,將影響中國近90%的客戶!
妙用 Intellij IDEA 創建臨時檔案,Git 跟蹤不到的那種
國內首個位元幣勒索病毒制作者落網,但程序有點好笑...
TIOBE公布11月榜單:Python勢不可擋,超越Java !
掃一掃,關注我
一起學習,一起進步
每周贈書,福利不斷
﹀
﹀
﹀
深度內容
推薦加入
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/222832.html
標籤:java
上一篇:SpringBoot+MybatisPlus+Mysql+JSP
下一篇:String原始碼決議
