螞蟻金服1至4面(Java崗):JVM+Redis+CAS+算法+併發+消息隊列

一面

先自我介紹下

聊項目,逆向系統是什麼意思聊項目,逆向系統用了哪些技術線程池的線程數怎麼確定?如果是IO操作為主怎麼確定?如果計算型操作又怎麼確定?Redis熟悉麼,瞭解哪些數據結構zset底層怎麼實現的跳錶的查詢過程是怎麼樣的,查詢和插入的時間複雜度紅黑樹瞭解麼,時間複雜度說下Dubbo的原理踩過什麼坑沒有CAS瞭解麼還了解其他同步機制麼我們做一道題吧,數組A,2*n個元素,n個奇數、n個偶數,設計一個算法,使得數組奇數下標位置放置的都是奇數,偶數下標位置放置的都是偶數時間差不多了,先到這吧。你有什麼想問我的?

二面

主要是技術部分

1.volatile和synchronized原理
2.HashMap,ConcurrentHashMap
3.epoll,select,poll
4.TCP,UDP(tcp的具體狀態沒答出來
5.jvm內存分佈,垃圾收集,eden區
6.jvm調優(不會
7.java對象頭裡有什麼(只答了age,monitor,其他的忘了
8.mysql主從複製

三面

面試官和藹很多,你先介紹下自己吧你對服務治理怎麼理解的?項目中的限流怎麼實現的?具體怎麼實現的?如果突然很多線程同時請求令牌,有什麼問題?怎麼解決呢?如果不用消息隊列怎麼解決?分佈式追蹤的上下文是怎麼存儲和傳遞的?Dubbo的RpcContext是怎麼傳遞的?主線程的ThreadLocal怎麼傳遞到線程池?你說的內存洩漏具體是怎麼產生的?線程池的線程是不是必須手動remove才可以回收value?你說的內存洩漏是指主線程還是線程池?你說下SpringMVC不同用戶登錄的信息怎麼保證線程安全的?我們聊聊mysql吧,說下索引結構為什麼使用B+樹?什麼是索引覆蓋?Java為什麼要設計雙親委派模型?什麼時候需要自定義類加載器?我們做一道題吧,手寫一個對象池有什麼想問我的麼

總結

面試官很專業,要求基礎知識很熟悉,面試之前一定要準備後再去面試。LeetCode題目也要刷。

切記面試前一定要刷題和準備,簡歷上的項目不熟悉的千萬不要寫上去,寫上去的項目備好2-3個技術方案。

我個人認為,作為技術人就要保持終生學習的態度,讓學習力成為核心競爭力,才能不被時代所淘汰,而高效的時間支配能讓你變得更加優秀,所以,

我在這裡將這份耗時兩個月整理出來的核心技能面試知識點,送給有需要的人,希望這份資料能對大家有所幫助

如何獲取免費面試學習資料?

資料獲取方式:

【關注+轉發】後,私信關鍵詞 【資料】即可免費獲取!