作者:匿名_;

來源:牛客網;

鏈接:https://www.jianshu.com/p/5d75216be1f9

美團Java面經

沒有一點兒瘋狂,生活就不值得過。聽憑內心的呼聲的引導吧,爲什麼要把我們的每一個行動像一塊餅似的在理智的煎鍋上翻來覆去地煎呢?——米蘭·昆德拉《不朽》

Java工程師崗位

剛剛面完美團一面,耗時一個小時,口乾舌燥,面試官問的都比較有難度,並且特別喜歡問我“你確定嗎?”,“真的是這樣的嗎?”,讓我經常犯嘀咕。

1 實習經歷

2 object類有哪些方法,hashcode,equals,clone,notify,wait。問我hashcode用在哪,說了hashmap

3 hashmap的結構,1.7和1.8有哪些區別,除了紅黑樹優化以外還有哪些改進,說了擴容時頭插法改尾插法。

4 開始問我頭插法和尾插法的區別,頭插法在多線程時會出現什麼問題,我說的是擴容時的死鏈,後來引導我說了併發插入的數據丟失問題。

5 concurrenthashmap的實現原理,1.7和1.8有什麼區別,分段鎖,synchronized和cas操作。

6 cas操作是怎麼實現的,爲什麼是原子性的。wait和notify方法用在哪裏,wait和sleep的區別,notify後面的代碼會不會運行。

7 synchronized和lock的區別在哪裏,使用方式上有什麼區別。lock的trylock方法做了什麼,我說了cas操作和加入阻塞隊列,以及公平鎖和非公平鎖的區別。

8 你的項目用到countdownlatch,爲什麼要用,有什麼問題,如何監控這個問題。

9 線程池用過哪些,線程池有哪些參數,然後問我幾個常用線程池的用法和實際場景問題。

10 cas操作是哪個包裏的,volatile變量用過麼,有什麼作用,原理是什麼。i++是不是原子操作,爲什麼。

11 ArrayList和linkedlist有什麼區別,如何遍歷,使用for循環遍歷linkedlist爲什麼不行,linkedlist能使用索引訪問麼,使用迭代器呢。

12 JVM內存模型介紹一下,堆區怎麼分代,分代垃圾回收算法說一下,老年代使用標記清除有什麼問題。

13 說幾個垃圾回收器,cms回收器有哪幾個過程,停頓幾次,會不會產生內存碎片。老年代產生內存碎片會有什麼問題。問我有沒有做過JVM優化。

14 jvm場景問題, 標記清除多次後老年代產生內存碎片,引起full gc,接下來可能發生什麼問題。我說分配大對象可能引起full gc。

15 哪些情況會觸發full gc,full gc是否包括young gc和major gc,如果只包括這兩個,爲什麼要特地做full gc,我回答的是full gc還會回收方法區和堆外內存。

16 Java中有哪些引用,分別有什麼用。

17 Spring的ioc和aop說一下。

aop記錄日誌,什麼方法需要記錄日誌呢,增刪改查都要麼,我說前三個要把。他說那麼如果有多級調用的rpc查找操作是不是也要記錄日誌,我說那是的。

18 分佈式用過哪些技術,我說自己跑過一些demo,問我zookeeper有什麼用,然後問我dubbo裏的zookeeper是做什麼的,我說服務註冊中心。

19 服務註冊中心實現什麼功能,消費者的本地緩存如果失效了怎麼辦,我剛開始說多次失敗重新拉取,他說這樣不行吧,我就說讓生產者和註冊中心維持心跳,失效時刪除該節點並且更新消費者緩存即可。

20 MySQL用的挺多,問你一下,innodb的b+樹索引,主鍵索引,聚簇索引有什麼區別。

21 MySQL裏有哪些鎖,行鎖表鎖,樂觀鎖呢,我說了版本號和MVVC,開始問我MVVC。

22 事務的實際場景問題,兩個事務,一個查一個新增,問能否查到新增的,我問他隔離級別,他說RR。MySQL的RR避免幻讀,所以讀不到新增數據。

23 MySQL的死鎖怎麼產生的,舉了兩個例子。

24 三個事務,兩個加讀鎖,另一事務嘗試刪除,應該是不行的。

25 兩個事務,一個寫提交,另一個能不能讀到,可以讀到。

26 大概就是這些了。

點擊作者姓名與作者大佬交流~

相关文章