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

Java 程式員面試陷阱大全:核心概念辨析

     編輯:Java 程式設計入門

final、finally、finalize 三者區別

關鍵字類型說明
final修飾符修飾類:不可繼承;修飾方法:不可覆寫;修飾變量:不可變更(引用不可變,對象內容可變),聲明時必須初始化
finally異常處理塊try-catch-finally 中的 finally 塊,異常拋出後執行清理代碼(無論是否捕獲異常均執行)
finalize()Object 方法垃圾回收前由 GC 調用,用於釋放非內存資源(如文件句柄、數據庫連接)。不保證一定執行,不推薦依賴

Anonymous Inner Class(匿名內部類)能力

  • 不可 extends 其他類(隱式繼承 Object 或實現接口)
  • 可 implements 一個接口(實際上是實現該接口的匿名類)
  • 本質:無名內部類,常用於事件監聽器、線程創建等場景

Static Nested Class vs Inner Class

  • Nested Class:C++ 風稱呼;Inner Class:Java 術語
  • 最大區別:Inner Class 隱式持有外部類引用,可直接訪問外部實例成員;Static Nested Class 無此引用
  • 靜態內部類特點:
    1. 創建實例不需外部類實例
    2. 無法從靜態內部類實例直接訪問外部類實例成員

& vs &&

  • &:位運算符(按位與),也可作邏輯與但不短路
  • &&:邏輯與運算符,具備短路特性(左側為 false 時右側不執行)

HashMap vs Hashtable

特性HashMapHashtable
繼承/實現Map 接口Map 接口、Dictionary 類
同步性非同步(非線程安全)同步(線程安全)
null 鍵/值允許一個 null key、多個 null value不允許 null key/value
性能較快較慢(同步開銷)
遍歷方式Iterator(fail-fast)Enumeration + Iterator

現代開發推薦 HashMap + 外部同步或 ConcurrentHashMap。

Collection vs Collections

  • Collection:java.util 下的頂層接口,List/Set/Queue 父接口
  • Collections:java.util 下的工具類,提供靜態方法(排序、查找、同步包裝等)

assert 斷言使用指南

assert (a > 0); // a <= 0 拋出 AssertionError
assert expr1 : expr2; // expr2 為診斷信息
  • 用於調試/測試階段,驗證「理應為真」的假設
  • 默認禁用,編譯需 -source 1.4,運行啟用 -ea/-enableassertions
  • 不應用於:public 方法參數檢查(無論斷言是否啟用均須檢查)、改變程序狀態的操作
  • 適用於:private 方法參數驗證、後置條件檢查、不可達代碼路徑標記

GC (Garbage Collection) 基礎

  • GC = 垃圾收集器,自動管理內存,程式員無需手動釋放
  • 可請求 GC:System.gc()、Runtime.getRuntime().gc()(僅建議,不保證立即執行)
  • 優勢:提高開發效率、保護程序完整性(安全策略一環)
  • 開銷:CPU 時間、算法不完美可能遺漏垃圾(現代算法已大幅改善)

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