熱乎的面經(jīng)口四,昨天面的美團(tuán),雖然面完了HR面秦陋,但是感覺(jué)希望不大蔓彩,希望能走運(yùn)拿到offer吧。三面技術(shù)面面經(jīng)如下:
一面:
中間省略掉大概幾個(gè)問(wèn)題,因?yàn)槲也挥浀昧顺嘟溃旅嬗浀玫幕径际俏覜](méi)怎么答好的大磺。。探膊。
1.了解SOA杠愧,微服務(wù)嗎?
2.分布式系統(tǒng)如何負(fù)載均衡逞壁?如何確定訪問(wèn)的資源在哪個(gè)服務(wù)器上流济?
一.輪詢。二.隨機(jī)腌闯。三.最小響應(yīng)時(shí)間绳瘟。四. 最小并發(fā)數(shù)。五.哈希姿骏。
3.設(shè)計(jì)一個(gè)分布式負(fù)載均衡緩沖系統(tǒng)糖声,如何快速定位到是那個(gè)服務(wù)器(使用key分段、一致性hash)
4.如何保證緩沖區(qū)和數(shù)據(jù)庫(kù)之間的強(qiáng)一致性(使用加鎖)
5.HashMap高并發(fā)情況下會(huì)出現(xiàn)什么問(wèn)題分瘦,(擴(kuò)容問(wèn)題)
6.說(shuō)一說(shuō)在瀏覽器中輸入一個(gè)url后蘸泻,直到瀏覽器顯示頁(yè)面的過(guò)程中發(fā)生了什么(我主要說(shuō)了DNS,然后他有接著問(wèn)了DNS的細(xì)節(jié)嘲玫,然后就是ARP路由悦施,然后服務(wù)器處理,返回去团,瀏覽器呈現(xiàn)抡诞,獲取html中的依賴資源)
7.字符串中句子的反轉(zhuǎn)(比如ABC DEF,輸出DEF ABC)(很簡(jiǎn)單土陪,可以先反轉(zhuǎn)整個(gè)字符串昼汗,然后反轉(zhuǎn)單詞,或者先將句子切分為單詞鬼雀,然后反轉(zhuǎn))顷窒;
8.給任意二叉樹(shù)的所有結(jié)點(diǎn)加next指針(這個(gè)有原題,也可以參考按層打印二叉樹(shù))取刃。
9.用過(guò)反向代理嗎蹋肮?
二面:
1.進(jìn)程間共享內(nèi)存的方式有哪些?(8種)
2.linux下如何查看網(wǎng)絡(luò)端口狀態(tài)(netstat)璧疗,如何查看內(nèi)存使用情況(top);
3.ConcurrentHashMap如何擴(kuò)容馁龟?
4.知道java的異常嗎崩侠?
5.運(yùn)行時(shí)異常如果不處理會(huì)怎么樣?應(yīng)該怎么處理運(yùn)行時(shí)異常坷檩?
6.寫代碼:給你5000萬(wàn)個(gè)int却音,求出前1000個(gè)最大的數(shù)改抡,有2G內(nèi)存。(我剛開(kāi)始以為5000萬(wàn)個(gè)int很多系瓢,還把G和byte的換算忘了阿纤,后來(lái)面試官指導(dǎo)才想起來(lái)。我的方法是維護(hù)一個(gè)1000的小根堆夷陋,然后遍歷數(shù)組欠拾,總體下來(lái)時(shí)間復(fù)雜度是O(nlg1000))
7.給你n個(gè)不重復(fù)的整數(shù),隨機(jī)找出m個(gè)不重復(fù)的整數(shù)骗绕,要求時(shí)間和空間復(fù)雜度都是O(m)藐窄。(方法很簡(jiǎn)單,就是每次把取出來(lái)的數(shù)放到后面酬土,只在前面的數(shù)組隨機(jī)訪問(wèn)就可以了荆忍,時(shí)間復(fù)雜度是O(m),空間復(fù)雜度是O(1)撤缴,不過(guò)我剛開(kāi)始沒(méi)有想到把選出來(lái)的放后面去刹枉。。屈呕。)
8.對(duì)于SQL慢查詢的優(yōu)化嘶卧?(主要是從查詢語(yǔ)句和數(shù)據(jù)庫(kù)表設(shè)計(jì)兩個(gè)方面來(lái)考慮,查詢語(yǔ)句方面可以增加索引凉袱,增加查詢篩選的限制條件芥吟;數(shù)據(jù)庫(kù)表設(shè)計(jì)的時(shí)候可以拆分表,設(shè)計(jì)得更細(xì)粒度专甩。但是后來(lái)才發(fā)現(xiàn)面試官想要的就是查詢大量數(shù)據(jù)的慢查詢問(wèn)題的優(yōu)化钟鸵。。涤躲。)
9.用過(guò)哪些容器棺耍?(tomcat)對(duì)比過(guò)Tomcat與其他服務(wù)器的區(qū)別嗎?比如nginx种樱?
10.用過(guò)動(dòng)態(tài)代理嗎蒙袍?以后會(huì)經(jīng)常用到的
三面:
1.自我介紹,說(shuō)說(shuō)你項(xiàng)目中的數(shù)據(jù)流向(畫結(jié)構(gòu)框圖)
2.看過(guò)什么書嫩挤?
3.說(shuō)說(shuō)深入理解JVM中印象最深刻的章節(jié)(我說(shuō)了JVM內(nèi)存模型害幅,垃圾回收和類加載);
補(bǔ)充:還問(wèn)了堆和棧中存的是什么岂昭?static修飾的遍歷存在哪里以现?(方法區(qū))
4.說(shuō)說(shuō)《Effective Java》中你印象最深的三條和你的理解
5.你覺(jué)得你哪一塊只是最熟悉(我說(shuō)了Java的基本數(shù)據(jù)結(jié)構(gòu))
6.那你說(shuō)說(shuō)HashMap的內(nèi)部實(shí)現(xiàn);
7.HashMap是線程安全的嗎?(不是邑遏,ConcurrentHashMap是)
8.那ConcurrentHashMap內(nèi)部是如何實(shí)現(xiàn)的佣赖?每個(gè)segment是個(gè)什么數(shù)據(jù)結(jié)構(gòu)?(HashTable)
9.你的項(xiàng)目中用到哪些技術(shù)记盒?(Spring)
10.說(shuō)說(shuō)你用了它的什么憎蛤?(Spring IOC用的最多)
11.Spring的優(yōu)點(diǎn)?Spring AOP的原理纪吮?Spring如何實(shí)現(xiàn)解耦合俩檬?
12.對(duì)鏈表了解嗎?(我說(shuō)是List嗎)是彬碱,(了解ArrayList和LinkedList)豆胸,那你說(shuō)說(shuō)他們的區(qū)別?
13.會(huì)做鏈表兩個(gè)結(jié)點(diǎn)的交換嗎巷疼?(鏈表反轉(zhuǎn)嗎晚胡?)是的,你寫代碼實(shí)現(xiàn)把嚼沿。
14.再寫一個(gè)估盘,給你一個(gè)鏈表和一個(gè)整數(shù)k(k大于等于0,小于等于鏈表長(zhǎng)度骡尽,鏈表長(zhǎng)度未知)遣妥,按k步長(zhǎng)反轉(zhuǎn)鏈表(比如1->2->3->4->5->6->7,當(dāng)k=3的時(shí)候結(jié)果是3->2->1->6->5->4->7)
15.說(shuō)說(shuō)mybatis配置了xml過(guò)后是如何完成數(shù)據(jù)庫(kù)操作的攀细?
總結(jié)
1.三年以上Java開(kāi)發(fā)經(jīng)驗(yàn)或五年以上互聯(lián)網(wǎng)開(kāi)發(fā)背景
2. 熟練使用springmvc框架
3. 掌握面向?qū)ο笤O(shè)計(jì)開(kāi)發(fā)箫踩,熟悉常見(jiàn)設(shè)計(jì)模式
4. 熟練使用mysql進(jìn)行應(yīng)用開(kāi)發(fā),熟悉數(shù)據(jù)庫(kù)原理及常用性能優(yōu)化技術(shù)
5. 熟悉分布式谭贪,緩存境钟,消息搜索等機(jī)制,有分布式系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)俭识,集群架構(gòu)設(shè)計(jì)和使用者優(yōu)先
6. 有責(zé)任心慨削,有想法,熱愛(ài)技術(shù)套媚,喜歡鉆研
7. 有較強(qiáng)的邏輯思維能力缚态,善于分析,歸納堤瘤,快速定位并解決問(wèn)題
很多小問(wèn)題都記不清了玫芦,這是我昨天下午回來(lái)就記錄下來(lái)的,感覺(jué)自己也盡力了宙橱。
最后很幸運(yùn)的拿到offer了姨俩,10月才開(kāi)始找工作的我也算圓滿結(jié)束秋招蘸拔,祝各位還在找工作的程序員們都能找到自己滿意的工作师郑。加油环葵,好運(yùn)早晚會(huì)來(lái)的。