三年Java開發,剛從美團、京東、阿里面試歸來,分享個人面經!
美團
一面:
1、ConcurrentHashMap實現原理
2、HashMap實現原理
3、鎖的實現原理
4、synchronized和重入所實現原理以及區別
5、一個char[]陣列,裡面有空格,以&結束。
6、jvm記憶體模型,都存什麼。以及垃圾回收演算法,垃圾回收器。
7、記憶體溢位的場景
8、設計模式,以及自己使用的場景。
9、Sping的AOP實現原理,以及物件生成方式的種類,單例的還是原型的。
二面:
1、分散式鎖。
2、逐層遍歷樹。
3、原子類實現
4、volatile實現原理
5、自己做的專案,自己負責的東西的介紹,以及問題溯源。
6、資料庫索引實現原理,什麼情況下索引會失效。
7、資料庫sql優化
8、多個執行緒執行完了,再執行一個執行緒,實現方式。
三面:
1、程序和執行緒的區別
2、給定一個程序,有多個執行緒,其中一個執行緒出現OOM異常,判斷所有執行緒的狀態。
3、介紹自己實現的東西。以及問題丟擲。
京東
一面:
1、面向物件的優點
2、java的特點
3、說一說你做的東西
4、遇到的問題
二面:
1、簡歷上寫的所有技術基本都問了,問得有點多,自己都有點亂,會的就說 不會的就說不知道。
2、談對工作的看法,以及對問題的態度
3、linux的知識
三面:
1、HashMap實現原理。
2、執行緒池的實現原理
3、讓說你自己最熟悉的技術,問得很深。
4、CAS和鎖的區別,以及應用場景。
四面:
領導說比較忙,簡單聊了聊,問問我為什麼要換工作,以及期望薪資。很快就結束了。
阿里
記得不很清楚,面試時狀態不很好,面試官跳躍性比較大,而且問得很深。根本不能含糊其辭
1、基本上jvm一定要基本掌握,併發程式設計需要掌握,mysql使用以及優化,mysql 引擎的區別。
2、阻塞佇列的實現方式
3、Conurrenthashmap實現方式
4、程式設計:一個很大的字串求和。
5、程式設計:手寫死鎖。
總結
面試前的“練手”還是很重要的,所以開始面試之前一定要準備好啊,不然也是耽擱面試官和自己的時間。
我自己是刷了不少面試題的,所以在面試過程中才能夠做到心中有數,基本上會清楚面試過程中會問到哪些知識點,高頻題又有哪些,所以刷題是面試前期準備過程中非常重要的一點。
下面我就把我整理的面試資料分享給有需要的讀者朋友。