Java面試題及答案(2022版),適用于應屆生和有作業經驗的程式員,每道都是認真篩選出的高頻面試題,助力大家能找到滿意的作業!
下載鏈接:全部面試題及答案PDF
1. JDK 和 JRE 有什么區別?
? JDK:Java Development Kit 的簡稱,Java 開發工具包,提供了 Java 的開發環境和運行環境,
? JRE:Java Runtime Environment 的簡稱,Java 運行環境,為 Java 的運行提供了所需環境,
具體來說 JDK 其實包含了 JRE,同時還包含了編譯 Java 原始碼的編譯器 Javac,還包含了很多 Java 程式除錯和分析的工具,簡單來說:如果你需要運行 Java 程式,只需安裝 JRE 就可以了,如果你需要撰寫 Java 程式,需要安裝 JDK,
2. List介面有什么特點?
順序存盤、可以有重復值,
3. &和&&的區別
&是位運算子,&&是布爾邏輯運算子,在進行邏輯判斷時用&處理的前面為false后面的內容仍需處理,用&&處的前面為false不再處理后面的內容,
4. 多載和重寫
1、Overload為多載,Override為重寫方法的重寫和多載是Java多型性的不同表現,重寫是父類與子類之間多型性的一種表現,多載是一個類中多型性的一種表現,
2、如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫(Override),子類的物件使用這個方法時,將呼叫子類中的定義,對它而言, 父類中的定義如同被“屏蔽“了
5. == 和 equals 的區別是什么?
== 解讀
對于基本型別和參考型別 == 的作用效果是不同的,如下所示:
? 基本型別:比較的是值是否相同;
? 參考型別:比較的是參考是否相同;
代碼示例:
代碼示例:
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true
代碼解讀:因為 x 和 y 指向的是同一個參考,所以 == 也是 true,而 new String()方法則重寫開辟了記憶體空間,所以 == 結果為 false,而 equals 比較的一直是值,所以結果都為 true,
equals 解讀
equals 本質上就是 ==,只不過 String 和 Integer 等重寫了 equals 方法,把它變成了值比較,看下面的代碼就明白了,
首先來看默認情況下 equals 比較一個有相同值的物件,代碼如下:
class Cat {
public Cat(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Cat c1 = new Cat("王磊");
Cat c2 = new Cat("王磊");
System.out.println(c1.equals(c2)); // false
輸出結果出乎我們的意料,竟然是 false?這是怎么回事,看了 equals 原始碼就知道了,原始碼如下:
public boolean equals(Object obj) {
return (this == obj);
}
原來 equals 本質上就是 ==,
那問題來了,兩個相同值的 String 物件,為什么回傳的是 true?代碼如下:
String s1 = new String("老王");
String s2 = new String("老王");
System.out.println(s1.equals(s2)); // true
同樣的,當我們進入 String 的 equals 方法,找到了答案,代碼如下:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
原來是 String 重寫了 Object 的 equals 方法,把參考比較改成了值比較,
總結 :== 對于基本型別來說是值比較,對于參考型別來說是比較的是參考;而 equals 默認情況下是參考比較,只是很多類重新了 equals 方法,比如 String、Integer 等把它變成了值比較,所以一般情況下 equals 比較的是值是否相等,
6.Set介面有什么特點
無須存盤、不能有重復值,
7.兩個物件的 hashCode() 相同,則 equals() 也一定為 true,對嗎?
不對,兩個物件的 hashCode() 相同,equals() 不一定 true,
代碼示例:
String str1 = "通話";
String str2 = "重地";
System. out. println(String. format("str1:%d | str2:%d", str1. hashCode(),str2. hashCode()));
System. out. println(str1. equals(str2));
執行的結果:
str1:1179395 | str2:1179395
false
代碼解讀:很顯然“通話”和“重地”的 hashCode() 相同,然而 equals() 則為 false,因為在散串列中,hashCode() 相等即兩個鍵值對的哈希值相等,然而哈希值相等,并不一定能得出鍵值對相等,
8.ArrayList 與 LinkedList 有什么區別?
1、ArrayList 與 LinkedList 都實作了 List 介面,
2、ArrayList是線性表,底層是使用陣列實作的,它在尾端插入和訪問資料時效率較高,
3、 Linked是雙向鏈表,他在中間插入或者頭部插入時效率較高,在訪問資料時 效率較低
9. final 在 Java 中有什么作用?
? final 修飾的類叫最終類,該類不能被繼承,
? final 修飾的方法不能被重寫,
? final 修飾的變數叫常量,常量必須初始化,初始化之后值就不能被修改,
10.Array與ArrayList有什么不一樣?
Array與ArrayList都是用來存盤資料的集合,ArrayList底層是使用陣列實作的, 但是arrayList對陣列進行了封裝和功能擴展,擁有許多原生陣列沒有的一些功能, 我們可以理解成ArrayList是Array的一個升級版,
11. Java 中的 Math. round(-1. 5) 等于多少?
等于 -1,因為在數軸上取值時,中間值(0.5)向右取整,所以正 0.5 是往上取整,負 0.5 是直接舍棄,
12. JDBC操作的步驟
1、加載資料庫驅動類
2、打開資料庫連接
3、執行sql陳述句
4、處理回傳結果
5、關閉資源
13. 在使用jdbc的時候,如何防止出現sql注入
使用 CallableStatement
14. 怎么在JDBC內呼叫一個存盤程序
使用PreparedStatement類,而不是使用Statement類
15. String 屬于基礎的資料型別嗎?
String 不屬于基礎型別,基礎型別有 8 種:byte、boolean、char、short、int、float、long、double,而 String 屬于物件,
16. Map有什么特點?
17. Java的IO流分為哪幾種?
18. 常用io類有那些?
19. 位元組流與字符流的區別
20. Java 中操作字串都有哪些類?它們之間有什么區別?
21. String str="i"與 String str=new String(“i”)一樣嗎?
22. 是否了解連接池,使用連接池有什么好處?
23. 你所了解的資料源技術有那些?使用資料源有什么好處?
24. 如何將字串反轉?
25. String 類的常用方法都有那些?
26. final,finally,finalize區別
27. final、finalize、finally,作用
28. 抽象類必須要有抽象方法嗎?
29. 普通類和抽象類有哪些區別?
30. 抽象類能使用 final 修飾嗎?
31. 介面和抽象類有什么區別?
32. 如果物件的參考被置為null,垃圾收集器是否會立即釋放物件占用的記憶體
33. 串行(serial)收集器和吞吐量(throughput)收集器的區別是什么?
34. Java 中 IO 流分為幾種?
35. BIO、NIO、AIO 有什么區別?
36. Files的常用方法都有哪些?
全部面試題及答案已整理好!!!!
下載鏈接:博主已將以下這些面試題整理成了一個面試手冊,是PDF版的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/388253.html
標籤:其他
上一篇:Log4j漏洞修復方案
下一篇:java的抽象類和介面
