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

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

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

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

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

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

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

- 表a b c之間用id關聯,求陰影部分的資料 (金山云)

- 一個整形無序陣列,里面三個數只和等于一個目標值,求這三個數 (小米)
鏈表問題 (小米)

- 撲克牌問題 (小米) 有十張撲克牌,從上面開始抽,抽出一張放桌子上,然后再抽出一張放撲克牌的最下面,這樣回圈往復的操作,直到手里的牌都沒有了,這時,桌子上牌的順序正好是1 2 3 4 5 6 7 8 9 10,要求寫代碼求出原順序
- 手寫大頂堆 (linkedMe)
- 手寫LRU 演算法 (火幣)
- 字串相加 (滴滴) 兩個數字型別的字串,直接轉int或者double肯定都放不下,然后求這兩個數的和,回傳值還是字串,15分鐘時間,要求無bug
- 尋找目標值位置 (滴滴) 有一個二維陣列,陣列橫向有序,縱向有序,求目標值的位置,10分鐘時間
- 求字串“efabcbaefehiabcba”中最長的回文數,不去重(美團)
- 反轉int型別的值x,不要借用String,只用int 即可,&& 針對該程式,寫出其應有的測驗用例 (美團)
- top K 問題(每日一淘)
HR面
真誠待人,以真心換真心,不要弄虛作假,HR 問什么問題,如實回答即可,在回拒offer 時候,也請好好說話,
tips
其實面試程序中,你是可以感受到哪些面試官是真的很欣賞你,哪些只是想找一個可以干活的人的,最后一定要去一個欣賞你的面試官那里,因為待遇真的會不一樣
(假裝我體驗過只是想找我干活的leader哈,很感激以前遇到的每一位leader 都很欣賞我,給我我想要的空間去做自己想做的事情,真的非常感謝你們)
嗯,免費安利環節到了,學不了吃虧學不了上當哈
《深入理解Java虛擬機》
《Java并發編程的藝術》
《Java并發編程實戰》
《MySQL技術內幕 InnoDB存盤引擎》
《Redis設計與實作》
《JVM G1原始碼分析和調優》
《重新定義Spring Cloud實戰》
《Redis深度歷險:核心原理與應用實踐》
《Spring技術內幕》《myBatis技術內幕》
《深入拆解Java虛擬機》
等等等等
需要更多大廠面試題的,請關注公眾號:程式零世界(C0W1024) 回復”學習“ 即可免費領取
來源:Bella的技術輪子 ,作者:Bella醬

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/162011.html
標籤:Java
