2017年秋招美團Java程序員開發,看我如何拿到offer

熱乎的面經,昨天面的美團,雖然面完了HR面,可是感受但願不大,但願能走運拿到offer吧。三面技術面面經以下:html

2017年秋招美團Java程序員開發,看我如何拿到offer

2017年秋招美團Java程序員開發,看我如何拿到offerjava

美團一面:mysql

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

1.瞭解SOA,微服務嗎?nginx

2.分佈式系統如何負載均衡?如何肯定訪問的資源在哪一個服務器上?程序員

一.輪詢。二.隨機。三.最小響應時間。四. 最小併發數。五.哈希。面試

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

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

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. 有較強的邏輯思惟能力,善於分析,概括,快速定位並解決問題

不少小問題都記不清了,這是我昨天下午回來就記錄下來的,感受本身也盡力了。

最後很幸運的拿到offer了,10月纔開始找工做的我也算圓滿結束秋招,祝各位還在找工做的同窗都能找到本身滿意的工做。加油,好運遲早會來的。

我特地整理了一下,有不少問題不是靠幾句話能講清楚,因此乾脆找朋友錄製了一些視頻,用來回答這些面試題。不少問題其實答案很簡單,可是背後的思考和邏輯不簡單,要作到知其然還要知其因此然。若是想學習Java工程化、高性能及分佈式、高性能、深刻淺出。性能調優、Spring,MyBatis,Netty源碼分析的朋友能夠加個人Java進階羣:675047716,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給你們。

相關文章
相關標籤/搜索