首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 面試核心知識點大全

     編輯:Java 相關知識

基礎語法與特性

equals 與 hashCode 契約

  • 未重寫 equals 時比較記憶體地址
  • 重寫 equals 必須重寫 hashCode
  • 集合判斷重複:先比 hashCode,再比 equals

final 關鍵字

  • 修飾類:不可繼承
  • 修飾方法:不可重寫
  • 修飾基本類型:值不可變;修飾引用類型:引用地址不可變

併發編程

synchronized vs ReentrantLock

特性synchronizedReentrantLock
實現層級JVM 層面代碼層面
異常釋放鎖自動釋放需在 finally 中手動 unlock
高併發性能下降明顯保持穩定
可中斷不可中斷支援 lockInterruptibly

ReentrantLock 獲取鎖方式

  • lock():阻塞直到獲取
  • tryLock():非阻塞,立即返回結果
  • tryLock(timeout, unit):超時等待
  • lockInterruptibly():可被中斷

volatile 關鍵字

  • 保證可見性:強制從主內存讀寫
  • 不保證原子性
  • 適用場景:寫入不依賴舊值,無共享不變式

ThreadLocal 原理

為每個線程提供獨立副本,實現線程隔離,避免同步開銷。

wait() vs sleep()

  • sleep:Thread 方法,不釋放鎖,時間到自動恢復
  • wait:Object 方法,釋放鎖,需 notify/notifyAll 喚醒

集合框架

HashMap 原理 (JDK 8)

  • 數組 + 鏈表 + 紅黑樹
  • null key 固定存放 table[0]
  • 擴容機制:負載因子 0.75,容量翻倍

ConcurrentHashMap 分段鎖

  • Segment 數組,每段獨立鎖
  • 跨段操作需按順序鎖定所有段
  • size() 需鎖定全表

JVM 與類加載

類加載器層級

  • Bootstrap ClassLoader:加載核心庫 (rt.jar)
  • Extension ClassLoader:加載擴展庫
  • App ClassLoader:加載應用類路徑

雙親委派模型保證核心類不被篡改,提升安全性。

反射機制

  • Class:類元數據
  • Field/Method/Constructor:成員結構
  • 獲取 Class 對象三種方式:Class.forName()、.class、getClass()

Web 基礎

九大內置對象

request、response、session、application、out、page、config、exception、pageContext

XML 解析方式

  • DOM:樹結構,佔用內存大,適合隨機訪問
  • SAX:事件驅動,流式讀取,適合順序訪問
  • StAX:拉取式解析,性能與易用性最佳

經典算法題

斐波那契數列

// 遞歸
public static long recursive(int n) {
    if (n <= 0) return 0;
    if (n == 1) return 1;
    return recursive(n-1) + recursive(n-2);
}

// 迭代
public static long loop(int n) {
    if (n <= 0) return 0;
    long a = 0, b = 1;
    for (int i = 2; i <= n; i++) {
        long sum = a + b;
        a = b;
        b = sum;
    }
    return b;
}

單例模式寫法

雙重檢查鎖、靜態內部類、枚舉等多種實現方式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved