實習面經(JAVA)

目錄

鎖升級

notify和notifyAll區別

Sleep和Wait的區別

ArrayList和ListedList區別

HashMap擴容原理

ConcurrentHashMap

StringBuffer?和?StringBuilder

事務等級

索引結構

三次握手四次揮手,為什么是三次和四次

Java中重寫和重載的區別和應用場景

ArrayList?的底層數據結構是什么?如何擴容?時間復雜度?

?擴容特點

HashMap?的底層實現原理是什么?JDK?1.8?之前和之后的區別?

String?類型中的?CHAR?和?VARCHAR?區別?使用場景?

Spring IOC和AOP

Mybatis和Mybatis PLUS

TCP和UDP區別

springboot 和Spring MVC

?Spring Boot

Spring MVC

慢sql

慢 SQL 的危害

造成死鎖的原因?怎么解決

什么是java的反射

java中的io流說一下,說一下字節流和字符流的主要區別


鎖升級

無鎖-》偏向鎖-》自旋鎖-》重量級鎖

無鎖:沒有鎖競爭

偏向鎖:只給鎖對象加了個標簽,并沒有真正去加鎖

自旋鎖:通過自旋鎖實現用戶態的鎖

重量級鎖:在鎖競爭非常長激烈的時候,調用CPU的加鎖指令,真正生成LOCK鎖

notify和notifyAll區別

notify可能造成死鎖,而notifyAll不會,notifyAll可以喚醒所有wait方法的線程使其重新進入鎖競爭,而notify只能喚醒一個。notify() 是對notifyAll()的一個優化,但它有很精確的應用場景,并且要求正確使用。

Sleep和Wait的區別

對于sleep()方法,我們首先要知道該方法是屬于Thread類中的。而wait()方法,則是屬于Object類中的。sleep()方法導致了程序暫停執行指定的時間,讓出cpu該其他線程,但是他的監控狀態依然保持者,當指定的時間到了又會自動恢復運行狀態。在調用sleep()方法的過程中,線程不會釋放對象鎖。當調用wait()方法的時候,線程會放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象調用 notify()方法后本線程才進入對象鎖定池準備,獲取對象鎖進入運行狀態。

ArrayList和ListedList區別

ArrayList是動態數組(自動擴容的 Object [])?頻繁隨機訪問(如遍歷或按索引查詢)

  • 主要開銷是數組本身(需預分配空間,可能存在內存浪費)。

LinkedList是雙向鏈表(每個節點包含前驅和后繼引用)頻繁頭部 / 尾部插入 / 刪除

  • 每個節點需額外存儲前驅和后繼引用(雙向鏈表),內存占用更高。

HashMap擴容原理

HashMap是繼承自AbstractMap類,而Hashtable是繼承自Dictionary類。不過它們都實現了同時實現了map、Cloneable(可復制)、Serializable(可序列化)這三個接口。

為了能讓 HashMap 存數據和取數據的效率高,盡可能地減少 hash 值的碰撞,也就是說盡量把數據能均勻的分配,每個鏈表或者紅黑樹長度盡量相等。我們首先可能會想到 % 取模的操作來實現。

ConcurrentHashMap

ConcurrentHashMap 是線程安全的,HashTable是將每一個方法都加了synchronized修飾,占用性能大,效率低,ConcurrentHashMap 是將每一個哈希桶加了鎖,鎖粒度更小,效率更高

StringBuffer?和?StringBuilder

StringBuffer 是線程安全的,效率低;?StringBuilder是線程不安全的,效率高;

都通過append來拼接,一般單線程環境下用StringBuilder

事務等級

原子性

一致性

持久性

隔離性

其中隔離性分為:讀未提交,讀已提交,可重復讀,串行化

索引結構

B樹

B+樹

B樹的所有節點中同時存儲鍵(key)和值(value)。

B+樹:B 樹的一種變體,所有數據(值)僅存儲在葉子節點中,非葉子節點僅存儲鍵(key)用于索引。葉子節點之間通過指針連接,形成有序鏈表

查詢穩定性

三次握手四次揮手,為什么是三次和四次

三次握手

四次揮手

Java中重寫和重載的區別和應用場景

重寫:子類繼承父類的方法或者調用接口

重載:參數不同

ArrayList?的底層數據結構是什么?如何擴容?時間復雜度?

ArrayList 的核心是一個動態擴容的 Object 數組

?擴容特點
  • 初始容量:默認 16(首次添加元素時創建)。
  • 擴容因子:每次擴容為原容量的1.5 倍oldCapacity + (oldCapacity >> 1))。
  • 數組復制:通過Arrays.copyOf()實現,本質是 System.arraycopy () 的封裝。

HashMap?的底層實現原理是什么?JDK?1.8?之前和之后的區別?

JDK?1.8?之前:數組 + 鏈表

JDK 1.8 的實現(數組 + 鏈表 + 紅黑樹)

特性JDK 1.8 之前JDK 1.8 及之后
數據結構數組 + 鏈表數組 + 鏈表 + 紅黑樹
鏈表插入方式頭插法尾插法
哈希沖突處理鏈表鏈表長度≥8 且數組長度≥64 時轉紅黑樹
擴容機制重新計算哈希值通過位運算直接拆分鏈表
線程安全問題可能形成循環鏈表避免循環鏈表,但仍非線程安全
哈希函數復雜度多次位移 + 異或一次異或
查找時間復雜度最壞 O (n)最壞 O (log n)

String?類型中的?CHAR?和?VARCHAR?區別?使用場景?

維度CHAR(固定長度)VARCHAR(可變長度)
存儲方式固定長度存儲,不足部分用空格填充實際長度 + 1/2 字節長度前綴(L+1/L+2)
最大長度0-255 字符(MySQL 5.0.3 之前為 255 字節)0-65,535 字節(受行最大長度限制)
空間效率可能浪費空間(如存儲短字符串時)更節省空間(僅存儲實際內容 + 前綴)
檢索效率讀取速度稍快(固定偏移量)需先解析長度前綴,略慢
尾部空格處理存儲時保留空格,查詢時自動截斷存儲和查詢時均保留空格

Spring IOC和AOP

  • AOP 的思想
    將橫切關注點與業務邏輯分離,通過 “切面” 統一處理。

特性IOCAOP
核心思想將對象創建和依賴管理交給容器將橫切關注點與業務邏輯分離
實現方式依賴注入(構造器 / Setter / 注解)動態代理(JDK/CGLIB)、AspectJ
應用場景組件解耦、配置外部化事務、日志、權限、性能監控
優勢降低耦合、提高可測試性減少重復代碼、增強可維護性

Mybatis和Mybatis PLUS

Mybatis是一個半ORM(對象關系映射)框架,它內部封裝了JDBC。程序員直接編寫原生態sql,可以嚴格控制sql執行性能,靈活度高。

MyBatis-Plus(簡稱 MP)是一個MyBatis 的增強工具,在不改變 MyBatis 原有功能的基礎上,通過簡化 CRUD 操作、提供代碼生成器和條件構造器等功能,大幅提升開發效率。

TCP和UDP區別

維度TCP(傳輸控制協議)UDP(用戶數據報協議)
連接性面向連接(三次握手建立連接)無連接(直接發送數據)
可靠性可靠傳輸(確認機制、重傳機制、排序)不可靠傳輸(不保證送達或順序)
傳輸效率較低(需維護連接狀態和重傳機制)較高(無連接開銷和重傳)
數據包大小無限制(分段傳輸)受限于 MTU(通常≤65,507 字節)
傳輸順序保證有序不保證有序
擁塞控制有(慢啟動、擁塞避免、快速重傳等)無(可能導致網絡擁塞)
應用場景文件傳輸、網頁瀏覽、郵件收發等實時音視頻流、游戲、DNS 查詢等

springboot 和Spring MVC

?Spring Boot
  • 定位
    簡化 Spring 應用開發的工具集,通過自動配置約定大于配置原則,降低 Spring 上手門檻。
  • 核心功能
    • 自動配置(根據依賴自動配置 Spring MVC、數據庫等)
Spring MVC
  • 定位
    Spring 框架的 Web 模塊,基于 Servlet API 構建,提供 MVC(模型 - 視圖 - 控制器)架構支持。
  • 核心功能
    • 請求路由(@RequestMapping
    • 參數綁定
    • 視圖解析(JSP、Thymeleaf 等)

慢sql

慢 SQL 的危害

  1. 阻塞資源
    長時間占用數據庫連接和鎖,影響其他業務。
  2. 拖慢系統
    導致接口響應超時,甚至引發雪崩效應。
  3. 增加成本
    迫使數據庫擴容,增加硬件和維護成本。

造成死鎖的原因?怎么解決

什么是java的反射

反射機制是在運行時,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意個對象,都能夠調用它的任意一個方法。在java中,只要給定類的名字,就可以通過反射機制來獲得類的所有信息

java中的io流說一下,說一下字節流和字符流的主要區別

特性字節流(Byte Stream)字符流(Character Stream)
基類InputStream?/?OutputStreamReader?/?Writer
處理單位8 位字節(byte)16 位 Unicode 字符(char)
適用場景二進制文件(圖片、視頻、壓縮包等)文本文件(.txt、.java、.json 等)
是否緩沖無內置字符編碼處理,直接讀寫字節內置編碼轉換(如 UTF-8、GBK)

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

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

相關文章

計算機網絡-WebSocket/DNS/Cookie/Session/Token/Jwt/Nginx

文章目錄 WebSocketDNS什么是dns域名解析底層協議 cookie/sessionToken/JWTNginx WebSocket 一種網絡通信協議,允許在單個 TCP(半雙工) 連接上進行全雙工通信(客戶端和服務器可同時雙向傳輸數據)。 HTTP是基于請求-響…

單片機如何快速實現查看實時數據

在用 Keil 做調試的時候,最讓人頭禿的是什么? 不是寫代碼的BUG,而是:這個條件變量是什么情況?為什么沒進入這個判斷?我代碼跑到哪里了? 其實本質上都是通過變量判斷代碼的執行順序有沒有問題 …

vue3:橫線無限滾動(向左/向右),自定義UI

子組件 <template><div class"single-scroll-container" ref"container" mouseenter"pause" mouseleave"resume"><divclass"single-scroll-content":style"{ transform: translateX(${translateX}px) }…

Anthropic公司近日發布了兩款新一代大型語言模型Claude Opus 4與Claude Sonnet 4

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

【機器人】復現 Embodied-Reasoner 具身推理 | 具身任務 深度推理模型 多模態場景 長遠決策 多輪互動

Embodied-Reasoner 是一個多模態具身模型&#xff0c;它將 o1 的深度推理能力擴展到具身交互任務。 可以在 AI2THOR 仿真中執行復雜的任務&#xff0c;例如搜索隱藏物體、操縱 和 運輸物品 具有以下的功能&#xff1a; &#x1f914; 深度推理能力&#xff0c;例如分析、空間…

使用 Qemu 調試 LoongArch 應用程序

1.編譯 Qemu OS:Ubuntu 22.04 下載Qemu源碼 git clone --depth1 https://gitlab.com/qemu-project/qemu.git編譯 cd qemu mkdir build cd build ../configure --target-listloongarch64-linux-user,loongarch64-softmmu --prefixpwd/__install make && make instal…

Unity 游戲優化(持續更新中...)

垃圾回收 是什么&#xff1f; 垃圾回收&#xff08;Garbage Collection&#xff09;GC 工作機制 1、Unity 為用戶生成的代碼和腳本采用了自動內存管理。 2、小塊數據&#xff08;如值類型的局部變量&#xff09;分配在棧上。大塊數據和長期存儲分配在托管堆上。 3、垃圾收集…

python和java差異:關鍵數據類型與容器

2.0. 對象的類型&#xff1a;可變 (Mutable) 與不可變 (Immutable) 在Python中&#xff0c;理解對象的可變性 (mutability) 是至關重要的&#xff0c;它影響著變量如何被修改、函數參數如何傳遞以及數據結構的行為。 不可變對象 (Immutable Objects): 大白話定義&#xff1a;…

DAY 33

知識點回顧&#xff1a; 1. PyTorch和cuda的安裝 2. 查看顯卡信息的命令行命令&#xff08;cmd中使用&#xff09; 3. cuda的檢查 4. 簡單神經網絡的流程 a. 數據預處理&#xff08;歸一化、轉換成張量&#xff09; b. 模型的定義 i. 繼承nn.Module類 ii. 定義…

Minktec 柔性彎曲傳感器,靈敏捕捉坐姿弓背、精準監測行走姿態,守護兒童背部健康,為科學健身提供數據支撐,開啟職業健康與背痛 AI 干預新方向。

Minktec彎曲形變傳感器通過創新的技術設計&#xff0c;為各種彎曲和形變檢測需求提供了精確的解決方案。其核心技術基于薄膜柔性傳感器的應用&#xff0c;能夠捕捉物體在三維空間中的動態變化。傳感器內部結合了多點排列的應變元件和專有算法&#xff0c;實現了形狀的實時重建。…

快遞鳥接口費用解析:中小電商成本控制方案

中小電商企業在物流環節的成本控制&#xff0c;直接影響著整體運營效率和利潤空間。作為國內主流的物流數據服務商&#xff0c;快遞鳥API接口憑借其聚合查詢、電子面單、軌跡跟蹤等功能&#xff0c;成為眾多電商企業的選擇。但如何精準解析其收費模式&#xff0c;并制定科學的成…

maven 最短路徑依賴優先

問題描述&#xff1a; 項目在升級大版本后出現了&#xff0c;兩個不同模塊所引用的同一個依賴包版本不同 module A 引用了 module B&#xff0c;module B 引用了 A_1.0.jar->B_1.0.jar->C_1.0.jar(C 為B 里面的包) 在執行 mvn dependency:tree 后發現&#xff1a; modul…

游戲引擎學習第314天:將精靈拆分成多個層

回顧并為今天的工作做準備 我們今天繼續昨天開始的工作&#xff0c;現在我們要回到渲染中處理 Z 值的最終環節。我們目前已經有一個我們認為還算合理的排序方式&#xff0c;雖然可能還需要在接下來的過程中進行一些調整&#xff0c;但總體上已經有了一個明確的方向。 我們已經…

HashSet的基本概念

ashSet的基本概念 - HashSet 是C#中用于存儲唯一元素的泛型集合類&#xff0c;它基于哈希表實現&#xff0c;具有快速查找、添加和刪除元素的特性。 - 核心特點&#xff1a; - 不允許存儲重復元素 - 元素無序排列 - 查找、添加、刪除操作的平均時間復雜度為O(1) - 實現了 IEnum…

信號與系統10-綜合案例:智能信號處理系統

第7課&#xff1a;綜合案例——智能信號處理系統 1. 案例1&#xff1a;基于傅里葉變換與AI的語音信號分類系統 1.1 理論基礎 傅里葉變換是信號處理的核心工具之一&#xff0c;能夠將時域信號轉換為頻域表示&#xff08;如頻譜圖&#xff09;。語音信號的頻域特征&#xff08…

詳解Kubernetes Scheduler 的調度策略

詳解Kubernetes Scheduler 的調度策略 在 Kubernetes(K8s)中,Scheduler(調度器) 負責 決定 Pod 應該運行在哪個 Node(節點)。 ?? 調度器的目標是什么? ? 最大化資源利用率(讓 CPU、內存等資源不浪費) ? 保證 Pod 運行在合適的 Node 上(避免超載、滿足親和性)…

在 ElementUI 中實現 Table 單元格合并

在 ElementUI 中實現 Table 單元格合并 在使用 ElementUI 的 Table 組件時&#xff0c;有時我們需要合并相鄰的單元格&#xff0c;以提高表格的可讀性和簡潔性。下面是一個關于如何在 Table 中根據特定字段合并單元格的實現方法。 邏輯分析 spanMethod 方法&#xff1a;這是 …

小土堆pytorch--現有網絡模型的使用及修改

現有網絡模型的使用及修改 一級目錄二級目錄三級目錄 現有網絡模型的使用及修改1.VGG16模型VGG16網絡模型簡介**核心特點****網絡結構細節****優缺點與應用****變種與后續發展** 2. 使用vgg16模型 一級目錄 二級目錄 三級目錄 現有網絡模型的使用及修改 1.VGG16模型 VGG16…

Oracle 正則表達式匹配(Oracle 11g)

1、連續2詞漢字重復或3詞漢字重復&#xff08;不會忽略符號&#xff09; ([^ \u4e00-\u9fa5\S]{2,3})\1 例如&#xff1a;阿富、 SELECT REGEXP_replace(阿富、阿富、 阿富汗、 , ([^ \u4e00-\u9fa5\S]{2,3})\1, 重復) FROM dual結果&#xff1a; 2、連續2詞漢字重復或3詞…

對話魔數智擎CEO柴磊:昇騰AI賦能,大小模型融合開啟金融風控新范式

導讀&#xff1a;#昇騰逐夢人# AI已經成為金融機構核心競爭力的關鍵要素。專注AI金融賽道的魔數智擎&#xff0c;通過大小模型融合&#xff0c;讓AI成為銀行的“金融風控專家”。 作者 | 小葳 圖片來源 | 攝圖 在AI涌向產業的時代賽跑中&#xff0c;開發者是絕對的主角。 昇騰…