金九銀十最新的美團技術四面已拿熱乎乎的offer,分享面經總結

民工碼農程式設計師發表於2020-11-02


美團我是在拉勾網上投的簡歷,之前也投過一次,簡歷都沒通過刪選.

後來讓一位大佬幫我改了一下簡歷,重新投另一個部門,獲得了面試機會.

話不多說,看核心重點問題吧!!!!

美團技術一面20分鐘

1、自我介紹

說了很多遍了,很流暢撿重點介紹完。

2、問我資料結構演算法好不好

挺好的(其實心還是有點虛,不過最近刷了很多題也只能壯著膽子充胖子了)

3、找到單連結串列的三等分點,如果單連結串列是有環的呢

用快慢指標,一個走一步,一個走三步。如果有環,先判斷環在哪,找最後一個節點,然後用之前的無環的做法

4、講一下專案的架構

我重點講了MVC

5、說一下你熟悉的設計模式

我重點講了單例、工廠方法、代理

5、有沒有配置過伺服器啥啥啥

這個我真不知道,都沒聽過呢,只能誠實說沒有,畢竟都沒法扯。

一面挺匆忙的,我估計面試官剛開完會還沒吃飯呢。他說讓我等,可能再找一個同事面我,可

能就直接告訴我結果了。

從一面面試官的聲音和口吻,我判斷他一定是個部門老大,問的設計偏多,後面hr告訴我他就

是我要去的部門的老大。哈哈。

美團技術二面60分鐘,詳細問答

面完一面正準備出去打羽毛球,北京的電話又來了。(註定這週五參加不了球隊活動了!)

二面:跟一面比起來,二面面試官的聲音聽起來就像是搞技術開發的,果不其然,一個小時的

純技術電話面試!面的特別全面!

1、Spring:有沒有用過Spring,Spring IOC、AOP機制與實現,Spring MVC

其實我挺不想被問到Spring的細節的,框架這些我都沒有複習不太記得了。所以我對面試官說

Spring裡面的一些比較重要的機制我理解的還不錯,然後我用一個實際的例子把我對IOC、

AOP理解講了一下,他聽了說對,理解的不錯(難得遇到一個邊面試邊能給反饋的面試官,好開心)

Spring MVC其實我用過,我就對面試官講了我的專案中用到的Servlet,jsp和javabean實現

的MVC,以及MVC各個模組職責以及每個模組是怎麼聯絡到一起的,最後我補充了一句我想

SpringMVC的思想其實跟這個是一樣的(他說對的,嘿嘿有反饋真好)

2、多執行緒:怎麼實現執行緒安全,各個實現方法有什麼區別,volatile關鍵字的使用,可重入鎖

的理解,Synchronized是不是可重入鎖

這裡我就主要講了Synchronized關鍵字,還有併發包下面的一些鎖,以及各自的優缺點和區別。

volatile關鍵字我主要從可見性、原子性和禁止JVM指令重排序三個方面講的,再講了一下我

在多執行緒的單例模式double-check中用到volatile關鍵字禁止JVM指令重排優化。

3、集合: HashMap底層實現,怎麼實現HashMap執行緒安全

我講了一下HashMap底層是陣列加單連結串列實現,Node內部類,add的過程,Hash衝突解決

辦法,擴容,三種集合檢視。HashMap執行緒安全的實現方式主要講了HashTable、

ConcurrentHashMap以及Collections中的靜態方法SynchronizedMap可以對HashMap進

行封裝。

以及這三種方式的區別,效率表現。

4、JVM記憶體管理,GC演算法,HotSpot裡面的垃圾回收器、類載入

JVM記憶體主要分為五個區,哪些是執行緒共享的,哪些是執行緒獨享的,每個區存放什麼。

GC方面:怎麼判斷哪些物件需要被GC,GC的方法,Minor GC與Full GC。HotSpot GC演算法

以及7種垃圾回收期,主要講了CMS和G1收集器。

類載入:類載入的過程,Bootstrap classloader-ExtClassloader-AppClassloader,父類委

託機制。

5、程式和執行緒的區別

從排程、併發性、擁有的資源和系統開銷四個方面回答的。

6、HTTP有沒有狀態,我說無狀態,怎麼解決HTTP無狀態 怎麼解決HTTP無狀態其實就是怎

麼進行會話跟蹤,有四種方法:URL重寫、隱藏表單域、Cookie、Session。

7、Java IO,NIO,Java中有沒有實現非同步IO

Java IO實現的是同步阻塞,它是怎麼實現同步阻塞的。我拿了read()方法舉例來講的。

NIO實現的是同步非阻塞,我詳細講了一下Selector中的select()方法輪詢說明它是如何實現多路複用IO的。

然後對比了一下他們的效率。面試官可能看我對這一塊比較瞭解,又繼續問我Java中有沒有實現非同步IO,我感覺好像沒有,但面試官說有,讓我想想,其實這裡我並不清楚啦,所以我就對面試官講了一下我對Unix中非同步IO模型的理解,然後說至於Java裡面有沒有我真的不太清楚。(他居然笑了!說你理解是對的,Java裡面有沒有不重要!哈哈)

8、前端會不會,Ajax是什麼,Ajax實現原理

前端我只是會用一些js而已,用過jquery框架,問我Ajax全稱是啥,我猜是非同步的js和xml。Ajax實現原理其實我也不懂,我就只簡單講了一下它通過XMLHttpRequest物件進行非同步查詢,Ajax引擎在客戶端執行,減少了伺服器工作量。

9、讓我設計一個執行緒池

因為我簡歷中有寫到我對多執行緒、併發這一塊理解比較好。所以他老問這方面的題。這個問題因為我之前看過ThreadPoolExecutor的原始碼,所以我就仿照那個類的設計思路來想的,詳細講了一下核心池、建立執行緒可以用工廠方法模式來進行設計、執行緒池狀態、阻塞佇列、拒絕策略這幾個方面。設計的還算比較周全。

10、講幾個設計模式,哪些地方用到了,為什麼要用

單例模式,jdk中的getRuntime();

工廠方法模式:ThreadPoolExcutor用到ThreadFactory;

觀察者模式:java.util包下面的Observable和Observer。

最後主要講了一下工廠方法模式的使用場景。

11、Mysql優化、索引的實現

我從資料庫設計優化和查詢優化兩方面講的。

索引B+樹實現,InnoDB和MyISAM主鍵索引的實現區別,一個聚集一個非聚集。

12、事務的隔離級別

四種隔離級別,可能會出現哪些異常,mysql中預設級別。

13、有沒有用過Hibernate、mybatis、git

這個簡單講一下就好,分別是幹什麼的

14、Linux

我說這個本科學過,但是很久沒用,命令忘光了。他說沒事,考你幾個簡單的:cd、ls、

dir(真的是簡單的)

15、演算法題

從10萬個數中找最小的10個,時間複雜度分析(最大堆,考慮記憶體)

從一個有正有負陣列中找連續子陣列的最大和,時間複雜度分析(動態規劃)

滿二叉樹第i層有多少個節點,n層的滿二叉樹共有多少個節點

終於到我提問環節了

1、你們是什麼部門(他說是核心部門,大資料研發)

2、我對高併發和負載均衡挺有興趣的,但是我平時在學校也沒有這個環境讓我在這方面有所體驗,那你建議我目前可以怎麼學呢(他說這確實是不太好學,只能看些理論和別人的部落格,以後工作中才能慢慢學)

3、中介軟體具體是做什麼的,是解決高併發和負載均衡嗎(他說差不多是的,然後他說我們這個部門不是中介軟體,是大資料部門啊,我說恩我知道)

最後沒啥問題了,他讓我保持電話暢通。

這一面面完,口乾舌燥,我一度懷疑他可能不知道我是在應聘實習生的崗位。有太多要總結的了,放在總結的地方一起講吧。

美團技術三面25分鐘

面試官說是他是另外一個部門的,需要進行交叉面試。

1、MySql優化

2、說下專案做了些什麼,架構之類的

3、在collabedit上線上寫程式碼,題目很簡單是程式設計之美上的原題,一個有序的整數陣列,輸出兩個數,使它們的和為某個給定的值。之前做過很快寫好,然後給他講思路。他繼續問如果陣列無序怎麼辦,先排序。

4、兩個檔案,每個檔案中都有若干個url,找出兩個檔案中相同的url(用HashMap)

這一面挺簡單的,只是增加之前面試沒有過的線上寫程式碼環節,collabedit後來我才瞭解,像facebook一些網際網路公司遠端面試都會用這個線上編輯器寫程式碼,就是文字文件寫,沒有提示,不能編譯執行,跟白板寫一樣。平時練練手就好。

美團技術HR四面30分鐘

三面面試官說他那就是終面,說我過了等hr聯絡我。萬萬沒想到半小時後的hr面居然也是技術。

1、自我介紹,都四面了還自我介紹?!我還以為是單純的hr面,所以介紹的都是我的性格和生活方面的,結果並不是。

2、問專案,問的特別特別細,技術細節,還有遇到什麼問題,怎麼解決的,做專案有沒有人帶,怎麼跟別人溝通的。

3、資料庫優化,如果資料庫一個表特別大怎麼辦 資料庫優化我就講了之前講過很多遍的點,他問一個表特別大怎麼辦:大表分小表,怎麼實現:使用分割槽表

4、確定入職時間 這一面確實讓我感到有壓迫感,專案是本科做的,挺久了,一些技術細節上

也沒太總結,所以問細了我只能連想帶編。

上面的這些面試題都整理成了PDF文件,希望能幫助到你面試前的複習並找到一個好的工作,相對來說也節省了你在網上搜尋資料的時間來學習!!!

Java核心面試寶典

  1. JVM

  2. JAVA集合

  3. JAVA多執行緒併發

  4. JAVA基礎

  5. Spring原理

  6. 微服務

  7. Hetty與PC

  8. 網路

  9. 日誌

  10. Zookeeper

  11. Kafks

  12. Rabbi tMQ

  13. Hbase

  14. MongoDB

  15. Cassandra

  16. 設計模式

  17. 負載均衡

  18. 資料庫

  19. 一致性演算法

  20. JAVA演算法

  21. 資料結構

  22. 加密演算法

  23. 分散式快取

  24. Hadoop

  25. Spark

  26. Storm

  27. YARIN

  28. 機器學習

  29. 雲端計算

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年

 

求來的大廠面試場景(為了學習提升可以沒臉沒皮,啊哈哈哈)

我針對這些大廠的面經場景也找了很多題刷,對自身的提升也是非常大(還特意要了份面試答案)

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年

美團部分面經

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年

好未來面試場景

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年

 

分享一些我個人的學習文件,有需要的朋友自行選擇獲取:

1、面試文件專題整理

既然是要面試,那麼就少不了刷題,實際上春節回家後,哪兒也去不了,我自己是刷了不少面試題的,所以在面試過程中才能夠做到心中有數,基本上會清楚面試過程中會問到哪些知識點,高頻題又有哪些,所以刷題是面試前期準備過程中非常重要的一點。

根據自身面試經歷整理以及不斷收集的(珍藏版)

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年

相關的電子書、底層原始碼

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年

阿里巴巴必備學習知識點

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年

 

最後

很多人感嘆“學而無用”,實際上之所以產生無用論,是因為自己想要的與自己所學的匹配不上,這也就意味著自己學得遠遠不夠。無論是學習還是工作,都應該有主動性,所以如果擁有大廠夢,那麼就要自己努力去實現它。

以上學習資料均免費放送,最後祝願各位身體健康,順利拿到心儀的offer!

資料獲取方式:轉發和評論這篇文章,然後

相關文章