這是一位讀者去年投稿的面經。這位讀者的學歷是 211 本科 + 985 碩士,參加 2024 屆秋招,拿到了招銀網路金融科技、某證券金融科技、去哪兒、華為等公司的 offer。
最後,他選擇了離家近的券商。
下面是正文。
拿到的 Offer 總結
- 招銀網路金融科技(軟開,總包 27w)
- 證券金融科技(大資料)
- 去哪兒(白菜,22k15薪)
- 上海銀行(大資料,總包大概 25w)
- 華為(14c,22k)
背景介紹
- 學歷:211 本科 + 985 碩士,不算特別頂尖的學歷。
- 專業:非科班,計算機相關專業,有一定編碼基礎。
準備過程
我在 2021 年 10 月左右正式開始準備後端工作。在此之前,我僅學習了 Java SE 和 MySQL。之後,我開始學習框架、做專案等。
像大多數人一樣,我透過觀看黑馬程式設計師和尚矽谷的影片慢慢學習,並做了 LeetCode 刷題。(這裡建議慎重選擇專案,大廠對專案的要求是實際貼合且具有難度。我曾因專案做法不當被餓了麼和美團吐槽。大廠的專案實現方式與我們通常的做法不同。)
我做了兩個專案,一個是秒殺商城,一個是微服務相關的專案。秒殺商城專案雖然增加了我對框架的理解和能力,但面試時容易被質疑,因為它與實際情況有些脫節。
面試問題分享
以下是一些公司的面試問題,公司的名字用縮寫代替。
部分面試題的答案,我給出了對應的文章連結。對於沒有給出連結的面試題,可以自行搜尋一下答案。
另外,推薦一下 《Java 面試指北》 以及 JavaGuide ,這裡面對常見的面試問題均有涉及,知識面非常廣,對我的幫助也很大。
WD
- 大資料比賽:在大資料場景下如何進行資料清洗?
- 什麼時候開始學習 Java 開發的?怎麼學的?
- IoC 的作用,為什麼能解耦?
- AOP 解決了什麼問題,應用場景是?
- Spring Boot 相比 Spring 有什麼最佳化?為什麼使用 Spring Boot?
- 使用過 Spring Cloud 嗎?有哪些元件?可以做什麼?
- Nginx 負載均衡,客戶端負載均衡和服務端負載均衡的區別?
- 如何設計一個優先順序任務執行緒池?
- HashMap 的原理?怎麼實現的?
- 什麼是 SPI?SPI 的原理是什麼?
GT
- 有用過事務嗎?事務的傳播屬性?
- 事務失效的情況(動態代理?)
- 在方法中捕獲異常而沒有丟擲去。
- 非事務方法呼叫事務方法。
- 事務方法內部呼叫事務方法。
@Transactional
標記的方法不是 public。- 丟擲的異常與
rollbackFor
指定的異常不匹配。
- 訊息丟失了怎麼辦?
- 父執行緒如何傳遞資訊給子執行緒?
- ThreadLocal?
- 冪等性,如何避免重複消費?在專案裡是怎麼做的?如果訊息重複了,如何避免庫存的重複扣減?
- 為什麼需要分散式事務?常見分散式事務解決方案有哪些?
- 多執行緒,執行緒池原理、引數、阻塞佇列?
- 多執行緒怎麼建立?Future 類如果一直等待返回值的話要怎麼處理?
Lazada
- 專案遇到的難點?
- 庫存怎麼扣減的?併發場景下怎麼實現?
- 樂觀鎖機制的秒殺場景下,SQL 怎麼寫?庫存表是怎麼設計的?
- 執行緒池引數怎麼設定?需要考慮哪些因素?
- 哪些工具用來排查記憶體洩漏問題?
- 標記清除演算法是怎麼標記垃圾的?如何解決引用的依賴問題?
- 什麼是樂觀鎖和悲觀鎖?Java 中 CAS 是如何實現的?ABA 問題的解決?
- 如何檢測和避免執行緒死鎖?
- LinkedList、ArrayList、HashMap 實現原理?LinkedList、ArrayList 實現插入元素是怎麼實現的?
- 為什麼使用紅黑樹?有什麼優勢?紅節點和黑節點?
- JVM 執行時資料區,垃圾回收機制?
JXJK
- 鎖升級的機制?
- Java 中的鎖機制?
- Spring Boot 自動注入出現空指標的情況如何排查?
- 自動注入失敗的情況?空指標報錯的情況?
- 介面可以定義變數嗎?
- MySQl 索引失效的場景有哪些?
- 索引,如果一個欄位只有“男”,“女”,“其他”,適合拿來作為索引嗎?
- 如果有兩個欄位一個有 100000 行一個有 100001 行,如何挑出不同的這個數字?
- Redis 的記憶體淘汰策略?
- 除了Redis,你還知道其他分散式快取方案嗎?
- 重量級鎖加鎖過程?重量級鎖解鎖過程?
- 輕量級鎖加鎖過程?輕量級鎖的鎖膨脹?
- 偏向鎖的鎖膨脹?
- 介面可不可以定義成員變數?
KS
- 執行緒池引數有哪些?
- 什麼是 CPU 密集型的任務?引數怎麼設定?
- NIO 和 BIO,IO 多路複用?
- Java 的值傳遞?
- Spring、Spring Boot、MyBatis 原始碼看過嗎?
- TCP 為什麼要三次握手和四次揮手?
- HTTPS 是如何保證傳輸安全的?
- 迴文連結串列
MT
- 執行緒有哪些狀態?狀態之間是如何變化的?
- 執行緒池中執行緒異常後,銷燬還是複用?
- Spring 中 Bean 的生命週期是怎樣的?
- Spring 的 Bean 是執行緒安全的嗎?
AL
- 叢集和分散式的區別?
- 行鎖什麼時候升級為表鎖?
最終選擇
最後,我選擇了離家近的券商。雖然華為是我心中的意難平,但考慮到我已近三十歲,也沒信心一直待下去。唉……