Java高頻面試題1:Java SE

一、Java概述

1. Java語言的特點?

  • 面向對象:封裝、繼承、多態。
  • 跨平臺:通過JVM實現“一次編寫,到處運行”。
  • 內存管理:自動垃圾回收(GC),避免手動內存管理。
  • 多線程:內置多線程支持,通過Thread類和Runnable接口實現。

2. JVM、JDK、JRE的區別?

組件描述包含內容
JVMJava虛擬機,負責執行字節碼解釋器、即時編譯器(JIT)
JREJava運行時環境JVM + 核心類庫(如java.lang
JDKJava開發工具包JRE + 編譯器(javac)、調試工具等

二、基礎語法

3. Java基本數據類型有哪些?

  • 數值型byteshortintlong(整數);floatdouble(浮點數)。
  • 字符型char
  • 布爾型boolean

4. 自動拆箱與裝箱?

  • 裝箱:基本類型 → 包裝類(如intInteger)。
  • 拆箱:包裝類 → 基本類型(如Integerint)。
  • 緩存機制Integer緩存范圍為-128~127,超出范圍會創建新對象。

三、面向對象

5. 面向對象的三大特性?

  • 封裝:數據和方法綁定,通過訪問修飾符(publicprivate等)控制訪問。
  • 繼承:子類復用父類屬性和方法,使用extends關鍵字。
  • 多態:父類引用指向子類對象,運行時動態決定調用的方法。

6. 抽象類與接口的區別?

特性抽象類接口
實例化不能直接實例化不能直接實例化
方法可包含抽象和非抽象方法所有方法均為抽象方法
繼承單繼承多實現

四、字符串處理

7. String、StringBuilder、StringBuffer的區別?

特性StringStringBuilderStringBuffer
不可變性不可變(線程安全)可變(非線程安全)可變(線程安全)
性能拼接效率低(生成新對象)高(直接操作數組)高(線程安全但稍慢)
場景常量字符串單線程下頻繁拼接多線程下頻繁拼接

8. String的intern()方法作用?

  • 將字符串對象放入字符串常量池。若池中已存在相同內容的字符串,則返回池中的引用;否則,將當前對象加入池中并返回。

9. String的不可變性有什么好處?

  • 安全性(如作為HashMap的鍵)。
  • 字符串常量池優化內存。
  • 哈希值固定,提高哈希表效率。

五、異常處理

10. 異常的分類?

  • Error:JVM錯誤(如OutOfMemoryError),程序無法處理。
  • Exception
    • 編譯時異常(Checked):需顯式處理(如IOException)。
    • 運行時異常(Unchecked):無需顯式處理(如NullPointerException)。

11. finally塊的執行順序?

  • try中的return語句會先暫存返回值,再執行finally,最后返回暫存值。
  • finally中也有return,會覆蓋try中的返回值。

六、IO與網絡

12. BIO、NIO、AIO的區別?

模型阻塞性核心機制適用場景
BIO同步阻塞線程 per 連接連接數少且長連接
NIO同步非阻塞通道 + 選擇器連接數多且短連接
AIO異步非阻塞事件 + 回調高并發、長連接

13. 序列化的作用?

  • 將對象轉換為字節流,用于存儲或網絡傳輸。需實現Serializable接口,transient關鍵字可忽略某些字段。

14. 字節流和字符流的區別?

  • 字節流(如FileInputStream)處理二進制數據,字符流(如FileReader)處理文本數據。
  • 字符流內部通過字節流實現,自動處理編碼轉換。

七、多線程與并發

15. 線程的生命周期?

  • 新建(New) → 就緒(Runnable) → 運行(Running) → 阻塞(Blocked/Waiting/Timed Waiting) → 終止(Terminated)。

16. wait()和sleep()的區別?

  • wait():釋放鎖,需在synchronized塊中調用。
  • sleep():不釋放鎖,可在任意位置調用。

八、 反射與注解

17. 什么是反射?反射的應用場景有哪些?

  • 反射允許在運行時動態獲取類信息、調用方法、訪問字段。
  • 應用場景:框架開發(如Spring)、單元測試、動態代理。

18. 常見的Java注解有哪些?

  • 內置注解:@Override(重寫方法)、@Deprecated(過時)、@SuppressWarnings(抑制警告)。
  • 元注解:@Retention(生命周期)、@Target(作用目標)。
  • 框架注解:@Component(Spring)、@Autowired(依賴注入)。

九、其他高頻問題

19. ==和equals的區別?

  • ==:比較引用地址(基本類型比較值)。
  • equals():默認比較引用地址,常被重寫為比較內容(如String)。

20. 為什么重寫equals必須重寫hashCode?

  • 哈希表(如HashMap)通過hashCode定位存儲位置,若equals相等但hashCode不等,會導致數據不一致。

21. 泛型的作用?

  • 類型安全:編譯期檢查類型錯誤。
  • 代碼復用:減少強制類型轉換,提高可讀性。

十、代碼實戰

22. 以下代碼輸出什么?

Integer a = 127;
Integer b = 127;
Integer c = 128;
Integer d = 128;
System.out.println(a == b); // true(緩存范圍內)
System.out.println(c == d); // false(超出緩存范圍)

23. finally塊中的return會覆蓋try中的return嗎?

public static int test() {try {return 1;} finally {return 2; // 最終返回2}
}

總結:以上題目覆蓋Java基礎核心知識點,建議結合實際項目經驗,重點掌握String特性、異常處理、多態、IO模型等模塊。面試時需結合代碼示例說明原理,展示對底層機制的理解。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75289.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75289.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75289.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于RapidIO接口的DSP+GPU工業AI實時計算解決方案

基于RapidIO接口的DSPGPU工業AI實時計算解決方案是一種面向高性能、低延遲工業應用的異構計算架構,適用于工業自動化、機器視覺、預測性維護、機器人控制等場景。以下是該方案的核心設計思路和技術要點: 1. 方案背景與目標 工業需求: 工業…

SQL DB 數據類型

SQL DB 數據類型 引言 在數據庫管理系統中,數據類型是定義和存儲數據的方式。SQL(結構化查詢語言)數據庫中的數據類型決定了數據的存儲格式、大小、取值范圍以及如何處理數據。合理選擇和使用數據類型對于確保數據庫性能、數據完整性和應用程序的準確性至關重要。 SQL 數…

常見電源模塊設計

目錄 1. 5V電源模塊 2. 3.3V電源模塊 3. 1.9V電源模塊 4. 220V轉12V電源模塊 1. 5V電源模塊 參考電路 電路說明: 這個電路采用的是穩壓芯片78L05,我是用的12V的電源模塊轉成為5V,為后續的供電。 2. 3.3V電源模塊 參考電路: 電路說明…

python操作es

1、常用操作 ### 創建索引 bash curl -u elastic:123 -X PUT -H "Content-Type: application/json" -d mapping.json "http://0.0.0.0:9200/ai_kg_extraction_new_lower_tag_index" ### 刪除索引 bash curl -u elastic:123 -X DELETE "http://0.0…

記一個.NET AOT交叉編譯時的坑

記一個.NET AOT交叉編譯時的坑 背景: 使用.NET9開發的Avalonia項目需要部署到Linux-arm64 踩坑: 根據官方AOT交叉編譯文檔配置后執行打包 dotnet publish -r linux-arm64提示error : The PrivateSdkAssemblies ItemGroup is required for _ComputeA…

【Linux篇】探索進程地址空間:計算機背后的虛擬世界

進程地址空間的奧秘:讓你理解程序如何在計算機中生存 一. 程序地址空間1.1 基本概念1.2 虛擬內存管理1.3 為什么存在虛擬地址空間1.3.1 意義 2. 最后 本文將介紹進程地址空間的基本概念與結構,幫助讀者理解操作系統如何管理和分配內存。進程地址空間指的…

17查詢文檔的方式

目錄 1.鼠標放在你要查詢的地方或者選中,按FnF1 2Assistant文檔 3幫助菜單界面 1.鼠標放在你要查詢的地方或者選中,按FnF1 2Assistant文檔 3幫助菜單界面 大家一定要有 查詢文檔 的意識!! 未來實際開發中,一定會用到很多的第三方庫和框架的. 很可能用到的…

壹起航:引領中國工廠邁向全球市場的先鋒

在全球化的浪潮中,中國工廠正積極尋求拓展海外市場的新機遇。面對激烈的國際競爭,如何脫穎而出,成為行業翹楚?壹起航憑借其深厚的行業積淀和創新的營銷理念,為中國工廠提供了全方位的出海解決方案。 一、構建國際化外…

“數據導航儀”:企業遷移知識庫如何賦能精準決策

在全球化與區域經濟一體化的浪潮下,企業遷移已成為經濟發展的重要現象。 無論是為了拓展市場、降低成本,還是為了尋找更好的政策環境,企業遷移都牽動著無數從業者的心。 然而,面對海量且分散的企業遷移信息,金融機構…

理解激活函數,多個網絡層之間如何連接

1. 激活函數如何在兩個層之間作用 如果不在兩個層之間添加激活函數,模型將無法學習非線性關系,表現出像線性模型一樣的局限性。 LeakyReLU(0.2) 是一個激活函數,它的作用是對每一層的輸出進行非線性轉換。激活函數通常在神經網絡中用于增加網…

紅帽Linux怎么重置密碼

完整流程 ●重啟操作系統,進入啟動界面 ●然后按進入選擇項界面 ●找到linux單詞開頭的那一行,然后移動到該行末尾(方向鍵移動或者使用鍵盤上的end),在末尾加入rd.break ●按ctrl x進入rd.break模式 ●在該模式下依次…

pycharm與python版本

python 3.6-3.9 pycharm 2021版本搭配最好 python 3.8 pycharm 2019版本搭配最好 pycharm各版本下載

Java系統集成AI大模型:是否需要訓練模型及實現路徑

越來越多的Java系統希望通過集成AI大模型能力來提升智能化水平。然而,許多開發者在面對這一任務時,常常會有一個疑問:是否需要訓練AI大模型才能實現這一目標?本文將深入探討這一問題,并提供詳細的解決方案。 一、是否…

論文閱讀筆記:Denoising Diffusion Implicit Models (3)

0、快速訪問 論文閱讀筆記:Denoising Diffusion Implicit Models (1) 論文閱讀筆記:Denoising Diffusion Implicit Models (2) 論文閱讀筆記:Denoising Diffusion Implicit Models &#xff08…

【Linux】Linux 系統啟動流程詳解

1. BIOS/UEFI 階段 硬件自檢(POST) BIOS/UEFI 執行硬件檢查(內存、CPU、外設等)。若硬件異常,通過蜂鳴碼或屏幕提示錯誤。 選擇啟動設備 按配置順序(硬盤、U盤、網絡等)尋找可引導設備。BIOS&a…

C++封裝、繼承、多態(虛函數)

目錄 1、封裝 2、繼承 繼承方式: (1)公有繼承;public (2)保護繼承;protected (3)私有繼承;private 菱形繼承: 同名隱藏? 含義…

藍橋杯沖刺:一維前綴和

系列文章目錄 藍橋杯系列:一維前綴和 文章目錄 系列文章目錄前言一、暴力的寫法:二、一維前綴和的模板: 具體實現: 三、具體例題:求和 1.題目參考:2.以下是具體代碼實現: 總結 前言 上次我介紹…

使用UDP建立連接,會存在什么問題?

使用UDP建立連接,會存在可靠性、有序性、連接狀態管理等方面的問題: 1、數據傳輸不可靠: UDP沒有確認和重傳機制,發送方發送數據后,不會等待接收方的確認消息。這意味著如果數據在傳輸過程中丟失,發送方不…

YOLOv5配置訓練以及華為昇騰910B推理

參考文章: 保姆式yolov5教程,訓練你自己的數據集 - 知乎 Windows 10|11下安裝mmyolo-0.5.0版本 - 知乎 Ubuntu22.04安裝教程&基于華為Ascend AI處理器的om模型atc轉換環境安裝_ubuntu安裝atc工具-CSDN博客嵌入式AI---在華為昇騰推理自己的yolov5目標…

基于yolov11的汽車損傷檢測系統python源碼+onnx模型+評估指標曲線+精美GUI界面

【算法介紹】 基于YOLOv11的汽車損傷檢測系統是一種先進的計算機視覺技術,旨在快速準確地識別汽車的各種損傷類型。該系統利用YOLOv11模型的強大性能,實現了對車輛損傷的精確檢測與分類。 該系統能夠識別的損傷類型包括裂紋(crack&#xff…