歡迎光臨
每天分享高質量文章

2017年秋招美團Java程式員開發,看我如何拿到offer(面經)

文中的我,指的本文作者是“林歲月”,而不是老艿艿噢

本人是一名本科畢業非計算機專業的程式員,面了阿裡,結果沒過,最後面上了美團,熱乎乎的面經,昨天面的美團,雖然面完了HR面,但是感覺希望不大,希望能走運拿到offer吧。記性不是太好,有一些問題沒能記住,三面技術面面經如下:

美團一面

中間省略掉大概幾個問題,因為我不記得了,下麵記得的基本都是我沒怎麼答好的。

1.瞭解SOA,微服務嗎?

2.分散式系統如何負載均衡?如何確定訪問的資源在哪個伺服器上?

一.輪詢。二.隨機。三.最小響應時間。四. 最小併發數。五.雜湊。

3.設計一個分散式負載均衡緩衝系統,如何快速定位到是那個伺服器(使用key分段、一致性hash)

4.如何保證緩衝區和資料庫之間的強一致性(使用加鎖)

5.HashMap高併發情況下會出現什麼問題,(擴容問題)

6.說一說在瀏覽器中輸入一個url後,直到瀏覽器顯示頁面的過程中發生了什麼(我主要說了DNS,然後他有接著問了DNS的細節,然後就是ARP路由,然後伺服器處理,傳回,瀏覽器呈現,獲取html中的依賴資源)

7.字串中句子的反轉(比如ABC DEF,輸出DEF ABC)(很簡單,可以先反轉整個字串,然後反轉單詞,或者先將句子切分為單詞,然後反轉);

8.給任意二叉樹的所有結點加next指標(這個有原題,也可以參考按層列印二叉樹)。

9.用過反向代理嗎?

美團二面

1.行程間共享記憶體的方式有哪些?(8種)

2.linux下如何檢視網路埠狀態(netstat),如何檢視記憶體使用情況(top);

3.ConcurrentHashMap如何擴容?

4.知道java的異常嗎?

5.執行時異常如果不處理會怎麼樣?應該怎麼處理執行時異常?

6.寫程式碼:給你5000萬個int,求出前1000個最大的數,有2G記憶體。(我剛開始以為5000萬個int很多,還把G和byte的換算忘了,後來面試官指導才想起來。我的方法是維護一個1000的小根堆,然後遍歷陣列,總體下來時間複雜度是O(nlg1000))

7.給你n個不重覆的整數,隨機找出m個不重覆的整數,要求時間和空間複雜度都是O(m)。(方法很簡單,就是每次把取出來的數放到後面,只在前面的陣列隨機訪問就可以了,時間複雜度是O(m),空間複雜度是O(1),不過我剛開始沒有想到把選出來的放後面去)。

8.對於SQL慢查詢的最佳化?(主要是從查詢陳述句和資料庫表設計兩個方面來考慮,查詢陳述句方面可以增加索引,增加查詢篩選的限制條件;資料庫表設計的時候可以拆分表,設計得更細粒度。但是後來才發現面試官想要的就是查詢大量資料的慢查詢問題的最佳化。)

9.用過哪些容器?(tomcat)對比過Tomcat與其他伺服器的區別嗎?比如nginx?

10.用過動態代理嗎?以後會經常用到的。

美團三面

1.自我介紹,說說你專案中的資料流向(畫結構框圖)

2.看過什麼書?

3.說說深入理解JVM中印象最深刻的章節(我說了JVM記憶體模型,垃圾回收和類載入);

補充:還問了堆和棧中存的是什麼?static修飾的遍歷存在哪裡?(方法區)

4.說說《Effective Java》中你印象最深的三條和你的理解

5.你覺得你哪一塊只是最熟悉(我說了Java的基本資料結構)

6.那你說說HashMap的內部實現;

7.HashMap是執行緒安全的嗎?(不是,ConcurrentHashMap是)

8.那ConcurrentHashMap內部是如何實現的?每個segment是個什麼資料結構?(HashTable)

9.你的專案中用到哪些技術?(Spring)

10.說說你用了它的什麼?(Spring IOC用的最多)

11.Spring的優點?Spring AOP的原理?Spring如何實現解耦合?

12.對連結串列瞭解嗎?(我說是List嗎)是,(瞭解ArrayList和LinkedList),那你說說他們的區別?

13.會做連結串列兩個結點的交換嗎?(連結串列反轉嗎?)是的,你寫程式碼實現把。

14.再寫一個,給你一個連結串列和一個整數k(k大於等於0,小於等於連結串列長度,連結串列長度未知),按k步長反轉連結串列(比如1->2->3->4->5->6->7,當k=3的時候結果是3->2->1->6->5->4->7)

15.說說mybatis配置了xml過後是如何完成資料庫操作的?

面試總結

  1. 三年以上java開發經驗或五年以上網際網路開發背景

  2.  熟練使用springmvc框架

  3.  掌握面向物件設計開發,熟悉常見設計樣式

  4. 熟練使用mysql進行應用開發,熟悉資料庫原理及常用效能最佳化技術

  5. 熟悉分散式,快取,訊息搜尋等機制,有分散式系統開發經驗,叢集架構設計和使用者優先

  6.  有責任心,有想法,熱愛技術,喜歡鑽研

  7.  有較強的邏輯思維能力,善於分析,歸納,快速定位並解決問題

  8. 很多小問題都記不清了,這是我昨天下午回來就記錄下來的,感覺自己也儘力了。

最後很幸運的拿到offer了,10月才開始找工作的我也算圓滿結束秋招,今年秋招也不遠了,在此祝各位準備找工作程式員們都能找到自己滿意的工作,加油,好運早晚會來的。

在此給大家分享一波福利,自己收集了一些Java高併發、分散式、微服務、JVM、效能最佳化等架構資料,另外還有一套面試題,都免費分享給大家,感興趣的可以加我的Java架構師交流群。


掃碼加QQ群:566290106,免費領取資料

對Java技術,架構技術感興趣的同學 對面試有疑惑,技術遇到瓶頸的,歡迎加QQ群:566290106,一起學習,相互討論。

群內已經將知識體系整理好,歡迎加群免費領取。

希望能夠幫助到你們。也希望能幫忙轉發給更多朋友!謝謝。

贊(0)

分享創造快樂