
自序
這次面試的公司有一點點多,主要是因為畢業(yè)后前兩份工作找的都很草率,這次換工作就想著,emm,畢業(yè)三年了,該找個工作好好沉淀幾年了。
先說下這次面試的結(jié)果吧:
到HR面的:
阿里、美團(tuán)、滴滴、金山云、每日一淘、火幣、宜信、旺店通、黃包車、linkedMe
其他:
小米(四輪技術(shù)面,大概4個小時的樣子,大數(shù)據(jù)部門,不知道是不是四面的負(fù)責(zé)人嫌棄我木有大數(shù)據(jù)的經(jīng)驗,我確實木有哈)
京東(電話面試一輪+現(xiàn)場兩輪,面試完快中午一點了,說是讓我先回家,后面讓hr 電話聯(lián)系我,一周后一面的面試官問我還考慮京東不,如果考慮的話,就進(jìn)行后續(xù),對不起,我已經(jīng)不考慮了,希望以后有機(jī)會再合作,所以沒有后續(xù)了)
頭條(二面完gg,我的算法確實菜哈,然后leetcode又只刷過10道題,去面頭條,確實有些作死的節(jié)奏,實在是對不起幫我內(nèi)推的石沖大佬)
愛奇藝(電話面試一輪+現(xiàn)場兩輪,到技術(shù)終面了,這個怪我,面試官也一直很忙,然后我倆就互相一直改面試時間,最后定的那個面試時間我還遲到了一個小時,還是時間到了才給hr 打電話說一個小時后才能到,雖然我知道這樣做非常不好,但是當(dāng)時情況比較復(fù)雜,自己根本忙不過來,一直在面試,也沒有辦法中途給hr 打電話說一下。一天面兩家,兩家離的還比較遠(yuǎn)的小伙伴吸取一下教訓(xùn)。我本來是想約第二天下午的,hr 就想當(dāng)天,結(jié)果就晚上7:40開始二面了,面到9點,然后木有然后了)
有贊(電話面試一輪+現(xiàn)場兩輪,到技術(shù)終面了,面試官“base考慮杭州嗎”,我“啊,你們北京不是也需要人嗎,最好北京哈,杭州暫時不考慮”,然后木有然后了,哈哈。后面面阿里的時候我就自己打臉了,面試官“base杭州考慮嗎”,我“面過阿里我就去杭州,面不過我就在北京”。愛,就要大膽的說出來。)
這次面試基本都是三~四輪技術(shù)面,很多都是每一輪都有至少一道算法題,所以準(zhǔn)備換工作的小伙伴,算法可以搞起來了哈,leetcode easy和medium 難度的就ok了,當(dāng)然如果你也要刷hard 難度的題,是更好的哈。我作為一名只刷過10道leetcode的渣渣,表示以后要好好刷leetcode了,拯救一下自己的智商。準(zhǔn)備面頭條的小伙伴,那就medium 和 hard難度的搞起來吧。你們加油,我就不想了。
很多小伙伴懷疑我是985、211或者研究生畢業(yè),都不是的哈,渣本(但是我還是很愛我的母校的),16年畢業(yè),我一個妹子都可以做到的,你們更可以做到,所以相信自己,去努力就好了。這篇文章主要是記錄一下自己的面試經(jīng)歷,分享一些小伙伴們都很關(guān)注的面試題,然后文章末尾我會推薦一些書,完全免費推薦的哈,我個人感覺不錯的,可以提升技術(shù)的,當(dāng)然面試中也會對你有特別大的幫助。阿里的面試題不會分享哈,這次主要分享tmdj、以及其他公司的一些面試題,把我分享的這些面試題都掌握了,對想去面阿里的小伙伴的幫助也是非常非常大的。當(dāng)然,面試題只是起一個查漏補(bǔ)缺的作用,并不是讓你直接去整理答案,去背答案的哈。一個合格的面試官,是會針對你的簡歷去問的,即每個人的面試題都是不一樣的。
頭條

二輪技術(shù)面,17:00~20:25,晚飯時間hr 小姐姐還特貼心的帶我體驗了一把傳說中的頭條餐廳,不超過半小時
1、聊項目,畫項目架構(gòu)圖,畫一個用戶從發(fā)起請求 到接收到響應(yīng) 中間經(jīng)過哪些服務(wù) 每個服務(wù)做什么事情 的流程圖
2、講項目中的難點、挑戰(zhàn),你是如何解決的
3、redis 中有幾種類型 & 各自底層怎么實現(xiàn)的 & 項目中哪個地方用了什么類型,怎么使用的
4、redis如何實現(xiàn)分布式鎖,zk如何實現(xiàn)分布式鎖,兩者的區(qū)別。如果service還沒執(zhí)行完,分布式鎖在redis中已經(jīng)過期了,怎么解決這種問題
5、synchronized底層實現(xiàn),加在方法上和加在同步代碼塊中編譯后的區(qū)別、類鎖、對象鎖
6、鎖升級的過程
7、java運行時區(qū)域 及 各個區(qū)域的作用、對GC的了解、java內(nèi)存模型 及 為什么要這么設(shè)計
8、對索引的理解,組合索引,索引的最佳實踐
9、countDownLatch用過沒有,在項目中如何使用的,對aqs 的了解
10、寫生產(chǎn)者消費者問題,考慮高并發(fā)的情況,可以使用Java 類庫,白紙寫代碼
11、如下圖所示

12、設(shè)計一個發(fā)號器,考慮集群和高并發(fā)的情況,要求發(fā)號器生成的id是遞增趨勢,通過id可以區(qū)分出來是今天生成的id還是昨天生成的id,但是生成的id中不能直接帶有日期,要具有一定的混淆功能,白紙寫代碼
13、一個二位數(shù)組,每個元素都可以往上下左右四個方向走,尋找最長遞增路徑。如下圖所示,最長遞增徑即紅色字體路徑。白紙寫代碼。

美團(tuán)

電話面試(40分鐘)+現(xiàn)場三輪技術(shù)面試(3.5小時)+hrbp面試(30分鐘)
1、數(shù)據(jù)庫和緩存的一致性問題。先更新數(shù)據(jù)庫,再更新緩存,若更新完數(shù)據(jù)庫了,還沒有更新緩存,此時有請求過來了,訪問到了緩存中的數(shù)據(jù),怎么辦?
2、聚簇索引/非聚簇索引,mysql索引底層實現(xiàn),為什么不用B-tree,為什么不用hash,葉子結(jié)點存放的是數(shù)據(jù)還是指向數(shù)據(jù)的內(nèi)存地址,使用索引需要注意的幾個地方
3、mysql默認(rèn)的事務(wù)隔離級別,mvcc,rr怎么實現(xiàn)的,rc如何實現(xiàn)的
4、mysql間隙鎖有沒有了解,死鎖有沒有了解,寫一段會造成死鎖的sql語句,死鎖發(fā)生了如何解決,mysql有沒有提供什么機(jī)制去解決死鎖
5、談下對GC的了解,何為垃圾,有哪些GC算法,有哪些垃圾回收器,cms和g1的區(qū)別,emm,還有一個直擊靈魂的問題,看過cms的源碼嗎,笑cry
6、有沒有排查過線上oom的問題,如何排查的
7、有沒有使用過jvm自帶的工具,如何使用的
8、假設(shè)有下圖所示的一個full gc 的圖,縱向是內(nèi)存使用情況,橫向是時間,你如何排查這個full gc的問題,怎么去解決你說出來的這些問題

9、說說對java中集合類的理解,項目中用過哪些,哪個地方用的,如何使用的
10、對CAS的理解,CAS帶來的問題,如何解決這些問題
11、volatile底層、synchronized底層、鎖升級的過程、MESI
12、ehcache支持哪些緩存
13、juc有研究沒有,講一講
14、聊項目,畫項目架構(gòu)圖,畫一個用戶從發(fā)起請求 到接收到響應(yīng) 中間經(jīng)過哪些服務(wù) 每個服務(wù)做什么事情 的流程圖
15、講項目中的難點、挑戰(zhàn),如何解決的,項目這一塊會問的特別細(xì)
16、如何保證RocketMQ 消息的順序性,如何解決重復(fù)消費問題
17、項目中如何保證接口的冪等操作
18、講一講對redis 的了解,項目中如何使用的,哪個地方使用的,為什么要使用
19、哨兵機(jī)制、redis兩種備份方式的區(qū)別,項目中用的哪種,為什么
20、講一講對分布式鎖的了解
21、項目中系統(tǒng)監(jiān)控怎么做的
22、如何理解Spring中的AOP 和 IOC,以及DI,讀過Spring源碼沒有
23、讀過MyBatis源碼沒有
24、說一個你了解最多的框架,說出你的理解
25、如何理解分布式事務(wù),為什么會出現(xiàn)這個問題,如何去解決,了解哪些分布式事務(wù)中間件
26、聊一聊對分庫分表的理解
27、hystrix功能 & 在項目中怎么使用的 & hystrix 怎么檢測斷路器是否要開啟/關(guān)閉 & hystrix 實現(xiàn)原理,除hystrix之外的其他熔斷限流中間件有了解沒有,了解多少說多少
28、dubbo有了解沒有
29、怎么理解java 中和 mysql 中的樂觀鎖、悲觀鎖
30、一致性hash
滴滴

現(xiàn)場三輪技術(shù)面試+一輪hrbp面(4小時5分鐘)
1、聊項目,畫項目架構(gòu)圖,畫一個用戶從發(fā)起請求 到接收到響應(yīng) 中間經(jīng)過哪些服務(wù) 每個服務(wù)做什么事情 的流程圖,講數(shù)據(jù)庫設(shè)計
2、處理過線上oom問題沒有,如何處理的
3、遇到過線上服務(wù)器cpu飆高的情況沒有,如何處理的
4、線上有沒有遇到其他問題,如何處理的
5、對線程池的理解,項目中哪個地方使用了,如何使用的,用的Excutor框架中的哪個實現(xiàn)類,為什么用這個
6、對CAS的理解,CAS帶來的問題,如何解決這些問題
7、volatile底層、synchronized底層、鎖升級的過程、MESI
8、對mysql索引的理解、對組合索引的理解、索引的最佳實踐
9、分布式鎖的實現(xiàn)、對比redis分布式鎖 & zk分布式鎖
10、唯一id如何實現(xiàn)的,snowflake實現(xiàn)原理,snowflake有哪些問題,如何避免根據(jù)訂單號可以推算出今天的訂單量
11、如果線上一個功能是用棧結(jié)構(gòu)實現(xiàn)的,使用過程中要注意哪些問題,為什么
12、怎么理解線程安全
13、怎么理解接口冪等,項目中如何保證的接口冪等
14、怎么理解微服務(wù),服務(wù)如何劃分,可以從哪幾個方面去劃分,為什么這樣劃分,微服務(wù)帶來了哪些好處,哪些壞處,如何看待這個問題
15、如何理解網(wǎng)關(guān),網(wǎng)關(guān)帶來的好處和壞處,如何解決
16、hystrix功能 & 在項目中怎么使用的 & hystrix 怎么檢測斷路器是否要開啟/關(guān)閉 & hystrix 實現(xiàn)原理/
17、怎么理解命令模式和觀察者模式,手寫一個觀察者模式或者命令模式的代碼,策略模式也行
18、掌握哪些設(shè)計模式,常用哪些,項目中如何使用的,為什么用這個,不用那個,手寫一個線程安全的單例模式
19、如何設(shè)計一個秒殺系統(tǒng)
20、如果我現(xiàn)在就是要實現(xiàn)每秒10w請求,不能熔斷限流,如何去設(shè)計
21、假設(shè)現(xiàn)在雙十一零點,大量下單請求,如何對這些訂單進(jìn)行分庫分表,為什么
22、服務(wù)A調(diào)用服務(wù)B中一個接口,服務(wù)B調(diào)用服務(wù)C中一個接口,如何實現(xiàn)若服務(wù)B響應(yīng)服務(wù)A成功,則服務(wù)C一定響應(yīng)服務(wù)B成功,需要考慮系統(tǒng)性能問題
23、遞歸使用中有什么需要注意的地方,遞歸寫法一般可以用什么去替換
24、有兩個表,table a,table b,寫sql查詢出僅在table a中的數(shù)據(jù)、僅在table b中的數(shù)據(jù)、既在table a 又在table b 中的數(shù)據(jù)
25、spring 源碼有了解沒有
26、myBatis源碼有了解沒有
27、mysql事務(wù)隔離級別、mvcc
我:既然現(xiàn)在很多業(yè)務(wù)線都是Go了,有沒有考慮把剩余的業(yè)務(wù)線也轉(zhuǎn)成Go呀?
面試官:我認(rèn)為,語言只是工具,語言不應(yīng)該是影響開發(fā)的一個因素吧。
面試官說的很有道理。
京東

電話面試(30分鐘)+現(xiàn)場兩輪技術(shù)面試(1小時40分鐘),面完12:50,說讓我先回來,后續(xù)hr 電話和我聯(lián)系,一周后一面的面試官問我還考慮京東嗎,對不起,已經(jīng)不考慮了,希望以后有機(jī)會再合作
1、一個final修飾的屬性,定義的時候沒有初始化,在無參構(gòu)造函數(shù)中初始化,可以嗎,為什么
2、說說對java中集合類的理解,項目中用過哪些,哪個地方用的,如何使用的,為什么不用其他的集合類
3、hashMap,concurrentHashMap底層實現(xiàn),
4、list刪除是怎么實現(xiàn)的,遍歷的時候可以刪除嗎,為什么
5、redis中有哪些數(shù)據(jù)結(jié)構(gòu),了解過其底層怎么實現(xiàn)的嗎,和java中相似的數(shù)據(jù)結(jié)構(gòu)的對比
6、redis是單線程的還是多線程的,為什么這么快
7、redis hash中某個key過大,變?yōu)镾tring類型的大key,怎么處理,使用中如何避免出現(xiàn)這種問題
8、設(shè)計模式在項目中哪個地方用到了,怎么使用的,能不能畫一個你熟悉的設(shè)計模式的UML圖,手寫單例模式,手寫靜態(tài)內(nèi)部類實現(xiàn)的單例模式
9、講一講mysql索引,實際工作中,哪些場景用了b+tree索引,哪些場景用了hash索引
10、explain 可以看到哪些信息,什么信息說明什么,explain的結(jié)果列講一下
11、Spring源碼看過沒有,會多少講多少
12、MyBatis源碼看過沒有,會多少講多少
13、cas,cas的缺點,如何解決
14、aqs,countDownLatch如何實現(xiàn)
15、線程池如何實現(xiàn),核心線程數(shù)和最大線程數(shù)設(shè)置成多少,為什么這么設(shè)置,項目中哪個地方使用了線程池,使用時需要注意什么
16、mysql事務(wù)隔離級別,幻讀,臟讀,項目中用什么事務(wù)隔離級別,為什么
17、volatile底層原理、synchronized實現(xiàn)機(jī)制,
18、對XA、TCC的理解,了解哪些分布式事務(wù)框架,有什么缺點
19、feign 和 dubbo,了解多少說多少
20、eureka 和 zookeeper,了解多少說多少
21、hystrix 和 sentinel,了解多少說多少
22、Spring cloud alibaba,了解多少說多少
23、對分庫分表、讀寫分離的了解,了解多少說多少
24、畫一下java 線程幾個狀態(tài) 及 狀態(tài)之間互相轉(zhuǎn)換的圖
25、聊項目,畫項目架構(gòu)圖,畫一個用戶從發(fā)起請求 到接收到響應(yīng) 中間經(jīng)過哪些服務(wù) 每個服務(wù)做什么事情 的流程圖,講數(shù)據(jù)庫設(shè)計 具體到部分表中有哪些字段
26、我們部門體量比較大,可能需要加班,到凌晨兩三點的那種,也可能通宵,通宵是大促期間,你能接受嗎
27、也會加班到十點,這個不是大促期間,但也不是每天,非常態(tài)情況,你能接受嗎,你在哪里住,過來要多久,有男朋友嗎
一起去吃午飯吧,我們這邊有員工餐廳,不了不了,我回家吃飯吧
下面是面試TMDJ之外的公司中遇到的一些問題哈,TMDJ中已經(jīng)被問到的就不再重復(fù)寫了,只寫一下個別公司中我還記得的面試題
others
火幣:
四輪技術(shù)面試+一輪hr 面試(4小時),后來hr 小姐姐和我說,她們正常是兩輪技術(shù)面試,因為技術(shù)面試完面試官一直沒有找到她,然后,emm,就又來了一輪技術(shù)面試,又來了一輪技術(shù)面試,笑cry
1、kafka 如何保證消息順序消費、在consumer group 中新增一個consumer 會提高消費消息的速度嗎、那如果我想提高消息消費的速度,我要怎么辦
2、redis幾種數(shù)據(jù)結(jié)構(gòu) 及 底層,項目中如何使用的redis
3、哨兵機(jī)制、選舉算法
4、一致性hash
5、redis是單線程的還是多線程的,為什么速度這么快
6、多路復(fù)用的幾種方式以及區(qū)別
7、對線程池的理解,在項目中如何使用的,多個線程之間如何共享數(shù)據(jù),多個進(jìn)程之間如何共享數(shù)據(jù)
8、hashMap、concurrentHashMap的區(qū)別 及 底層實現(xiàn)、hashMap和hashTable 的區(qū)別
9、什么是紅黑樹,什么是b-tree,為什么hashMap中用紅黑樹不用其他樹
10、對mysql 索引的理解,為什么mysql索引中用b+tree,不用b-tree 或者其他樹,為什么不用hash 索引
11、數(shù)據(jù)庫和緩存的雙寫一致性問題
每日一淘:
三輪技術(shù)面試+一輪hrbp 面
1、用過哪些Object類的方法,如何使用的
2、java如何實現(xiàn)序列化的,Serialization底層如何實現(xiàn)的
3、countDownLatch如何實現(xiàn)的
4、項目中監(jiān)控報警機(jī)制如何做的,說說你的了解
5、線上服務(wù)器cpu飆高,如何處理這個問題
6、服務(wù)A調(diào)用服務(wù)B,用戶請求服務(wù)A,發(fā)現(xiàn)返回較慢,如何定位這個問題
7、TIME_WAIT是什么狀態(tài)還記得嗎,什么情況下網(wǎng)絡(luò)會出現(xiàn)這個狀態(tài)
linkedMe:
二輪技術(shù)面試+一輪hr面試
1、內(nèi)核態(tài) 和 用戶態(tài)、cas 和 sout 哪個用到了內(nèi)核態(tài)和用戶態(tài)的切換
2、哪些典型的應(yīng)用用的是udp
3、線程池有了解嗎,項目中如何使用的
4、計算密集型/IO密集型 任務(wù) 分別如何設(shè)置線程池的核心線程數(shù)和最大線程數(shù),為什么這么設(shè)置
5、假如我下午5點要和5個人一起開會,但是這5個人現(xiàn)在都出去了,不在公司,但是今天會回來,問,我如何開這場會,用java 并發(fā)方面的知識回答
旺店通:
5小時+,中午我還木有吃飯,下午面試時候真是餓的要死,而且下午腦細(xì)胞死了好多好多
1、先機(jī)試(50分鐘時間,三選二,不聯(lián)網(wǎng),明確告知機(jī)試不通過沒有后續(xù))
2、一面給面試官講一下自己機(jī)試題的思路,面試官運行看結(jié)果,然后問了幾個問題(什么是B-tree,什么是B+tree之類的)
3、筆試(10道選擇題+2道數(shù)據(jù)庫+2道算法題,30分鐘)
4、二面給面試官講自己的機(jī)試題的思路,面試官運行看結(jié)果,然后給面試官講筆試題,一道一道講為什么這么寫,過程中面試官可能會改題,然后問你怎么解決修改后的題,然后又問了幾個題
5、三面開始正常面試,但不是看簡歷問,一部分是簡歷上的,一部分是看面試官心情
6、hr面
當(dāng)場給了offer,但是啊,從他家出來的時候的想法就是,早知道下午這個樣子,不如中午吃個午飯,回家好好睡一覺
想去他家的小伙伴就好好寫代碼吧,多看java 中一些方法的實現(xiàn),因為機(jī)試的題目都要求不能用java 中提供的方法,要自己寫,然后還要好好準(zhǔn)備算法
算法題
1、[1,1,2,2,3,4,4,5,5,5] 找出不重復(fù)的元素(黃包車)
2、反轉(zhuǎn)鏈表,要求時間復(fù)雜度O(N),空間復(fù)雜度O(1) (火幣)
3、非遞歸實現(xiàn)斐波那契數(shù)列 (愛奇藝)
4、這一周股市價格為[2,6,1,4,8],求哪一天買入哪一天賣出,可獲得最大收益,最大收益為多少 (愛奇藝)
5、按照箭頭方向查找二叉樹 (金山云)

6、表a b c之間用id關(guān)聯(lián),求陰影部分的數(shù)據(jù) (金山云)

7、一個整形無序數(shù)組,里面三個數(shù)只和等于一個目標(biāo)值,求這三個數(shù) (小米)
8、鏈表問題 (小米)

9、撲克牌問題 (小米)
有十張撲克牌,從上面開始抽,抽出一張放桌子上,然后再抽出一張放撲克牌的最下面,這樣循環(huán)往復(fù)的操作,直到手里的牌都沒有了。這時,桌子上牌的順序正好是1 2 3 4 5 6 7 8 9 10。要求寫代碼求出原順序
10、手寫大頂堆 (linkedMe)
11、手寫LRU 算法 (火幣)
12、字符串相加 (滴滴)
兩個數(shù)字類型的字符串,直接轉(zhuǎn)int或者double肯定都放不下,然后求這兩個數(shù)的和,返回值還是字符串,15分鐘時間,要求無bug
13、尋找目標(biāo)值位置 (滴滴)
有一個二維數(shù)組,數(shù)組橫向有序,縱向有序,求目標(biāo)值的位置,10分鐘時間
14、求字符串“efabcbaefehiabcba”中最長的回文數(shù),不去重(美團(tuán))
15、反轉(zhuǎn)int類型的值x,不要借用String,只用int 即可。&& 針對該程序,寫出其應(yīng)有的測試用例 (美團(tuán))
16、top K 問題(每日一淘)
HR面
真誠待人,以真心換真心,不要弄虛作假,HR 問什么問題,如實回答即可。在回拒offer 時候,也請好好說話。
tips
其實面試過程中,你是可以感受到哪些面試官是真的很欣賞你,哪些只是想找一個可以干活的人的,最后一定要去一個欣賞你的面試官那里,因為待遇真的會不一樣(假裝我體驗過只是想找我干活的leader哈,很感激以前遇到的每一位leader 都很欣賞我,給我我想要的空間去做自己想做的事情,真的非常感謝你們)。
嗯,免費安利環(huán)節(jié)到了,學(xué)不了吃虧學(xué)不了上當(dāng)哈
《深入理解Java虛擬機(jī)》《Java并發(fā)編程的藝術(shù)》《Java并發(fā)編程實戰(zhàn)》《MySQL技術(shù)內(nèi)幕 InnoDB存儲引擎》《Redis設(shè)計與實現(xiàn)》《JVM G1源碼分析和調(diào)優(yōu)》《重新定義Spring Cloud實戰(zhàn)》《Redis深度歷險:核心原理與應(yīng)用實踐》《Spring技術(shù)內(nèi)幕》《myBatis技術(shù)內(nèi)幕》《深入拆解Java虛擬機(jī)》等等等等
讀者福利
同時在這里分享一下一直以來整理的Java后端進(jìn)階筆記文檔和學(xué)習(xí)資料免費分享給大家!
文檔里的詳解資料太全面,所以只把小部分知識點截圖出來粗略介紹,每個小節(jié)點里面都有更細(xì)化的內(nèi)容有需要的朋友可以進(jìn)我的一個學(xué)習(xí)交流群:909666042 免費獲??!
【Java程序員匯集交流群】:https://jq.qq.com/?_wv=1027&k=5tubK2h
“做程序員,圈子和學(xué)習(xí)最重要”因為有了圈子可以讓你少走彎路,擴(kuò)寬人脈,擴(kuò)展思路,學(xué)習(xí)他人的一些經(jīng)驗及學(xué)習(xí)方法!


更多筆記分享

