JAVA基礎八股復習

1.局部變量一般存放在棧中,成員變量一般存放在堆中
2.什么是多態?談談對多態的理解?

在面向對象語言中,接口的多種不同的實現方式即為多態。用白話來說,就是多個對象調用同一個方法,得到不同的結果。
多態中存在向下轉型是為了調用子類特有的方法。一般需要先向上轉型,再經過instanceof判斷,再進行向下轉型

3.談一談深拷貝,淺拷貝和引用拷貝的區別?

引用拷貝是多個對象指向同一內存地址,操作其中一個變量會影響其他變量。淺拷貝創建新對象,但是對象中引用類型成員仍然指向原對象,修改了會互相影響,深拷貝則是完全修改,互不影響,重寫clone方法,需要自己手動添加引用類型變量的復制邏輯。

4.Object類的常見方法有哪些?

  1. getClass方法,獲取當前運行對象的Class對象
    2.hashCode 返回對象的哈希碼
    3.equals,比較2個對象的內存地址是否相同
    4.clone() 返回當前對象的一份拷貝
    5.toString 返回類全限定名@對象哈希碼的十六進制表示
    6.finiliaze()實力被垃圾回收時候觸發的操作

5.== 和equals的區別?

1.== 基本數據類型比較值,引用類型比較地址
2.equals用于引用數據類型,一般是需要重寫后比較值是否相等

6.hashCode有什么用?為什么需要有hashCode?

hashCode是為了獲取哈希碼。哈希碼是為了或許哈希表中的索引位置
把對象加入hashset,先計算hashcode,如果hashset中沒有一致的就加入,有一致的再計算下equals判斷是否真的存在,大大減少了equals的判斷
hashcode和equals都是為了判斷對象是否相等

7.為什么重寫equals時同時要重寫hashCode?

如果重寫了equals沒有重寫hashCode,會導致equals判斷相等,hashCode判斷不一樣,如果加入hashset就可能倒置出現重復元素。
equals判斷兩個對象是相等的,那么hashCode也要相等
hashCode相等,也不一定是同一個對象,可能存在哈希碰撞

8.String,StringBuilder,StringBuffer之間的區別?

1.String修飾的變量是不可變的,修改后是創建一個新對象并返回
2.StringBuilder線程不安全,不會返回新對象,是在原有的對象上進行操作
3.StringBuffer是線程安全的,原因是底層用了synchronied修飾(效率折中)
4.StringBuilder和StringBuffer都繼承自AbstractStringBuilder
5.String不能被修改的原有,保存字符串的數組被final修飾且是私有的,String類沒有暴露修改他的方法
String類被final修飾不能被繼承

9.字符串常量池了解嗎?

字符串常量池是JVM為了提升性能和減少內存消耗針對字符串(String類)專門開辟的一塊區域,主要目的是為了避免字符串的重復創建

10.String的intern()方法有什么作用?

1.是一個本地方法(native),處理字符串常量池中字符串的引用,常量池中有會直接返回該對象的引用,否則在常量池中先創建再引用

11.Exception和Error的區別是什么?

屬于Throwable的子類。
Exception屬于程序本身可以處理的異常,可以通過catch進行捕獲。Exception又分為受檢查異常(必須處理)和不受檢查異常(可以不處理)
Error屬于程序無法處理的錯誤,不建議通過catch捕獲,如虛擬機運行錯誤/內存不足

12.Checked Exception和Unchecked Execption有什么區別?

checked Execption 受檢查異常,如果沒有被catch或者throw處理的話,就沒辦法通過編譯。比如IO相關,SQLEXecption等
unchecked execption不受檢查異常,不處理也可以通過正常的編譯, RunntimeExecption及其子類。空指針,算數錯誤,類型轉換錯誤,數組越界錯誤等。

13.Throwable常用方法有哪些?

getMessage()返回異常發生的詳細信息
toString() 返回異常發生的簡要描述
getLocalizedMessage()返回異常對象的本地化信息。默認情況下和getMessage()相同
printStackTrace() 返回詳細的調用棧信息,快速定位位置

14.try-catch-finally如何使用?

try用于捕獲異常,catch用于處理捕獲到的異常,finally語句都會被執行。
不要再finally語句塊中使用return,try和fianlly中都有return語句的時候,try中的語句會被忽略

15.finally代碼一定會被執行嗎?

不一定,當被虛擬機終止的時候,代碼就不會執行。程序所在的線程死亡,關閉CPU也會不執行

16.什么是序列化和反序列化?

序列化:將對象轉換為可以存儲或傳輸的形式,比如二進制字節流,也可以是JSON,XML等形式
反序列化:序列化生成的數據形式轉換為原始的對象

17.如果有些字段不想進行序列化怎么辦?

1.用transient修飾。但是對象反序列化時候這個變量不會被持久化和回復,會被重置為類型的默認值,比如int重置為默認值0

18.JAVA的IO流了解嗎?

1.IO 輸入和輸出。數據輸入到計算機內存即為輸入,輸出到外部存儲比圖數據庫就是輸出。
IO流分為輸入流和輸出流
根據數據的處理方式又分為字節流和字符流
InputStream/Reader 字節輸入流/字符輸入流
OutputStream/Writer 字節輸出流/字符輸出流

19.為什么要分為字節流和字符流呢?

文件傳輸本質上是通過字節傳輸。字符流是java虛擬機將字節轉換得到的,這個過程比較耗時

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

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

相關文章

10:00開始面試,10:08就出來了,問的問題有點變態。。。

從小廠出來,沒想到在另一家公司又寄了。 到這家公司開始上班,加班是每天必不可少的,看在錢給的比較多的份上,就不太計較了。沒想到8月一紙通知,所有人不準加班,加班費不僅沒有了,薪資還要降40%…

k8s核心資源對象一(入門到精通)

本文將深入探討Kubernetes中的核心資源對象,包括Pod、Deployment、Service、Ingress、ConfigMap和Secret,詳細解析其概念、功能以及實際應用場景,幫助讀者全面掌握這些關鍵組件的使用方法。 一、pod 1 pod概念 k8s最小調度單元,…

《Sqoop 快速上手:安裝 + 測試實戰》

推薦原文 見:http://docs.xupengboo.top/bigdata/di/sqoop.html Sqoop(SQL-to-Hadoop) 是 Apache 開源的工具,專門用于在 Hadoop 生態系統(如 HDFS、Hive、HBase) 和 關系型數據庫(如 MySQL、O…

數據結構刷題之貪心算法

貪心算法(Greedy Algorithm) 是一種在每個步驟中都選擇當前最優解的算法設計策略。它通常用于解決優化問題,例如最小化成本或最大化收益。貪心算法的核心思想是:在每一步選擇中,都做出局部最優的選擇,希望…

重新定義PPT創作!ChatPPT發布全球首個AI PPT專用MCP Server

在這個AI技術日新月異的時代,ChatPPT團隊推出革命性的MCP Server(Multimodal Collaboration Platform),這是全球首個專注于AI PPT生成領域的智能協作平臺。該平臺的誕生,標志著PPT創作正式邁入"智能協作"新紀…

未來蓉城:科技與生態共舞的詩意棲居-成都

故事背景 故事發生在中國四川成都的2075年,展現科技與自然深度交融的未來城市圖景。通過六個充滿想象力的生態裝置場景,描繪市民在智慧城市中詩意棲居的生活狀態,展現環境保護與人文傳承的和諧共生。 故事內容 在電子竹林輕軌站,通…

計算機網絡筆記-分組交換網中的時延

一、分組交換網絡中的四種時延類型 1. 排隊時延 在隊列中,當分組在鏈路上等著被傳輸時的時延為排隊時延,一個分組的排隊時延長度取決于該分組前方等待傳輸的分組數量,如果排隊隊列為空,且沒有正在傳輸的分組那么該分組的排隊時延…

ubuntu20.04.6LTS 安裝PCL 1.9.1

在虛擬機中,ubuntu20.04.6 LTS 安裝PCL 1.9.1,實測成功了。 注意: 1、編譯時選擇雙核,否則編譯到一半報錯,因為內存不夠進程被殺死。 虛擬機是4核心、內存8G。可能選3核更快一點,雙核編譯了2個多小時。 …

SQL:JOIN 完全指南:從基礎到實戰應用

JOIN 是 SQL 中最重要也最常用的操作之一,它允許我們從多個表中獲取關聯數據。本文將全面解析 SQL 中的各種 JOIN 類型,包括 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN 以及 CROSS JOIN,并通過實際示例展示它們的應用場景。 一、JOIN 基…

IDEA 2024 Maven 設置為全局本地倉庫,避免新建項目重新配置maven

使用idea創建Java項目時每次都要重新配置Maven,非常麻煩。其實IDEA可以配置全局Maven。方法如下: 1.關閉所有項目進入初始頁面 2.選擇所有配置 3.設置為自己的路徑

UDP怎么樣實現可靠傳輸?

如果需要在基于UDP的應用中實現可靠傳輸(例如確保數據不丟失、按順序到達等),通常需要在應用層實現相應的機制。 1. 確認應答機制 應用層可以使用確認應答機制來確保數據的可靠傳輸。當發送方發送一個數據包時,接收方收到數據包…

【CSS基礎】- 02(emmet語法、復合選擇器、顯示模式、背景標簽)

css第二天 一、emmet語法 1、簡介 ? Emmet語法的前身是Zen coding,它使用縮寫,來提高html/css的編寫速度, Vscode內部已經集成該語法。 ? 快速生成HTML結構語法 ? 快速生成CSS樣式語法 2、快速生成HTML結構語法 生成標簽 直接輸入標簽名 按tab鍵即可 比如 div 然后tab…

每日算法:洛谷U535992 J-C 小夢的寶石收集(雙指針、二分)

題目描述 小夢有 n 顆能量寶石,其中第 i 顆的能量為 ai?,但這些能量寶石十分不穩定,隨時有可能發生崩壞,導致他們全部消失! 小夢想要留住寶石們,不希望他們發生崩壞,同時他發現:如…

Spring MVC 邏輯視圖(JSP、Thymeleaf、FreeMarker)與非邏輯視圖(JSON、Excel、PDF、XML)詳解及示例

Spring MVC 邏輯視圖與非邏輯視圖詳解及示例 一、邏輯視圖與非邏輯視圖的定義 類型定義邏輯視圖通過視圖解析器(ViewResolver)將邏輯名稱(如 success)映射到具體視圖實現。非邏輯視圖直接返回具體視圖對象(如 JsonVie…

【AAOS】【源碼分析】CarAudioService(二)-- 功能介紹

汽車音頻是 Android 汽車操作系統 (AAOS) 的一項功能,允許車輛播放信息娛樂聲音,例如媒體、導航和通信。AAOS 不負責具有嚴格可用性和時間要求的鈴聲和警告,因為這些聲音通常由車輛的硬件處理。將汽車音頻服務集成在汽車中,徹底改變了駕駛體驗,為駕駛員和乘客提供了音樂、…

docker安裝軟件匯總(持續更新)

1、簡介 本文介紹一些常用的軟件通過docker安裝并啟動,持續更新。 2、docker安裝軟件 2.1、zookeeper & kafka # 1、拉取zookeeper鏡像 git pull wurstmeister/zookeeper # 2、啟動zookeeper容器 docker run -d --restartalways --log-driver json-file --lo…

MySQL的左連接、右連接、內連接、外連接

一、前言 MySQL中的左連接、右連接、內連接和全外連接是用于多表關聯查詢的核心操作。 二、內連接(INNER JOIN) 定義:返回兩個表中完全匹配的行,即只保留兩個表連接字段值相等的行。示例場景:查詢所有有選課記錄的學…

前端面試寶典---數據類型

基本數據類型 對于基本類型在創建時無需使用 new 關鍵字 Bigint在實際開發不常用,如果對于精度要求高可以使用第三方庫,如decimal.js 基本數據類型介紹 undefined:當變量被聲明但未賦值,或者函數沒有返回值時,就會呈現…

Lua 函數使用的完整指南

在 Lua 中,函數是一等公民(First-Class Citizen),這意味著函數可以像其他值一樣被賦值、傳遞和操作。以下是 Lua 函數定義的完整指南,涵蓋基礎語法、高級特性、設計模式及性能優化。 在Lua 中,函數定義的完…

使用StockTV API對接印度金融市場數據全指南:K線、實時行情與IPO新股

一、印度金融市場數據特點 印度作為全球增長最快的主要經濟體之一,其金融市場具有以下顯著特征: 雙交易所體系:國家證券交易所(NSE)和孟買證券交易所(BSE)高流動性品種:Nifty 50指數成分股、銀行股等獨特交易機制:T2…