一、面試第 1 輪
linux 網絡模型
b+樹
阻塞隊列
redis 和 MongoDB 的區別。幾個概念對比,還有底層實現。
算法題: merge k sorted list,時間複雜度如何?
HashMap 如果一直 put 元素會怎麼樣?hashcode 全都相同如何?equals 方法都相同
如何?
ApplicationContext 的初始化過程?初始化過程中發現循環依賴 Spring 是如何處理的。
GC 用什麼收集器?收集的過程如何?哪些部分可以作爲 GC Root?
Volatile 關鍵字,指令重排序有什麼意義?
10.synchronied 怎麼用?
11.併發包裏的原子類有哪些,怎麼實現?cas 在 CPU 級別用什麼指令實現的?
12.Redis 數據結構有哪些?如何實現 sorted set?這種數據結構在極端情況下可能有什麼
問題?二叉平衡樹?
13.系統設計題:一個推送場景,50 條內容,定時推送,先推 5%用戶,一段時間後再找出
效果最好的幾條,推給所有用戶。設計相關庫表,系統模塊, 需要可以落地,有僞代碼
14.MySql 索引是什麼數據結構?B tree 有什麼特點?優點是什麼?
15.慢查詢怎麼優化?
16.項目:cache 設計,MQ 丟失消息,RPC 使用場景。各部分職責,有哪些優化點。
17.ThreadLocal 使用場景
18.Redis 回收和備份
19.項目設計問題——主要是針對項目找漏洞,然後給出優化方案
20.遇到的坑,怎麼解決,後續總結。
二、面試第 2 輪
那些問題對你挑戰最大?
JDK 1.8 ConcurrentHashMap 做過什麼改進?HashMap 死鎖?
標記的時候怎麼找出棧上的 GC Root?說出一種可能的方案,存在什麼問題?
字節碼有了解過嗎?
本地緩存怎麼優化空間?(提出 BitMap)BitMap 可行嗎?怎麼驗證可行性?如果不
可行,怎麼證僞?
其他語言有了解過嗎?Scala 的集合有什麼特性?python 有什麼高級特性?
怎麼學習新技術?哪些是基礎技術?
在部門中是什麼角色定位?
JDK 1.8 比前一個版本有哪些改進?
ParNew 收集過程,如何調優 ParNew?如何減少 full gc?調大 YoungGen 有什麼好處
壞處?
OpenAPI
平衡二叉樹13. 業務邏輯
MySQL
服務設計題
web 架構設計
Pack
http 協議
爬蟲
Java Agent
Zookeeper
LoadBalance
分佈式 ID
Nginx
Cookie
Session
GC
手寫 LRU 緩存
將現有線性存儲結構改成環形結構
Redis IO 模型
MQ 架構對比
各種緩存 memcache,MongoDB,EhCache,Guava,Caffeine 等等,使用場景
數據庫樂觀鎖悲觀鎖。在 JDK 和其他中間件的體現。
線程池,核心參數,擴容原理,使用注意點
數據庫主從同步,延遲
數據庫和緩存一致性問題,出現的場景,解決方案
Spring IOC AOP
一致性哈希算法
RPC 服務發現與註冊
服務提供方不穩定,頻繁變動如何提升自身穩定性
三、面試第 3 輪—HR
離職原因
學習習慣
興趣愛好
爲什麼選擇本公司
本人的優缺點
嘮家常
四、總結
主要看技術能力,溝通能力和態度(不會就是不會,不要說百度就知道)。
本人免費整理了Java高級資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高併發分佈式等教程,一共30G,需要自己領取。
傳送門:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q