Java基礎面試題全集

?

1. Java語言基礎

1.1 Java是什么?

? ? Java是一種廣泛使用的編程語言,最初由Sun Microsystems(現為Oracle公司的一部分)于1995年發布。它是一種面向對象的、基于類的、通用型的編程語言,旨在讓應用程序“編寫一次,到處運行”(Write Once, Run Anywhere)。

1.2 Java的主要特性有哪些?

? ? 平臺獨立性:通過Java虛擬機(JVM)實現跨平臺運行。

? ? 面向對象:支持類、繼承、多態等概念。

? ? 自動內存管理:垃圾回收機制自動管理內存。

? ? 安全性:通過安全模型和類加載機制保障。

? ? 強類型語言:變量必須明確聲明類型。

1.3 JDK、JRE、JVM的區別是什么?

? ? JDK(Java Development Kit):包含開發Java程序所需的全部工具,如編譯器、調試器等。

? ? JRE(Java Runtime Environment):運行時環境,包含JVM和Java核心類庫,用于執行Java程序。

? ? JVM(Java Virtual Machine):Java虛擬機,是Java程序的運行環境,負責將Java字節碼轉換為機器碼執行。

2. 數據類型與變量

2.1 Java中有哪些基本數據類型?

? ? 整數類型:byte, short, int, long

? ? 浮點類型:float, double

? ? 字符類型:char

? ? 布爾類型:boolean

2.2 變量作用域有哪些?

? ? 類變量(靜態變量):用static修飾,屬于類本身,所有實例共享。

? ? 實例變量:沒有static修飾,屬于類的實例。

? ? 局部變量:在方法或代碼塊中定義,只在定義它的代碼塊中有效。

2.3 解釋一下Java中的自動裝箱和拆箱?

? ? 自動裝箱:將基本數據類型轉換為對應的包裝類對象(如int到Integer)。

? ? 自動拆箱:將包裝類對象轉換為基本數據類型(如Integer到int)。

3. 運算符與表達式

3.1 Java中有哪些運算符?

? ? 算術運算符:+、-、*、/、%、++、--

? ? 賦值運算符:=、+=、-=、*=、/=

? ? 關系運算符:<、>、<=、>=、==、!=

? ? 邏輯運算符:&&、||、!

? ? 位運算符:&、|、^、~、<<、>>、>>>

? ? 條件運算符(三元運算符):條件 ? 表達式1 : 表達式2

? ? 字符串連接運算符:+

3.2 解釋一下短路邏輯運算符?

? ? 在邏輯與(&&)運算中,如果第一個操作數為false,則整個表達式立即返回false,不再計算第二個操作數。

? ? 在邏輯或(||)運算中,如果第一個操作數為true,則整個表達式立即返回true,不再計算第二個操作數。

4. 流程控制

4.1 Java中的循環結構有哪些?

? ? for循環:基于索引的循環。

? ? while循環:當條件為真時重復執行。

? ? do-while循環:至少執行一次,然后檢查條件。

4.2 break和continue的區別是什么?

? ? break:立即終止當前循環或switch語句。

? ? continue:跳過當前循環的剩余部分,直接進入下一次循環迭代。

4.3 switch語句的使用場景?

? ? 用于替代多個if-else if條件判斷,特別是當判斷條件是單個變量且為整型、字符型或枚舉類型時。

5. 數組與集合

5.1 數組與集合的區別是什么?

? ? 數組:固定大小,存儲相同類型的元素,訪問速度快。

? ? 集合:動態大小,可以存儲不同類型的對象,提供了豐富的操作方法。

5.2 Java集合框架主要包含哪些接口和類?

? ? 主要接口:List、Set、Map、Queue

? ? 主要實現類:ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap、LinkedList(也實現了Deque接口)

5.3 ArrayList與LinkedList的區別是什么?

? ? ArrayList:基于動態數組實現,查詢效率高,插入刪除效率低(尤其是中間位置)。

? ? LinkedList:基于鏈表實現,插入刪除效率高,查詢效率低。

6. 面向對象編程

6.1 面向對象編程的三大特性是什么?

? ? 封裝:隱藏對象的屬性和實現細節,僅公開必要的接口。

? ? 繼承:子類繼承父類的屬性和方法,實現代碼復用。

? ? 多態:允許將子類對象視為父類對象使用,實現接口的動態綁定。

6.2 抽象類與接口的區別是什么?

? ? 抽象類可以有實現的方法,接口中的所有方法都是抽象的(Java 8以后接口可以有默認方法和靜態方法)。

? ? 一個類只能繼承一個抽象類,但可以實現多個接口。

? ? 抽象類主要用于定義類的模板,接口用于定義功能的契約。

6.3 什么是內部類?它有哪些類型?

? ? 內部類:定義在另一個類內部的類。

? ? 類型:成員內部類、局部內部類、匿名內部類、靜態內部類。

7. 異常處理

7.1 Java中的異常處理機制是怎樣的?

? ? 使用try-catch-finally結構捕獲和處理異常。

? ? throw用于主動拋出異常,throws用于聲明方法可能拋出的異常。

? ? 自定義異常類通常繼承自Exception或RuntimeException。

7.2 finally塊中的代碼什么時候執行?

? ? finally塊中的代碼總是會在try或catch塊之后執行,無論是否發生異常,除非在執行try或catch塊時程序終止(如System.exit()調用)。

8. 輸入輸出與文件操作

8.1 Java中的IO流分為哪幾類?

? ? 按功能分:輸入流(InputStream/Reader)和輸出流(OutputStream/Writer)。

? ? 按處理單位分:字節流(InputStream/OutputStream)和字符流(Reader/Writer)。

? ? 按流向分:節點流和處理流。

8.2 如何讀取和寫入文件?

? ? 使用FileReader/FileWriter、BufferedReader/BufferedWriter進行字符讀寫。

? ? 使用FileInputStream/FileOutputStream、BufferedInputStream/BufferedOutputStream進行字節讀寫。

9. 多線程與并發

9.1 什么是線程?Java如何實現多線程?

? ? 線程是CPU調度的基本單位,用于并發執行任務。

? ? Java通過繼承Thread類或實現Runnable接口來創建線程。

9.2 解釋一下線程的生命周期?

? ? 新建(New)、就緒(Runnable)、運行(Running)、阻塞(Blocked)、等待(Waiting)、時間等待(Timed Waiting)、終止(Terminated)。

9.3 同步與異步的區別是什么?

? ? 同步:多個任務按順序執行,一個任務完成后另一個任務才開始。

? ? 異步:多個任務并發執行,不等待上一個任務完成。

9.4 Java中如何實現線程同步?

? ? 使用synchronized關鍵字修飾方法或代碼塊。

? ? 使用顯式鎖(如ReentrantLock)。

? ? 使用原子變量類(如AtomicInteger)。

10. 網絡編程

10.1 Java網絡編程主要涉及哪些類?

? ? Socket類:用于客戶端網絡通信。

? ? ServerSocket類:用于服務器端監聽客戶端連接。

? ? InetAddress類:表示IP地址。

? ? URL和URLConnection類:用于處理網絡資源的訪問。

10.2 什么是TCP/IP協議?

? ? TCP(傳輸控制協議):面向連接的、可靠的、基于字節流的傳輸層通信協議。

? ? IP(互聯網協議):負責為互聯網上的每一臺計算機分配一個唯一的地址。

11. Java泛型

11.1 泛型的好處是什么?

? ? 提高代碼重用性,減少類型轉換錯誤。

? ? 編譯時類型檢查,提高代碼安全性。

11.2 泛型的類型擦除是什么?

? ? Java泛型是通過類型擦除來實現的,即在編譯期間將泛型類型信息擦除,替換為原始類型(通常是Object),并在必要時插入類型轉換代碼。

12. 注解與反射

12.1 什么是注解?

? ? 注解是Java提供的一種對代碼進行標注的機制,可以用于編譯時、加載時或運行時處理。

12.2 反射機制是什么?

? ? 反射允許程序在運行時動態地獲取類的內部信息(如屬性、方法),并能直接操作任意對象的內部屬性及方法。

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

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

相關文章

Selenium遇到Exception自動截圖

# 隨手小記 場景&#xff1a;測試百度&#xff1a; 點擊新聞&#xff0c;跳轉到新的窗口&#xff0c;找到輸入框&#xff0c;輸入“hello,world" 等到輸入框的內容是hello,world, 這里有個錯誤&#xff0c;少了一個] 后來就實現了錯誤截圖的功能&#xff0c;可以參考 …

【神經網絡】python實現神經網絡(一)——數據集獲取

一.概述 在文章【機器學習】一個例子帶你了解神經網絡是什么中&#xff0c;我們大致了解神經網絡的正向信息傳導、反向傳導以及學習過程的大致流程&#xff0c;現在我們正式開始進行代碼的實現&#xff0c;首先我們來實現第一步的運算過程模擬講解&#xff1a;正向傳導。本次代…

Sentinel 筆記

Sentinel 筆記 1 介紹 Sentinel 是阿里開源的分布式系統流量防衛組件&#xff0c;專注于 流量控制、熔斷降級、系統保護。 官網&#xff1a;https://sentinelguard.io/zh-cn/index.html wiki&#xff1a;https://github.com/alibaba/Sentinel/wiki 對比同類產品&#xff1…

manus本地部署方法研究測試

Manus本地部署方法&#xff0c;Manus邀請碼實在太難搞了&#xff0c;昨晚看到有一個團隊&#xff0c;5個人3個小時&#xff0c;一個完全免費、無需排隊等待的OpenManus就做好了。 由于也是新手&#xff0c;找了好幾輪&#xff0c;實在是沒有找到合適的部署方法&#xff0c;自己…

FreeRTOS第15篇:FreeRTOS鏈表實現細節03_List_t與ListItem_t的奧秘

文/指尖動聽知識庫-星愿 文章為付費內容,商業行為,禁止私自轉載及抄襲,違者必究!!! 文章專欄:深入FreeRTOS內核:從原理到實戰的嵌入式開發指南 1 FreeRTOS列表的核心數據結構 FreeRTOS的列表實現由兩個關鍵結構體組成:List_t(列表)和ListItem_t(列表項)。它們共同…

gzip壓縮

什么是Gzip 前端優化&#xff1a;開啟Gzip壓縮_前端開啟gzip壓縮-CSDN博客 Gzip是一種文件壓縮算法&#xff0c;減少文件大小&#xff0c;節省帶寬從而提減少網絡傳輸時間&#xff0c;網站會更快地加載。 如何判斷是否開啟&#xff1a; 請求頭&#xff1a;服務端會通過客戶…

機器學習在地圖制圖學中的應用

原文鏈接&#xff1a;https://www.tandfonline.com/doi/full/10.1080/15230406.2023.2295948#abstract CSDN/2025/Machine learning in cartography.pdf at main keykeywu2048/CSDN GitHub 核心內容 本文是《制圖學與地理信息科學》特刊的擴展評論&#xff0c;系統探討了機…

智慧消防新篇章:4G液位/壓力傳感器,筑牢安全防線!

火災無情&#xff0c;防患未“燃”&#xff01;在智慧消防時代&#xff0c;如何實現消防水系統的實時監測、預警&#xff0c;保障人民生命財產安全&#xff1f;山東一二三物聯網深耕物聯網領域&#xff0c;自主研發4G液位、4G壓力智能傳感器&#xff0c;為智慧消防水位、水壓無…

set、LinkedHashSet和TreeSet的區別、Map接口常見方法、Collections 工具類使用

DAY7.2 Java核心基礎 想學習Collection、list、ArrayList、Set、HashSet部分的小伙伴可以轉到 7.1集合框架、Collection、list、ArrayList、Set、HashSet和LinkedHashSet、判斷兩個對象是否相等文章查看 set集合 在set集合中&#xff0c;處理LinkedHashSet是有序的&#xf…

windows:curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)

目錄 1. git update-git-for-windows 報錯2. 解決方案2.1. 更新 CA 證書庫2.2. 使用 SSH 連接&#xff08;推薦&#xff09;2.3 禁用 SSL 驗證&#xff08;不推薦&#xff09; 1. git update-git-for-windows 報錯 LenovoLAPTOP-EQKBL89E MINGW64 /d/YHProjects/omni-channel-…

《深度剖析架構蒸餾與邏輯蒸餾:探尋知識遷移的差異化路徑》

在人工智能模型優化的前沿領域&#xff0c;架構蒸餾與邏輯蒸餾作為知識蒸餾的關鍵分支&#xff0c;正引領著模型小型化與高效化的變革浪潮。隨著深度學習模型規模與復雜度的不斷攀升&#xff0c;如何在資源受限的情況下&#xff0c;實現模型性能的最大化&#xff0c;成為了學術…

先序二叉樹的線索化,并找指定結點的先序后繼

#include<stdio.h> #include<stdlib.h> #define elemType char //線索二叉樹結點 typedef struct ThreadNode{ elemType data; struct ThreadNode *lchild,*rchild; int ltag,rtag;//用來判斷一個結點是否有線索 }ThreadNode,*ThreadTree; //全局變量…

螞蟻集團轉正實習大模型算法崗內推

1.負責以大模型為代表的A轉術能力的建設和優化&#xff0c;打造業界領先的A(技術系統&#xff0c;主要職責包括A系統結構設計、RAG 系統開發、大模型凱練數據構建、大模型能力評測、大模型準理效果和效率優化等 2.緊密跟蹤、探索大模型方向前沿技術&#xff0c;依托豐富目體系化…

未授權漏洞大賞

ActiveMQ未授權訪問漏洞 漏洞描述 Apache ActiveMQ是美國阿帕奇&#xff08;Apache&#xff09;軟件基金會所研發的一套開源的消息中間件&#xff0c;它支持Java消息服務、集群、Spring Framework等。 Apache ActiveMQ管理控制臺的默認管理用戶名和密碼分別為admin和admin&am…

Python包結構與 `__init__.py` 詳解

1. 什么是 __init__.py&#xff1f; __init__.py 是Python包的標識文件&#xff0c;它告訴Python解釋器這個目錄應該被視為一個包&#xff08;Package&#xff09;。這個文件可以為空&#xff0c;也可以包含初始化代碼。 1.1 基本作用 包的標識 將普通目錄轉換為Python包允許…

Web前端開發——HTML基礎下

HTML語法 一表格1.基本格式2.美化表格合并居中屬性 二表單1.input2.select3.textarea4.button5.date6.color7.checkbox8.radio9.range10.number 一表格 1.基本格式 HTML表格由<table>標簽定義 其中行由<tr>標簽定義&#xff0c;單元格由<td>定義。我們先來…

小程序事件系統 —— 33 事件傳參 - data-*自定義數據

事件傳參&#xff1a;在觸發事件時&#xff0c;將一些數據作為參數傳遞給事件處理函數的過程&#xff0c;就是事件傳參&#xff1b; 在微信小程序中&#xff0c;我們經常會在組件上添加一些自定義數據&#xff0c;然后在事件處理函數中獲取這些自定義數據&#xff0c;從而完成…

安卓設備root檢測與隱藏手段

安卓設備root檢測與隱藏手段 引言 安卓設備的root權限為用戶提供了深度的系統控制能力&#xff0c;但也可能帶來安全風險。因此&#xff0c;許多應用&#xff08;如銀行軟件、游戲和流媒體平臺&#xff09;會主動檢測設備是否被root&#xff0c;并限制其功能。這種對抗催生了ro…

如何在Ubuntu上直接編譯Apache Doris

以下是在 Ubuntu 22.04 上直接編譯 Apache Doris 的完整流程&#xff0c;綜合多個版本和環境的最佳實踐&#xff1a; 注意&#xff1a;Ubuntu的數據盤VMware默認是20G&#xff0c;編譯不夠用&#xff0c;給到50G以上吧 一、環境準備 1. 安裝系統依賴 # 基礎構建工具鏈 apt i…

vuejs相關鏈接和格式化插件推薦

vue官網&#xff1a; https://cn.vuejs.org/ 配合路由設置&#xff1a; https://router.vuejs.org/zh/guide/ element plus (vue3) | element UI (vue2)&#xff1a; https://element-plus.org/zh-CN/#/zh-CN 構建工具vite&#xff1a; https://cn.vitejs.dev/ 右鍵選擇…