經多方要求,還是記錄一下自己的春招經歷,分享下春招經驗。運氣佔了很大部分,拿到了夢寐以求的offer。(今應邀前來掘金大佬社群,發下面經)
同時給各位關注我的人說聲抱歉,一直在準備春招,沒有分享很多東西,
不過很快會有的,在不斷整理中。
複製程式碼
一、寫在前頭
首先,我的面試經歷和一下面霸、收割機大佬相比,不是特別豐富,只是略有感悟,分享這幾個月來的心路歷程,也讓後來者可以借鑑一下而已。
博主是雙非學校,本科大三,非計算機專業,大家就不要多問了。
二、注重心態
明確一點: offer = 心態(30%)+實力(30%)+運氣(40%)
樓主也曾經在這場春招心態炸裂過,因為看到很多不公平,看到很多覺得侮辱自己汗水和淚水的東西。不過炸裂的幾天後想到,如果這樣下去,我會給帶節奏的,會造成更大的悲劇,所以不行,必須積極起來。
三、春招的暗坑與技巧:(以大廠為目標)
1) 比拼的東西:
春招因為很多人沒實習經驗,所以比拼列表:學校>實習>專案>獎項
對於學校牛逼的,你很大優勢了,只要把基礎打紮實,對專案把握大點就ok的。 對於學校不行的,比如博主,麻煩你去實習一下,大膽出去。 對於學校不行也沒實習的,麻煩你把專案仔細研究,每個點研究透徹。 獎項?那只是加分項。前三個都沒一個,春招就涼涼了。
2) 投遞技巧:
內推,只有內推。千方百計找到,不然涼涼。
官申時,注意整理成一個文件,方便你複製。當然你也可以用外掛。不過不完善。
3)筆試準備:
刷題。詳情見牛客。
4)面試準備:
1- 你的知識架構 2- 你的表達能力 3- 你對人家公司的瞭解 4- 你對專案的把握程度 5- 你的延伸思考 6- 你關注的廣度
四、大家最想看的面經:(只寫已確認結果的)
1)螞蟻金服(已拿offer)
螞蟻是樓主第一次的面試記錄,所以不習慣,記錄的不詳盡,很抱歉。
一面:(45分鐘26秒)
1- 介紹專案,問一堆專案的
2- tomcat快取,聊下快取的整體理解,知道多少種快取
3- SQL優化思路,聯合索引與底層樹結構的映像關係,索引結構(B+、B-),為什麼用這樣的結構
4- spring的bean生命週期(詳細)、作用域
5- 樂觀悲觀鎖的設計,如何保證原子性,解決的問題
6- 看過你部落格,解釋下lucene原理,倒排索引,怎樣進行中文分詞,基於什麼進行分詞
7- 你是怎麼設計系統快取的,為什麼,什麼場景
8- Java基礎,說我看過你部落格,你就說下集合、io、多執行緒的吧。
9- 介紹下部門
二面:(43分鐘10秒) 自我介紹 1- 介紹下你在專案中最突出的點。你是怎樣設計的,你擔當的角色跟設計過程是怎樣,遇到的難題是什麼,怎麼解決?
2- 你所說的SQL優化,具體是指哪些,怎麼做到的。我問需要詳細講解執行計劃嗎?不需要了。
3- 你是看過Java原始碼或者開源框架的原始碼的吧?我說:對呀。 面試官:那你看過哪些呢??
我說:比如Spring、JDK裡面的一系列集合類、JUC包下的大部分原始碼、MyBatis原始碼等等
嗶哩嗶哩說了一堆,也問一堆。
4- 那你對自己的學習規劃是什麼呢??呃,我最近在學習分散式。 面試官:喔?怎麼學的,學了些什麼? 那就說了一堆分散式的東西
5- 你還有什麼問題要問我的嗎?
三面:(15分鐘35秒)
1- 大學以來的時間規劃
2- 專案一個功能,功能點是怎樣,為什麼封裝,效能瓶頸問題是什麼,講下解決方案 那你對你的系統怎麼進行升級
3- topN的大資料量題
4- 為什麼選阿里不選百度騰訊
才15分鐘,以為涼涼
四面 :(40分鐘32秒)
1- 自我介紹
2- 你相比於同屆,你有什麼優勢??有什麼case證明
3- 你說你喜歡新事物,有什麼case證明嗎?
4- 專案對你最印象深刻的點?給你什麼成長?case case case
4- 工作地點要求??
5- 實習時間?
6- 你有什麼想問我的?
總結起來:
阿里十分注重你對原始碼的理解,對你所學東西的理解,對專案的理解。並且如果你有你的部落格,你的github是一個十分大的加分項。
2) 拼多多(已拿offer)
一面:(大概一個鐘) 1- char和double的位元組,以及在記憶體的分佈是怎樣
2- 虛擬機器JVM記憶體模型,詳細講下。GC呢?詳細點
3- 物件記憶體佈局,然後講下物件的死亡過程?
4- 物件頭,詳細講下
5- syn原理詳細,syn內拋異常會怎樣,死鎖嗎?還是釋放掉?怎麼排查死鎖?死鎖會怎樣?有沒有什麼更好的替代方案?
6- CPU高?什麼情況cpu高?解決什麼問題?
7- 詳細講一下集合,HashSet原始碼,HashMap原始碼,如果要執行緒安全需要怎麼做?
8- 資料結構學過吧,聊一下?學過什麼結構?講下樹和佇列?B樹呢?
9- 作業系統學過吧,聊一下?講一下系統記憶體是怎樣的?分段分頁虛擬記憶體?
10- 頁面置換演算法呢?多少種?有最優的置換演算法嗎?
11- http和https?http1.0,1.1,2.0,講下長連線和短連線?https是怎樣的?如果我篡改了公鑰呢?怎麼防止?
12- 講下請求頭細節?
13- 平時是怎樣學習的?
二面 :(大概50分鐘)
1- 你對後端怎麼理解?
2- 你對接入層要思考什麼東西?遇到過哪些問題?搭建系統要考量哪些因素?
3- 學過MySQL是吧?講下MySQL的叢集?叢集遇到過什麼問題?sql的優化?
你目前為止遇到的最大資料量是多少?知道100萬時候怎麼設計嗎?1000萬呢?如果像拼多多那樣,過幾十億呢?
4- 一致性雜湊是幹嘛的?
5- 多執行緒是解決什麼問題的?執行緒池解決什麼問題?
6- 學過計算機網路是吧?socket熟悉嗎?對它的讀寫緩衝區有理解嗎?怎麼的?那滑動視窗是怎樣的?為什麼這樣設計?
擁塞演算法知道嗎?哪些,分別怎樣? 7- 你有遇到過臨界區問題嗎?有遇到過嗎?你在專案遇到這個問題是怎樣解決的?
8- 搭建高併發高可用系統需要怎樣設計?考慮哪些東西,有多少說多少。
9- 你對快取有什麼理解?快取是解決什麼問題?後端快取有哪些,分別解決什麼問題?
10- 你有什麼想問我的?
HR面:(40分鐘左右)
1- 你父母做什麼的?
2- 為什麼從事網際網路?
3- 你對加班怎麼看?
4- 說了下拼多多的情況
5- 聊下拼多多這款產品
6- 薪資(老實說,很高)
7- 還有啥疑問。
總結:
拼多多比較注重你的架構能力,實戰能力,還有一些普通的基礎。
3)滴滴出行(已拿offer)
一面: (48分鐘36秒,視訊面) 聊會人生
自我介紹
1- 聊下HashMap原始碼,有多詳細講多詳細,死鎖問題,解釋畫圖。然後synMap和concurrentHashMap,主要的設計原理。
2- 執行緒池,如何設計的,裡面的引數有多少種,裡面的工作佇列和執行緒佇列是怎樣的結構,如果給你,怎樣設計執行緒池?
3- AQS原理,ReentranLock原始碼,設計原理,整體過程。
4- 繼續聊多執行緒原始碼,syn原理,然後一個場景設計題
5- 聊一下分散式鎖
6- 聊一下架構,接入層架構,服務層架構。聊下技術棧,spring boot,spring cloud、docker
7- 聊下spring原始碼,知道多少,都聊一下
8- 聊下spring註解,@Autowire,@Resource,以及他們的解析過程
9- 然後專案問題,優化問題
10- 你有什麼想問我的?
二面:(32分鐘36秒,視訊面) 聊下人生,聊多少offer了,怎樣實習,實習時間,轉正問題。
1- float f = 1.4f;double d = 1.4d; 與 float f = 1.5f;double d = 1.5d; 是否為true,記憶體是怎樣的
2- split的原始碼,split("a|b|c");得出多少個陣列
3- 熟悉maven是吧?我們來聊下maven的原始碼原理,
maven衝突的時候,怎麼選擇依賴包,我們怎麼查,我們遇到兩個不一樣的版本,我們應該如何去選擇,為什麼?
4- 怎麼認為一個類是執行緒安全?執行緒安全的定義是什麼?Java有多少個關鍵字進行同步?為什麼這樣設計?(聊了一大堆,一堆為什麼)
5- 兩個執行緒設計題。記得一個是:t1,t2,t3,讓t1,t2執行完才執行t3,原生實現。
6- 寫個字尾表示式,為什麼要設計字尾表示式,有什麼好處?然後寫下中綴。
7- 你學過什麼課程?然後聊下作業系統,核心、使用者之類。
8- get和post,講下區別,要我模擬出抓包來。
三面:(56分鐘32秒,視訊面)
1- 說下你印象最深的專案,架構、設計都講講。解決什麼核心問題,成長了什麼東西
2- 你說的SQL優化,怎麼優化的,怎麼思考的?整體講下資料庫優化
3- 說下最近學了什麼東西?我說了分散式、深入Java虛擬機器。
講下JVM優化? 講下怎麼思考分散式的東西,說下學到什麼程度了,都詳細講講。有沒有什麼實踐的??
多少種RPC框架?都講下。虛擬機器學到多深了??講下?
4- 詳細講下cookie和session,token,OAuth2.0協議
5- 你是怎麼理解spring的,ssh框架呢?
6- 課程和實習怎麼抉擇
7- 怎麼安排你自己的課程學習
有什麼想問我的?
HR面:
1- 聊下滴滴的業務
2- 實習時間
3- 什麼時候報導
4- 以後的職業發展問題
5- 還有啥offer
總結:
滴滴出行,很難。有的問到靈魂深處。比較注重對一些細節的把控,原始碼的理解,框架的理解。
4)三七互娛(已拿offer)
一面:
1- 一上來,把所有認識熟用的JUC下的類寫出來,講下使用,然後講下原生的執行緒操作
2- 開閉原則,解析工廠方法模式,建造者模式,區別。手擼出來。
3- 講下JVM的大頁模式,JVM記憶體模型
4- 什麼是敏捷開發,防禦性程式設計,並行程式設計。Team Leader的思考
5- 逃逸分析是什麼,作用是什麼,用途是什麼
6- 反轉連結串列手擼
7- MySQL有多少個引數可調,除了最大連線數。全部列出來,一個個分析。
8- 專案如何分組,效能優化小組應該做哪些
9- 平時怎樣學習?
二面:
自我介紹
1- 我看你做過效能優化,比如你怎麼分析專案裡面的OOM的,記憶體洩露呢?詳細說思路
2- 說下多執行緒,我們什麼時候需要分析執行緒數,怎麼分析,分析什麼因素
3- 我們來說下接入層的搭建,認知分析
4- 也來說下,削峰的多種實現,redis?mq?
5- 為什麼用mq就能削峰?解決什麼問題?
6- 問下專案的系統構建,思考,為什麼這樣構建?
等HR吧
HR面:
1- 聊下大學生活,有什麼亮點
2- case證明的實力。
3- 你的學習安排
4- 聊下你組建的團隊,選人
5- 你有什麼想問我的?
總結:
三七互娛給我的感覺,注重的是你對團隊的思考,你的相關基礎,以及你對使用過的東西的思考。
5)京東:(口頭offer,準備發)
一面:(32分鐘)
自我介紹
1- 抽象方法和類方法的區別,static的抽象方法可以嗎?
2- 說下Java的克隆體系
3- 說下集合的體系
4- 說幾個演算法?
5- 什麼時候可以來實習
6- 平時怎麼學習的?分散式、虛擬機器?學了啥東西,怎麼學,具體說下
7- 基於怎樣去寫部落格的?
8- 除了Java還學了什麼技術,或者說別的東西?
9- 我們來講講redis,你覺得redis是個怎樣的東西,除了快取還有什麼 知道它的過期策略嗎?詳細說下
10- 如果後續有面試,你看什麼時候可以?
二面:(50分鐘)
自我介紹
1- 聊下專案
涉及OOM、JVM優化、原始碼問題、資料庫優化、多執行緒等問題
2- 聊下優化過的索引,怎麼優化
3- 快排,給一串陣列,把具體每次patition寫下,最終結果也寫
45, 32, 41, 35, 38, 20, 50
4- 聊下三次握手、四次揮手
5- 聊下長連線的問題
6- 看下下面的設計合理不合理
Class C1{ boolean equals(Object b){ return b.toString().equals(this.toString()); } }
順帶聊下equals設計、toString的重寫設計
7- 一個整數status, 判斷第K個位元位是否為位元1
思路+程式碼
8- 再聊下http的http basic authentication
9- 你有啥想問我的
HR面:(15分鐘)
1- 你有什麼問題問我的?
2- 你現在有什麼offer
3- 工作地點怎麼考慮的
4- 你在學校的社團成長了什麼
5- 你父母做什麼的,在哪裡工作,既然在廣東,沒考慮過嗎??你應該在廣東工作啊
6- 你對這個業務感興趣嗎?
7- 你想在公司成長什麼東西?
8- 你的優點,你的缺點
9- 周圍人對你的評價
10- 你還有什麼問題想問我的?
嗯,之後的hr會跟你聯絡offer下達問題
總結:
比較注重通用的設計基礎,基本演算法的理解。還有你的廣度認知。
6)騰訊:(內推二面掛了)
蜜汁自信地投了wxg
一面:(35分鐘)
1- 你是廣工的嗎?是的
2- 你的專業是非純計算機專業嗎??好吧,是的。
3- 你的專案是怎麼開展的,你的協同過濾演算法是怎樣的?資料模型是怎樣?為什麼這樣設計
4- JVM記憶體模型,我給他從1.6講到1.8
5- 專案,這個功能怎麼設計的,怎麼做的,進行了什麼優化。索引的缺點?
6- 聊聊併發包你瞭解多少,都說說
7- 你的專案涉及到任務排程quatz問題,是怎麼設計的。有什麼經驗分享下嗎?
8- 嗯,來道基本的動態規劃吧,錢幣問題。
你有什麼想問我的?
二面:(40分鐘)
1- 直接聊人生,現在大幾,學校在哪之類。
2- 聊專案,為什麼這個功能這樣做,說下整體功能架構,說下用什麼資料庫,什麼引擎,為什麼用這個?
然後,中間懟一懟,功能不難嘛,實習做的功能也不是特別牛,我覺得不如在學校自學。 3- 聊人生吧,你的學校經歷
4- 你的課程學習
5- 你怎麼安排自己的時間的
6- 你說你清晰自己的道路,怎樣個清晰法?
7- 我看你挺活躍的,你是單身嗎?為什麼?
8- 你的比賽中的角色是怎樣的?
有什麼想問的??
總結:
沒完全面完,無法總結評價,據說今年鵝廠收3000人,可能我還不夠水平吧。
五、寫在後面:
無論是正在春招的人,還是以後春招的人,祝福你們!希望你們拿到想要的offer。
樓主有確定結果的公司面試,會補上後續面經的,感謝支援。 下面是博主的部落格,歡迎點評,指出錯誤,也歡迎來討論技術問題。