java面試題-基礎

簡單理解面向對象

面向 對象 (Object Oriented)是 軟件開發方法 ,一種編程範式 對應的還有 面向過程,面向函數
是對現實世界的抽象和模型化
用代碼做現實世界的對照

1
2
3
4
5
6
7
⾯向過程 :⾯向過程性能⽐⾯向對象⾼。 因爲類調⽤時需要實例化,開銷⼤,比較消
耗資源,所以當性能是最重要的考量因素的時候,⽐如單⽚機、嵌⼊式開發、Linux/Unix 等
⼀般採⽤⾯向過程開發。但是,⾯向過程沒有⾯向對象易維護、易復⽤、易擴展。

⾯向對象 :⾯向對象易維護、易復⽤、易擴展。 因爲⾯向對象有封裝、繼承、多態性的特
性,所以可以設計出低耦合的系統,使系統更加靈活、更加易於維護。但是,⾯向對象性能
⽐⾯向過程低。

JAVA語言有哪些優點,那些缺點

優點
支持多線程,垃圾自動回收,面向對象,跨平臺

缺點
面向對象,運行速度慢,容易被反編譯,啓動時間慢,屬於高級語言不支持底層操作

JDK與JRE

JDK 開發環境,包含編譯器,JRE的所有功能
JRE 運行環境,包含JVM,JAVA類庫

JVM

JVM是用來運行JAVA編譯之後的字節碼

重寫與重載

重寫 是覆蓋原有方法
重載是同名不同個數或類型的入參

String StringBuffer 和 StringBuilder 的區別是什麼?

StringBuffer 對方法加了同步鎖,線程安全
StringBuilder 未加鎖,現成不安全

String 爲什麼是不可變的?

因爲在string 中 存儲數據的句柄用了 final 修飾,成員變量值不可改變
String s=”1”;s=”2”; 中創建了兩個對象

== 與 equals(重要)

== 比較相等,判斷兩個對象是不是同一個對象,基本類型比較的是值,引用類型比較的是內存地址
默認情況下 equals()等價與==

hasCode

又稱散列碼 ,對數據進行摘要,提取指紋,具有 以下特性
對相同數據運算,結果相同
對不同數據運算,結果長度相同
運算單向不可逆

(重點) JAVA的方法參數只有值傳遞

形參只是實參的一個copy

如果形參的實際引用變了,實參不變
如果形參的成員變量變了,實參跟着改變

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class Main {
public static class AAA{
public String a;
AAA(){

}
}
public static void main(String[] args) {
System.out.println("Hello, World");
AAA aa=new AAA();
aa.a="1";
System.out.println(aa);
System.out.println(aa.a);
test(aa);
System.out.println(aa.a);

}

public static void test(AAA a){
a=new AAA();
a.a="2";
System.out.println(a);
}
}

------
輸出結果
Hello, World
Main$AAA@6ff3c5b5
1
Main$AAA@3764951d
1

簡述線程、程序、進程的基本概念。以及他們之間關係是什麼?

系統運行程序到停止就是一個進程創建到消亡的過程,而線程則是進程的更小單位

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章