來自海歸本人的自述
陸陸續續投了20多家公司,數不清頂著時差做了多少筆試,無數個不眠的夜都在不斷地懷疑自己中度過(菜雞本雞沒跑了),收到的面試卻仍然屈指可數,主要以大廠為主,結局雖不圓滿但能看到自己的付出所帶來的成長。
以下面經已過濾項目相關問題
一、阿里 (會員中臺)(一面掛)
1. Java
- 重寫hashcode()是否需要重寫equals(),不重寫會有什麼後果
2. 併發
- 自旋鎖和阻塞鎖的區別
- 公平鎖和非公平鎖的區別
- jdk中哪種數據結構或工具可以實現當多個線程到達某個狀態時執行一段代碼
- 柵欄和閉鎖的區別
- 如何使用信號量實現上述情況
3. JVM
- 新生代和年老代的GC算法分別是什麼
- 標記清除和標記整理的區別
- 瞭解過CMS收集器嗎
4. 網絡
- 解釋HTTPs
- HTTPs為什麼要用對稱加密+非對稱加密,相對於只使用非對稱加密有什麼好處
5. 數據庫
- 給定一個表,其中有三列(員工名稱,工資,部門號),找出每個部門工資最高的員工
6. 代碼
- LeetCode 863 二叉樹中所有距離為K的結點
二、阿里 - 新零售技術事業群(一面掛)
1. 框架
- 用過哪些Java開源框架
- 講一講對Spring的理解
- 看過IOC和AOP的源碼嗎
- 它們底層是如何實現的
- 用過其他什麼框架
- 瞭解過分佈式或者微服務的開源框架嗎
- 講一講對分佈式系統模型的理解
- 分佈式系統中有一個節點宕機怎麼辦
- 分佈式系統如何實現負載均衡
2. 數據庫
- MySQL和Oracle數據庫有哪些不同
- 數據庫有哪些鎖
- 表鎖和行鎖的區別
- 哪些場景需要加表鎖
- 插入一條數據需要加什麼鎖
- 分佈式數據庫如何保證數據可靠性
- 瞭解過MySQL的主從複製嗎
三、騰訊 - TEG (一面掛)
1. 數據結構
- B+樹與紅黑樹的區別
2. Java
- HashMap的底層數據結構,侷限性與線程安全
- 如何實現線程安全的HashMap
- Collections.sychronizedMap與ConcurrentHashMap的區別
- HashMap與ConcurrentHashMap的性能比較
3. JVM
- 類的編譯過程
- 類的加載過程
- JVM的內存空間
- JVM的GC機制
4. 操作系統
- 進程與線程的區別
- 進程間如何通信
- 共享內存與Socket的優缺點與性能比較
- 子進程從父進程繼承了什麼
- 什麼是殭屍進程
- 線程與協程的區別
5. 網絡
- TCP的四次揮手
- TIME_WAIT狀態處在哪一方以及為什麼需要它
- TCP與UDP的區別與可靠性
- 如何實現UDP的可靠傳輸
6. 數據庫
- 解釋ACID四大特性
- 原子性的底層實現
- 數據庫宕機後恢復的過程
- 如何保證事務的ACID特性
- MySQL日誌類型
7. 分佈式
- 談談對分佈式系統的理解
- 分佈式數據庫的實現
- 如何保證不同數據庫之間的數據一致性
- 如何實現主從數據庫間的同步
四、騰訊 - FIT (一面掛)
1. 網絡
- TCP三次握手/四次揮手
- TIME_WAIT狀態
- 網絡延遲大的情況怎麼處理
- HTTP請求到響應全過程(服務端)
- HTTP請求頭及其作用
- HTTP和HTTPs
- HTTPs的握手過程
五、字節 - 頭條(二面掛)
1. 一面
- 操作系統
- 講一講進程和線程
- 講一講多線程和線程池
- Linux的最大進程數限制
WEB
- 輸入URL到頁面加載的過程
- 後端怎麼處理前端傳過來的文件
JVM
- GC機制(GC算法,分代收集,收集器,STW)
代碼
- 給定一個數組a[N]和一個整數P,求a[i] + a[j] + a[k] =P,保證i
2. 二面
數據庫
- 身份證如何有效建立索引
- Innodb索引類型
- 聚簇索引和非聚簇索引的區別
- 索引失效的情況
- 寫一個分頁查詢
Java
- JMM內存模型
- Classloader雙親委派機制
- 講一下ThreadLocal
- 線程間如何通信
六、字節 - 頭條 - 客戶端開發(已拿offer)
1. 一面
操作系統
- 講一下進程和線程
- 講一下線程安全
智力題
- 兩個人拋硬幣,先拋的人贏的概率
代碼
- 單鏈表排序,奇數位升序,偶數位降序
2. 二面
WEB
- HTML,JS,CSS的區別
- 輸入URL到頁面加載的過程
- HTTP的長連接和實現原理
Java
- 創建和終止一個線程
- 講一下熟悉的容器類
- ArrayList中如何刪除某個元素的所有相同元素
- 講一下迭代器的實現原理
SQL
- 學生表 Student (S#,Sname,Sage,Ssex),課程表 Course (C#,Cname),成績表SC (S#,C#,score),查詢平均成績大於 60 分的同學的學號和平均成績
代碼
Leetcode 283 移動零
3. 三面
智力題+數據結構+代碼
- 撲克牌的移動
併發
- 樂觀鎖和悲觀鎖的區別
- 兩種鎖在Java中的具體實現
- 兩種鎖的使用場景
七、阿里 - 供應鏈平臺事業部(二面掛)
1. 一面
框架
- 講一下IOC
- 對SpringBoot的理解
- Mybatis中#和$的區別
Java
- HashMap底層實現和擴容機制
代碼
- Leetcode 206 鏈表反轉
數據庫
- InnoDB和MyISAM的區別
其他
- SQL注入
2. 二面
算法和數據結構
- 講一下紅黑樹
- 紅黑節點的個數
- 紅黑樹的插入刪除查詢時間複雜度
- 講一下B+樹
- B+樹的插入刪除查詢時間複雜度
- 講一下堆的性質及應用場景
- 建堆時間複雜度
- 各種排序算法的時間複雜度及穩定性
數據庫
- 講一下三範式
網絡
- 為什麼要三次握手
- 二次握手有什麼問題
- 三次握手有哪些缺陷
- TCP是如何控制流量的
- 發送方發送頻率過高造成丟包,TCP是如何解決的
- 講一下OSI網絡架構
- HTTP在哪一層
- HTTP報文結構
- HTTP首部字段
- HTTPs加密在哪一層實現
操作系統
- 講一下虛擬內存
- 如果訪問虛擬地址時,該地址在物理內存中不存在,會發生什麼
Java
- 講一下volatile
- volatile底層實現
- static修飾用法和區別
JVM
- 講一下GC算法
- JVM內存空間
代碼
- Leetcode 2 鏈表相加
函數式編程
- 函數式編程和麵向對象編程的區別
- jdk8為什麼要引入函數式編程
機器學習
- 講一下梯度下降
- 梯度下降能保證收斂嗎
當然不只是面試題,小編這裡也拿到了這位朋友備戰大廠面試的一些面試資料準備免費分享給大家,有想獲取的朋友,轉發關注後,私信【大廠資料】即可
閱讀更多 Java頂級架構師 的文章