2017年秋招美团Java程序员开发,看我如何拿到offer
轉(zhuǎn)載自??2017年秋招美團Java程序員開發(fā),看我如何拿到offer
本人是一名本科畢業(yè)非計算機專業(yè)的程序員,面了阿里,結(jié)果沒過,最后面上了美團,熱乎乎的面經(jīng),昨天面的美團,雖然面完了HR面,但是感覺希望不大,希望能走運拿到offer吧。記性不是太好,有一些問題沒能記住,三面技術面面經(jīng)如下:
?
美團一面:
中間省略掉大概幾個問題,因為我不記得了,下面記得的基本都是我沒怎么答好的。
1.了解SOA,微服務嗎?
2.分布式系統(tǒng)如何負載均衡?如何確定訪問的資源在哪個服務器上?
一.輪詢。二.隨機。三.最小響應時間。四. 最小并發(fā)數(shù)。五.哈希。
3.設計一個分布式負載均衡緩沖系統(tǒng),如何快速定位到是那個服務器(使用key分段、一致性hash)
4.如何保證緩沖區(qū)和數(shù)據(jù)庫之間的強一致性(使用加鎖)
5.HashMap高并發(fā)情況下會出現(xiàn)什么問題,(擴容問題)
6.說一說在瀏覽器中輸入一個url后,直到瀏覽器顯示頁面的過程中發(fā)生了什么(我主要說了DNS,然后他有接著問了DNS的細節(jié),然后就是ARP路由,然后服務器處理,返回,瀏覽器呈現(xiàn),獲取html中的依賴資源)
7.字符串中句子的反轉(zhuǎn)(比如ABC DEF,輸出DEF ABC)(很簡單,可以先反轉(zhuǎn)整個字符串,然后反轉(zhuǎn)單詞,或者先將句子切分為單詞,然后反轉(zhuǎn));
8.給任意二叉樹的所有結(jié)點加next指針(這個有原題,也可以參考按層打印二叉樹)。
9.用過反向代理嗎?
美團二面:
1.進程間共享內(nèi)存的方式有哪些?(8種)
2.linux下如何查看網(wǎng)絡端口狀態(tài)(netstat),如何查看內(nèi)存使用情況(top);
3.ConcurrentHashMap如何擴容?
4.知道java的異常嗎?
5.運行時異常如果不處理會怎么樣?應該怎么處理運行時異常?
6.寫代碼:給你5000萬個int,求出前1000個最大的數(shù),有2G內(nèi)存。(我剛開始以為5000萬個int很多,還把G和byte的換算忘了,后來面試官指導才想起來。我的方法是維護一個1000的小根堆,然后遍歷數(shù)組,總體下來時間復雜度是O(nlg1000))
7.給你n個不重復的整數(shù),隨機找出m個不重復的整數(shù),要求時間和空間復雜度都是O(m)。(方法很簡單,就是每次把取出來的數(shù)放到后面,只在前面的數(shù)組隨機訪問就可以了,時間復雜度是O(m),空間復雜度是O(1),不過我剛開始沒有想到把選出來的放后面去)。
8.對于SQL慢查詢的優(yōu)化?(主要是從查詢語句和數(shù)據(jù)庫表設計兩個方面來考慮,查詢語句方面可以增加索引,增加查詢篩選的限制條件;數(shù)據(jù)庫表設計的時候可以拆分表,設計得更細粒度。但是后來才發(fā)現(xiàn)面試官想要的就是查詢大量數(shù)據(jù)的慢查詢問題的優(yōu)化。)
9.用過哪些容器?(tomcat)對比過Tomcat與其他服務器的區(qū)別嗎?比如nginx?
10.用過動態(tài)代理嗎?以后會經(jīng)常用到的。
美團三面:
1.自我介紹,說說你項目中的數(shù)據(jù)流向(畫結(jié)構(gòu)框圖)
2.看過什么書?
3.說說深入理解JVM中印象最深刻的章節(jié)(我說了JVM內(nèi)存模型,垃圾回收和類加載);
補充:還問了堆和棧中存的是什么?static修飾的遍歷存在哪里?(方法區(qū))
4.說說《Effective Java》中你印象最深的三條和你的理解
5.你覺得你哪一塊只是最熟悉(我說了Java的基本數(shù)據(jù)結(jié)構(gòu))
6.那你說說HashMap的內(nèi)部實現(xiàn);
7.HashMap是線程安全的嗎?(不是,ConcurrentHashMap是)
8.那ConcurrentHashMap內(nèi)部是如何實現(xiàn)的?每個segment是個什么數(shù)據(jù)結(jié)構(gòu)?(HashTable)
9.你的項目中用到哪些技術?(Spring)
10.說說你用了它的什么?(Spring IOC用的最多)
11.Spring的優(yōu)點?Spring AOP的原理?Spring如何實現(xiàn)解耦合?
12.對鏈表了解嗎?(我說是List嗎)是,(了解ArrayList和LinkedList),那你說說他們的區(qū)別?
13.會做鏈表兩個結(jié)點的交換嗎?(鏈表反轉(zhuǎn)嗎?)是的,你寫代碼實現(xiàn)把。
14.再寫一個,給你一個鏈表和一個整數(shù)k(k大于等于0,小于等于鏈表長度,鏈表長度未知),按k步長反轉(zhuǎn)鏈表(比如1->2->3->4->5->6->7,當k=3的時候結(jié)果是3->2->1->6->5->4->7)
15.說說mybatis配置了xml過后是如何完成數(shù)據(jù)庫操作的?
面試總結(jié)
1.三年以上java開發(fā)經(jīng)驗或五年以上互聯(lián)網(wǎng)開發(fā)背景
2. 熟練使用springmvc框架
3. 掌握面向?qū)ο笤O計開發(fā),熟悉常見設計模式
4. 熟練使用mysql進行應用開發(fā),熟悉數(shù)據(jù)庫原理及常用性能優(yōu)化技術
5. 熟悉分布式,緩存,消息搜索等機制,有分布式系統(tǒng)開發(fā)經(jīng)驗,集群架構(gòu)設計和使用者優(yōu)先
6. 有責任心,有想法,熱愛技術,喜歡鉆研
7. 有較強的邏輯思維能力,善于分析,歸納,快速定位并解決問題
很多小問題都記不清了,這是我昨天下午回來就記錄下來的,感覺自己也盡力了。
最后很幸運的拿到offer了,9月份才開始找工作的我也算圓滿結(jié)束秋招,今年秋招也不遠了,在此祝各位準備找工作程序員們都能找到自己滿意的工作,加油,好運早晚會來的。
總結(jié)
以上是生活随笔為你收集整理的2017年秋招美团Java程序员开发,看我如何拿到offer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 历届快乐男声冠军是谁
- 下一篇: 微信拍了你功能怎么用 微信拍了拍用法