1. 程式人生 > >美團、滴滴實習生面經(滴滴offer,Java後臺開發崗)

美團、滴滴實習生面經(滴滴offer,Java後臺開發崗)

筆者是大三本科生,一直以來在考研和參加工作兩個想法之間徘徊,最終在今年3月份下定決心參加工作,之後參加了春招,投的全部是java後臺開發崗實習生。
在春招過程中投了不少公司,有京東、頭條、網易、美團、滴滴,前三家都掛在了筆試環節,美團順利通過筆試,參加面試已經是4月底的事了。滴滴是沒有經歷筆試直接進入了面試環節。先說美團。

美團一面
4月底收到面試通知去到望京美團大廈進行第一次面試。大概問題如下:(順序不分前後)
1.自我介紹(每次面試第一個環節)
2.專案介紹
3.專案中redis的作用
4.資料庫隔離級別,不同隔離級別存在的問題(髒讀、不可重複讀、幻讀),出現的原因
5.悲觀鎖(Innodb的行鎖和MyISAM的表鎖)和樂觀鎖(MVCC多版本併發控制)
6.單例模式(餓漢、懶漢、雙重校驗鎖及其修正、靜態內部類、列舉),執行緒安全性以及原因
7.手寫生產者消費者模式
8.遞迴演算法的程式設計題
9.Java集合(有點忘了具體內容)

總體來說美團一面答出來90%左右,面試官說他是大資料部門的,因此web方面開發的內容問的比較少,spring、mybatis這類常見框架都沒有問

美團二面
美團二面是電面,問題如下:
1.自我介紹
2.專案介紹,每個中介軟體的使用(redis快取,rabbitmq非同步處理請求)
3.專案優化思路
4.HashTable和HashMap的區別,為什麼不推薦使用HashTable,有什麼可以代替它的?(ConcurrentHashMap)
5.Mysql儲存引擎、事務隔離級別、鎖
6.垃圾收集器
7.JVM類載入機制
8.classloader的雙親委派模型
9….忘了,大概就這麼多

二面的過程還是很不錯的,感覺問到的問題也都答了出來,但是過了好久沒收到通知,後來發簡訊問才知道是掛了。這裡要吐槽美團的面試太拖了,一面和二面拖了好多天。接下來說滴滴,滴滴沒有參加筆試,直接進入了面試環節,在投簡歷過後十多天收到的面試通知,而且滴滴效率很高。

滴滴一面(5月14號)
1.自我介紹
2.畫出專案的架構圖(筆者畫了一個超級簡單的圖,也沒啥邏輯,之前沒畫過)
3.介紹專案內容,分析優化過程以及為什麼要這麼做,有更好的方案嗎(大家的專案都不一樣,我這裡就不多說細節了,比如:如何防止使用者多次點選某個按鈕)
4.畫出springmvc框架大致處理請求的流程並解釋
5.jvm類載入機制
6.jQuery遍歷一個list的方法(回答$,forEach(),問還有其他方案嗎,回答的直接for迴圈,對jQuery瞭解比較少,只會ajax這一塊)
7.docker相關(學過一點也忘了,直接回答不好意思不知道,面試官說這個挺重要)
8.資料庫隔離級別、儲存引擎、mysql預設隔離級別(Repeatable Read)
9.Mysql索引,面試官寫了一條sql語句,問使用到了哪些索引,為什麼
10.Mybaitis和Hibernate區別
11.集合相關

一面面試官人很不錯,雖然略帶嚴肅,但是每次我說錯了都會笑著說你再想想。面完之後就去叫二面面試官過來了

滴滴二面
二面面試官是一個大叔,進來以後全程在笑,我也只能跟著苦笑~~

1.自我介紹
2.談談專案
3.談談對spring boot的使用
4.Spring Security有哪些重要的Filter(只答上來一個UsernamePasswordAuthenticationFilter,筆者在17年寒假寫的security專案,有點忘了),之後又問了幾個相關問題,苦笑著說不知道
5.說說https的握手(說了一半,面試官指導著說完了後半部分)
6.spring的特性(ioc、aop)
7.aop如何實現的?有哪幾種方式(答出來一個代理模式,使用反射)
8.mvc好處,前後端分離優缺點

二面大概記得這些,這個大叔全程在笑,整個面試過程也是比較輕鬆,筆者10.30開始的一面,二面結束大概12點,面試官就叫我去樓下吃飯,吃完回來進行三面。

滴滴三面
本來以為滴滴三面就是leader面了,不會問太多技術,結果上來就開始問技術,有點懵逼,快速調整了一下。

1.java的8種基本資料型別(byte、short、char、int、float、long、double、bool)
2.給出兩個Integer,問他們的引用是否相等(考IntegerCache,-128到127的Integer物件會被快取,因此相等)
3.StringBuffer和StringBuilder的區別
4.連續的String拼接JVM是如何完成的(回答在編譯器被優化為StringBuild再進行append())
5.ArrayList的底層實現
6.在白板上用陣列實現一個簡單的ArrayList
7.白板上實現一個二分查詢,可以怎樣優化?(這裡和麵試官進行了討論)

二面面試官是可愛搞笑型(褒義)的,而三面面試官是一個溫柔的大叔,面試開始就告訴我他已經很久沒寫程式碼了,在面試過程中對我錯誤的糾正也一直在說他有點忘記了,回去你自己查一下這一塊,讓人感覺很舒服。

總體來說一面面試官考基礎+框架使用,二面面試官比較偏應用一些,考應用層協議以及一些比較流行的框架,而三面面試官就是純基礎了,面試官講框架這些會只是錦上添花,不會也沒關係,基礎最重要,基礎是長時間積累的(吐槽:前面面試官都在問框架!)。
三面結束之後HR告訴我四面面試官不在,讓我回去等通知,這時候心裡有點忐忑(因為美團被拒那個事),但是回去第二天就收到通知週三(5月16號)去面試。本來以為四面是HR面試,但是後來去了才發現是leader面

滴滴四面(5月16日)
1.自我介紹
2.實習日期相關
3.專案介紹(說我專案經歷太少)
4.未來打算(考研or工作,回答工作)
5.你覺得你的優點是什麼(喜歡敲程式碼)
6.最近在看什麼技術(dubbo、docker),dubbo的優點(服務治理)

四面很短,大概十多分鐘就結束了,之後在回學校的公交車上接到HR通知說四次面試的面試官評價都不錯,面試通過了,offer稽核完畢就會發放。

整體來看基礎最重要,這裡麵包括java基礎、集合原始碼、多執行緒、演算法和資料結構這些,進階的jvm虛擬機器也需要有了解(《JVM虛擬機器》這本書的垃圾收集器和類載入機制部分一定要精讀幾遍)。不管是什麼崗位,常用的演算法都得熟練,面試過程會考,筆試的程式設計題部分更會考!
每次面試開始前的自我介紹不要緊張,這是一個開啟兩個人交流的鋪墊,不然一上來就開始問難免你會緊張。所以說內容不多重要,介紹自己來自哪個大學,什麼專業,喜歡哪些技術,說短了也沒關係,不要太長就ok,你在說的過程中也是面試官讀你簡歷的過程。筆者每次都只是說十幾秒,我來自xx大學xx專業,平常喜歡java後臺技術的研究,沒了。感覺面試官還沒看完簡歷~哈哈

希望我的面試經歷能夠給小夥伴們帶來一定的幫助。