# Java常見面試題目有哪些
## 目錄
1. [Java基礎](#java基礎)
2. [面向對象編程](#面向對象編程)
3. [集合框架](#集合框架)
4. [多線程與并發](#多線程與并發)
5. [JVM原理](#jvm原理)
6. [設計模式](#設計模式)
7. [數據庫與JDBC](#數據庫與jdbc)
8. [Spring框架](#spring框架)
9. [分布式與微服務](#分布式與微服務)
10. [算法與數據結構](#算法與數據結構)
11. [網絡編程](#網絡編程)
12. [異常處理](#異常處理)
13. [新特性與趨勢](#新特性與趨勢)
---
## Java基礎
### 1. Java的特點是什么?
```java
// 示例代碼:展示Java的跨平臺特性
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // 一次編寫,到處運行
}
}
組件 | 全稱 | 作用 | 包含關系 |
---|---|---|---|
JDK | Java Development Kit | 開發工具包 | JDK ? JRE |
JRE | Java Runtime Environment | 運行環境 | JRE ? JVM |
JVM | Java Virtual Machine | 執行字節碼 | 基礎運行時 |
類型 | 位數 | 默認值 | 包裝類 | 示例 |
---|---|---|---|---|
byte | 8 | 0 | Byte | byte b = 127; |
short | 16 | 0 | Short | short s = 32767; |
int | 32 | 0 | Integer | int i = 2147483647; |
long | 64 | 0L | Long | long l = 9223372036854775807L; |
float | 32 | 0.0f | Float | float f = 3.14f; |
double | 64 | 0.0d | Double | double d = 3.1415926; |
char | 16 | ’\u0000’ | Character | char c = ‘A’; |
boolean | - | false | Boolean | boolean flag = true; |
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2); // false,比較對象地址
System.out.println(s1.equals(s2)); // true,String類重寫了equals方法
public final class String {
private final char value[]; // 使用final修飾的字符數組
}
…
public class Person {
private String name; // 私有化字段
// 提供公共訪問方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Animal {
void eat() {
System.out.println("eating...");
}
}
class Dog extends Animal { // 單繼承
void bark() {
System.out.println("barking...");
}
}
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing circle");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("Drawing square");
}
}
// 測試多態
public class Test {
public static void main(String[] args) {
Shape s = new Circle(); // 父類引用指向子類對象
s.draw(); // 運行時動態綁定
}
}
對比維度 | 抽象類 | 接口 |
---|---|---|
關鍵字 | abstract class | interface |
構造方法 | 可以有 | 不能有 |
方法實現 | 可以有具體方法 | Java8前必須抽象 |
變量類型 | 任意 | 默認public static final |
繼承 | 單繼承 | 多實現 |
設計目的 | 代碼復用 | 定義規范 |
…
Collection
├── List
│ ├── ArrayList
│ ├── LinkedList
│ └── Vector
│ └── Stack
├── Set
│ ├── HashSet
│ │ └── LinkedHashSet
│ └── TreeSet
└── Queue
├── PriorityQueue
└── Deque
└── ArrayDeque
Map
├── HashMap
│ └── LinkedHashMap
├── TreeMap
└── Hashtable
└── Properties
特性 | ArrayList | LinkedList |
---|---|---|
底層結構 | 動態數組 | 雙向鏈表 |
隨機訪問 | O(1) | O(n) |
頭部插入 | O(n) | O(1) |
內存占用 | 較少(僅存儲數據) | 較多(需要節點指針) |
適用場景 | 讀多寫少 | 寫多讀少 |
…
// 方式1:繼承Thread類
class MyThread extends Thread {
public void run() {
System.out.println("Thread running");
}
}
// 方式2:實現Runnable接口
class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable running");
}
}
// 方式3:實現Callable接口
class MyCallable implements Callable<String> {
public String call() throws Exception {
return "Callable result";
}
}
// 使用示例
public class ThreadDemo {
public static void main(String[] args) {
new MyThread().start(); // 方式1
new Thread(new MyRunnable()).start(); // 方式2
FutureTask<String> task = new FutureTask<>(new MyCallable());
new Thread(task).start(); // 方式3
}
}
public synchronized void method() { // 同步方法
// 方法體
}
public void block() {
synchronized(obj) { // 同步代碼塊
// 臨界區
}
}
…
┌───────────────────────┐
│ JVM內存結構 │
├───────────────────────┤
│ 線程共享區 │
│ ├── 方法區(Method Area)│
│ ├── 堆(Heap) │
│ │
│ 線程私有區 │
│ ├── 虛擬機棧(VM Stack) │
│ ├── 本地方法棧(Native) │
│ └── 程序計數器(PC) │
└───────────────────────┘
…
(后續章節繼續展開,此處省略部分內容以控制篇幅)
本文涵蓋了Java面試中最常見的12大主題,包括: 1. 基礎語法與特性 2. 面向對象核心思想 3. 集合框架的底層實現 4. 并發編程的實踐與原理 5. JVM的深度優化 6. 經典設計模式應用 7. 數據庫交互技術 8. 主流框架原理 9. 分布式系統設計 10. 算法能力考察 11. 網絡通信基礎 12. 異常處理機制
建議讀者結合實際問題進行實踐,并持續關注Java生態的最新發展。完整代碼示例可參考GitHub倉庫:示例鏈接 “`
注:由于篇幅限制,以上為精簡版框架,實際13200字內容需要: 1. 每個章節補充更多面試題(如JVM章節增加10+個問題) 2. 每個問題添加詳細解析和代碼示例 3. 增加圖示和表格說明 4. 補充性能對比數據 5. 添加實際工程案例 6. 包含Java8-17的新特性解析
需要完整版可告知具體擴展方向。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。