分散式寶典:限流+快取+通訊,網際網路寒冬
一面:
先是問了問專案,然後就開始問一些問題
1、每個請求耗時100ms,機器的配置是4核8G,問要達到10000TPS需要多少臺機器?
沒答上來,問了問是IO密集型還是CPU密集型,然後面試官說我想得太複雜了
2、怎麼實現網頁的自動跳轉
答301 302的Location欄位,然後又問了我這兩個有什麼區別
3、有一個10G大小的檔案,裡面都是32位的無符號整數,但是記憶體大小隻有1G,問如何找出裡面重複的數字
一開始說用hash,先hash到小檔案。面試官說有沒有更簡單的,答點陣圖,又問你覺得點陣圖會佔用多大的記憶體空間。算了一會,答512M
然後就是演算法題,一個Unix的路徑,簡化這個路徑,Leetcode上有原題
一面大概36分鐘
二面:
圍繞專案問了很多問題,和我討論了怎麼保證雙寫的一致性、訊息佇列中訊息積壓了怎麼辦、為什麼要用到分散式鎖、ZK的分散式鎖的使用流程、ZK的選主策略、同步策略然後又圍繞Kafka問了一些問題。
1、Kafka怎麼保證順序消費?
2、Kafka的架構是什麼樣的?
3、Kafka可以保證一個主題所有的分割槽都順序消費嗎?
演算法,給一個數n,求所有和等於這個數的連續子序列,比如15=1+2+3+4+5=4+5+6=8+7,所以輸出3.
三面:
主要是圍繞著基礎的知識問了一些問題:
1、Java的GC
2、反射,反射是怎麼實現的。
沒看過是怎麼實現的,現場猜想了一下,應該答錯了
3、講一下樂觀鎖和悲觀鎖
4、網路協議的分層,每一層是幹嘛用的
5、DNS是哪一層的,域名解析的過程是什麼樣的?
6、程序間通訊的方式,什麼情況下需要程序間通訊?
這個題答得也不太好,講了管道、訊號、共享記憶體區域
7、volatile關鍵字
8、Synchronized和Lock
這個地方我是想等他來問我底層的原理,所以說的時候沒說完。不過說完他也沒反饋,也許知道什麼就應該全部說出來?
做一道演算法題,序列化和反序列化二叉樹
9、核心態和使用者態介紹一下
最後面試官和我聊了聊平時是怎麼學習的,最近學什麼東西比較有心得,以後的職業規劃是什麼。
寫在最後
可能有人會問我為什麼願意去花時間幫助大家實現求職夢想,因為我一直堅信時間是可以複製的。我犧牲了自己的大概十個小時寫了這片文章,換來的是成千上萬的求職者節約幾天甚至幾周時間浪費在無用的資源上。
上面的這些(演算法與資料結構)+(Java多執行緒學習手冊)+(計算機網路頂級教程)等學習資源