2025 全新阿里巴巴 Java 面經(jīng)匯總(附答案模板),建議收藏!
釘釘一面
1.筆試(兩道全排序)
[5380. 全排列]
給定一個沒有重復數(shù)字的數(shù)組 nums
,輸出其所有可能的全排列。輸出的排列不應包含重復的排列。
輸入格式
一個整數(shù)數(shù)組 nums
,其中不包含重復數(shù)字。
輸出格式
每行一個排列,排列中的整數(shù)用空格分隔。
輸入樣例
▼text
1 2 3
輸出樣例
▼text
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
[5381. 包含重復元素的全排列]
給定一個可能包含重復數(shù)字的數(shù)組 nums
,輸出其所有可能的全排列。輸出的排列不應包含重復的排列。
輸入格式
一個整數(shù)數(shù)組 nums
,其中可能包含重復數(shù)字。
輸出格式
每行一個排列,排列中的整數(shù)用空格分隔。
輸入樣例
▼text
1 1 2
輸出樣例
▼text
1 1 2
1 2 1
2 1 1
2.java8有哪些新特性?
- [421. JDK8 有哪些新特性?]
3.Object類中有什么方法,有什么作用?
- [5908. Java Object 類中有什么方法,有什么作用?]
4.介紹下 Collection 接口
- [444.Java 中有哪些集合類?請簡單介紹]
5.HashMap、ArrayList 線程不安全如何解決?
使用線程安全的容器,例如 ConcurrentHashMap 和 CopyOnWriteArrayList 等替換。
或是使用 Collections.synchronizedMap
和 Collections.synchronizedList
包裝原來的容器即可。
- [4946. Java 的 CopyOnWriteArrayList 和 Collections.synchronizedList 有什么區(qū)別?分別有什么優(yōu)缺點?]
6.Spring AOP
- [573. 什么是 AOP?]
7.Spring AOP 如何實現(xiàn)動態(tài)代理?
- [574. Spring AOP默認用的是什么動態(tài)代理,兩者的區(qū)別?]
8.在項目中用過哪些多線程類?
- [480. 你使用過哪些 Java 并發(fā)工具類?]
9.RPC 有了解嗎?
- [732. 讓你設計一個 RPC 框架,怎么設計?]
- [155. 什么是 RPC?目前有哪些常見的 RPC 框架?實現(xiàn) RPC 框架的核心原理是什么?]
10.分布式架構(gòu)用過嗎?如何使用分布式
- [151. 什么是分布式?為什么需要分布式?]
- [772. 什么情況下需要使用分布式事務,有哪些方案?]
11. 分布式鎖有了解過嗎
- [分布式鎖一般都怎樣實現(xiàn)?]
12.雙親委派機制
- [439. 什么是 Java 中的雙親委派模型?]
13.JVM 的棧堆 都是干嘛的?
- [524. Java 中堆和棧的區(qū)別是什么?]
14.gc 中如何判斷對象是垃圾?
- [534. Java 中如何判斷對象是否是垃圾?不同垃圾回收方法有何區(qū)別?]
14.JDK8后,JVM 有哪些變化?
- [536. 為什么 Java 8 移除了永久代(PermGen)并引入了元空間(Metaspace)?]
15.智力題排列問題
- [ 5326. 排列問題]
16.平時都怎么學習的
點擊鏈接,獲取更多大廠面經(jīng)和答案詳解。
阿里巴巴一面
Java內(nèi)存區(qū)域
- [523. JVM 的內(nèi)存區(qū)域是如何劃分的?]
事務的隔離級別
- [606. MySQL 中的事務隔離級別有哪些?]
- [585. Spring 事務有幾個隔離級別?]
臟讀與幻讀的區(qū)別
- [608. 數(shù)據(jù)庫的臟讀、不可重復讀和幻讀分別是什么?]
說下 MVCC
- [604. MySQL 中的 MVCC 是什么?]
redo log 和 bin log 區(qū)別
- [106. MySQL 中的日志類型有哪些?binlog、redo log 和 undo log 的作用和區(qū)別是什么?]
Spring 事務的傳播機制
- [586. Spring 有哪幾種事務傳播行為?]
- [587. Spring 事務傳播行為有什么用?]
AOP 的原理是什么
- [573. 什么是 AOP?]
AOP 底層兩個動態(tài)代理的區(qū)別
- [574. Spring AOP默認用的是什么動態(tài)代理,兩者的區(qū)別?]
Java 字節(jié)碼
- [5909. Java 字節(jié)碼了解嗎?]
設計分布式鎖可以設計哪些接口
設計分布式鎖時,常見的接口包括獲取鎖、釋放鎖、續(xù)期鎖以及嘗試獲取鎖。
1)獲取鎖 (acquireLock
):
- 嘗試獲取分布式鎖,若成功則返回鎖的唯一標識符,失敗則返回獲取失敗的狀態(tài)或進行重試。
2)釋放鎖 (releaseLock
):
- 釋放已獲取的鎖,需要提供鎖的唯一標識符和鎖持有者信息,以確保釋放的鎖確實是持有者所持有的。
3)嘗試獲取鎖 (tryAcquireLock
):
- 嘗試在有限的時間內(nèi)獲取鎖,若在指定時間內(nèi)獲取成功則返回鎖的唯一標識符,失敗則返回獲取失敗的狀態(tài)。
4)續(xù)期鎖 (renewLock
):
- 在鎖接近過期時,延長鎖的有效期。續(xù)期操作必須驗證續(xù)期請求的合法性,即續(xù)期者確實是鎖的持有者。
5)查詢鎖狀態(tài) (isLocked
):
- 查詢鎖是否被持有,以及持有者的信息。這對于排查鎖的狀態(tài)非常有用。
- 958. 分布式鎖一般都怎樣實現(xiàn)?
阿里菜鳥后端一面
對于給表創(chuàng)建索引,你會考慮什么?
- [9805. MySQL 在設計表(建表)時需要注意什么?]
- [1479. 在什么情況下,不推薦為數(shù)據(jù)庫建立索引?]
哪些場景下索引是會失效的?
- [598. MySQL 中使用索引一定有效嗎?如何排查索引效果?]
你有自己去用redis去實現(xiàn)一個限流器嗎?
- [1190. 什么是限流?限流算法有哪些?怎么實現(xiàn)的?]
- [34. Redisson 的 RateLimiter 是什么?如何在項目中實現(xiàn)分布式限流?你的限流策略是什么?]
你有用過一些中間件嗎?
詳細介紹一下線程池的工作流程?說一下線程池的核心參數(shù)?如果核心線程、最大線程都在工作,隊列也滿了,這時候來了個任務,此時會發(fā)生什么?
- [472. 你了解 Java 線程池的原理嗎?]
核心線程數(shù)在運行過程中能修改嗎
- [5931. Java 線程池核心線程數(shù)在運行過程中能修改嗎?如何修改?]
你平時用過哪些數(shù)據(jù)庫?
數(shù)據(jù)庫的隔離級別有哪些?
- [606. MySQL 中的事務隔離級別有哪些?]
可重復讀是怎么實現(xiàn)的?
- [604. MySQL 中的 MVCC 是什么?]
你了解數(shù)據(jù)庫層面的悲觀鎖與樂觀鎖嗎?
- [610. MySQL 的樂觀鎖和悲觀鎖是什么?]
什么情況下會導致死鎖?
- [518. Java 中什么情況會導致死鎖?如何避免?]
說一下mysql的行鎖
- [609. MySQL 中有哪些鎖類型?]
說一下幻讀
- [608. 數(shù)據(jù)庫的臟讀、不可重復讀和幻讀分別是什么?]
redis的主從復制是怎么實現(xiàn)的?
- [651. Redis 主從復制的實現(xiàn)原理是什么?]
HR 面題目參考
- 你現(xiàn)在還在xx實習嗎?
- 在xx公司做了什么?選一個具體項目講講背景、你的做法和成果。
- 這個項目有量化指標嗎?能提供數(shù)據(jù)說明結(jié)果嗎?
- 復盤來看,哪些地方做得不錯?是怎么做到的?
- 你有做過 ToB 業(yè)務的項目嗎?
- 這兩段實習中,遇到的最大困難是什么?
- 這兩段實習帶來了哪些收獲?做得好的地方和需要提升的地方分別是什么?
- 生活中有沒有經(jīng)歷過特別困難的時期?
- 選擇公司時,你會考慮哪些因素?
- 反問環(huán)節(jié)。
更多面經(jīng)及答案可以打開***閱讀學習 ?? :****************************
#??驮诰€求職答疑中心#