超硬核Java工程師秋招回憶錄+面經彙總,為了拿BAT的研發offer我都做了那些準備?

来源:https://www.cnblogs.com/AntCoder/archive/2020/07/26/13381927.html
-Advertisement-
Play Games

秋招總結 寫在最前 我寫過很多篇秋招總結,這篇文章應該是最後一篇總結,當然也是最完整,最詳細的一篇總結。秋招是我人生中一段寶貴的經歷,不僅是我研究生生涯交出的一份答卷,也是未來職業生涯的開端。僅以此文,獻給自己,以及各位在求職路上的,或者是已經經歷過校招的朋友們。不忘初心,方得始終。 前言 在下本是 ...


秋招總結

寫在最前

我寫過很多篇秋招總結,這篇文章應該是最後一篇總結,當然也是最完整,最詳細的一篇總結。秋招是我人生中一段寶貴的經歷,不僅是我研究生生涯交出的一份答卷,也是未來職業生涯的開端。僅以此文,獻給自己,以及各位在求職路上的,或者是已經經歷過校招的朋友們。不忘初心,方得始終。

前言

在下本是跨專業渣考研的985渣碩一枚,經歷研究生兩年的學習積累,有幸於2019秋季招聘中拿到幾個公司的研發崗offer,包括百度,阿裡,騰訊,今日頭條,網易,華為等。

(在秋招末期,有幸又拿到了滴滴和亞馬遜的offer,那時已經11月份了,所以之前的文章里都沒有提到過)

一路走來也遇到很多困難,也踩了很多坑,同時我自己也探索了很多的學習方法,總結了很多心得體會,並且,我對校園招聘也做了一些研究和相應的準備。在今年的秋季招聘結束以後,我也決定把這些東西全部都寫成文字,做成專題,以便分享給更多未來將要參加校招的同學。

大學時期的迷茫與堅定

我的本科專業是電子信息工程,基本沒有接觸過電腦專業的課程,只學過c語言,然後在大三的時候接觸過java,Android,以及前端開發。這時候我只是一個剛剛入門的菜鳥,還不知道軟體開發的水有多深,抱著試一試的態度去應聘了很多公司。結果可想而知,連簡歷篩選都沒有通過。

當年我對游戲開發很有興趣,特別是對網易游戲情有獨鍾,但是當我看到網易游戲研發工程師的招聘要求時,我只能望而卻步,因為它要求學歷至少是985的碩士。

也因為這個契機,我在大三的暑假開始準備考研,花了一個月的時間深思熟慮之後,選擇了華科作為我的目標院校。

於是,2016年的下半年,我成為了“兩耳不聞窗外事,一心只讀聖賢書”的考研黨,回想起來那確實是玩命學習的半年時間,每天穩定泡在圖書館8個小時以上,有時候學到宿舍都能學到晚上12點,那時候感覺自己完全變了一個人似的,可能當一個人為了某個目標而努力時,真的會變得不一樣。最終我順利地考上了,令我意外的是,成績還挺不錯。

研究生時期的方向選擇

對於即將讀研的同學來說,一般有兩件事很重要,一件事是選擇導師,一件事是選擇方向。

我在剛讀研的時候最頭疼的也是這兩件事情。首先說明一下,我讀的是專碩,所以實驗室一般不搞科研,有部分導師會帶項目,由於我不打算在實驗室做項目(因為我更希望去大公司里鍛煉幾年),所以我當時本著想要找實習的想法選擇了導師,事實證明我的選擇還是很正確的,我在研二有大段時間去參加實習,讓我在大廠里有足夠的時間去鍛煉和學習。

而選擇方向這件事,我倒是折騰了好久。研一期間我做的最多的事情就是看書了,當時自己的方向還不明確,所以找了很多書來看。當別人都在專研數據挖掘和機器學習時,我還在各種方向之間搖擺不定。

我在讀研之前想做游戲開發和Android開發,但我以前也學過Java Web開發。於是我在網上瞭解對應方向的資訊,發現游戲研發的就業面比較窄。

最後,我綜合公司的崗位情況,個人興趣,以及我之前的學習經歷等因素,選定了Java開發方向。

於是,我在學校的實訓項目中選擇了Java Web項目,從此也真正意義上地踏上了Java的學習之路。

笨鳥先飛,勤能補拙

儘管我的入學成績是全學院的top3,但是,我發現,作為非科班出身的我,和很多科班同學相比,還是有一定差距的。

大部分同學本科都上過電腦專業的相關課程,比如電腦網路,操作系統,數據結構等等,而我以前連聽都沒聽過,除此之外,他們一般都會幾段比較完整的項目經驗,至少在Java Web方面已經算是比較熟悉了。而我在當時,只學了數據結構,另外接觸過一些Java基礎,有一部分項目經驗,基本上就是入門水平。

於是我痛定思痛,決定好好彌補我的不足,平時一有空就去圖書館找些書來看,不論是操作系統,電腦網路,還是資料庫等本科課程,我都會找一些對應的書籍來看,當時不太清楚其實有些課程其實不需要特地去補,以至於我連電腦組成原理,編譯原理,軟體測試等方面的書都特地找來看,現在想想也是挺逗比的。

由於我們上的課比較水,所以上課時間反而變成了我自學基礎課程的大好時光了。所以我平時上課的時候都會帶兩三本書,一到兩周內看完一本,雖然可能吸收的不是特別好,但是對當時的我來說還是有很大幫助的。

除此之外,有時候我還會偷偷去旁聽有一些本科生的課程,這也是因為我在自學一些課程的時候遇到了困難,比如《操作系統》,《資料庫原理》等等。於是我花時間研究了一下本科生的課表,趁著自己沒課的時候趕緊去旁聽課程。有時候感覺自己在課堂中顯得非常突兀,尷尬地想要逃跑,但總算是堅持地聽完了一門資料庫的課程。

此外,我還在各種視頻網站上看網課,比亦或是看中國MOOC的電腦基礎課程,裡面的操作系統,資料庫等課程也讓我印象深刻。

就這樣,每天我都把自己的時間填滿,愣是在研一上學期看了好幾本書,當時書的版本現在有的記不清了,主要是電腦網路,操作系統,電腦組成原理,另外還有軟體工程,軟體測試,設計模式,等書籍。就這樣,我靠著這段時間的堅持把電腦基礎課程補上來了一些。

歷盡艱辛,終得實習

時間來到研一下半頁,這時候我剛剛結束了學校的Java Web的項目實訓課程,在做這個項目期間,我發現自己暴露出了很多問題,技術實踐能力不足,Java基礎不扎實。這件事情也給我自己敲響了警鐘,因為我計劃在春招期間找一份大廠的實習,但是目前看來我的水平還遠遠不夠。

壓力之下,只有努力一條出路。於是,從那時候起,我開始了“留守“實驗室的學習生活。為什麼要在實驗室學習,一是因為學習氣氛好,二是因為平時大家也可以互相交流問題。

每天早上9點到實驗室打開電腦,晚上9點背電腦回寢室。大部分時間我會花在看書上,這段時間主要看的都是Java相關的書籍,借鑒的是江南白衣大佬的“Java後端書架”,比如《深入理解JVM虛擬機》,《Java併發編程藝術》,《深入分析Java Web技術內幕》,《深入剖析Spring源碼》等等。

另外一部分時間我會用來看一些技術博客,我主要是根據面經上的知識點按圖索驥,找到對應講解該知識點的文章,那時候主要還是通過搜索引擎來找文章,當然有時候看到一些重點難點也會自己寫一些博客。不過這個時期並不是我大量寫博客的階段,主要還是看一些講解面試知識點的技術博客為主。

除此之外在面試前幾天我會花時間去看這家公司的面經,搞懂每一個面經上的知識點,並且記錄在我的筆記上,光是面經相關的筆記我就記了100多篇,這樣的學習習慣我一直堅持到了秋招,確保每個面試知識點都能被我記住,消化,直至完全理解。

慢慢的,筆記越來越多,我參加面試的公司也越來越多,於是我開始不斷完善自己的簡歷,總結自己的面試技巧,選擇合適的網申時機。從頭到尾我大概花了3個月的時間在找實習上,期間大大小小參加了20多次面試,我也從一開始面試一問三不知的菜鳥,逐漸變成了面霸,到複習末期,我對Java常見面試知識點已經瞭然於胸,同時也越來越自信,不管面什麼大廠都不慌不忙。

這樣的日子持續了好幾個月,所謂世上無難事,只怕有心人。到最後,實驗室里每個人都拿到了心儀的實習offer。

實習路上,我明白了很多

踏出學校大門,我的實習之路才剛剛開始。8個月左右的實習時間,說長也長,說短也短。但經歷過這段實習之後,我才明白了很多事情。

在豬場實習的日子里,我第一次瞭解大公司的開發流程,親自參與項目代碼的開發,我的導師會和我提需求,會指導我怎麼做得更好。在這裡的成長無疑是非常快速的,但我很快意識到我的問題所在,不熟悉部門技術棧,對很多Java Web的技術原理都不太熟悉,這段時間我意識到了自己的知識深度和廣度都可能都有待提高。

不過由於家裡的一些事情。我提前離職了,所以在豬場呆的時間很短,以致於我沒來得及搞懂部門項目的技術架構就走了,這也讓我在離開以後感覺很遺憾,所以我下定決心在下個實習單位要好好做。

離開豬場後我來到了熊廠。部門給我提的需求不算太難,大部分都是一些CURD的工作,但是這次很快就意識到了問題所在,就是我不太熟悉部門的整體技術棧,所以在需要借鑒別人代碼時偶爾會看不懂。後來部門又給了新的重構需求,此時的我開始焦慮起來,是不是應該做出一些改變呢。

終於,我找到了新的目標,我要搞懂部門的項目架構,瞭解相關技術棧(我們部門做的是私有雲),一開始,我會請教我的導師,儘量去瞭解項目的架構設計,除此之外,我還會利用一些時間去看其他同事負責的代碼,並且通過一些文檔和PPT去瞭解這些代碼的功能和意義。結合代碼和文檔,再加上和同時的交流,我對部門項目的架構逐漸熟悉起來,為了更好地理解每一塊代碼的作用,我還為一些模塊的代碼寫了註釋。

當然,光看代碼和文檔還不能解決所有問題,因為這個項目的重點難點不在Web應用,而是在底層技術,這個項目中包含了兩套架構,分別是一套OpenStack集群和一套docker集群。為了學習這兩塊內容,我先是看了很多博客,然後在平臺上跑虛擬機和容器來做實踐,最後又看了這方面的一些書籍,主要是《OpenStack設計與實現》,《docker技術入門實戰》。

但是這還不夠,虛擬化技術與Linux內核息息相關,又需要學習者對操作系統和計算網路非常熟悉,我自知這些內容我學得還不夠深入,於是我花大量時間看這方面的書,當時也遇到了幾本確實不錯的書,分別是《深入理解電腦系統》,《電腦網路:自頂向下方法》,還有一本沒來得及看完的《Linux內核設計與實現》。雖然以後不一定會作雲計算方向的開發,但是學完這些東西我還是非常開心的。

到後來,我工位上的書越來越多,我對部門的技術棧也越來越熟悉,有時候我還會去聽公司內各個團隊組織的技術分享,有空的時候看看內網的技術課程,真正地實現了自己在技術廣度上的拓展。

有時候我覺得,實習生活是會騙人的,你佩戴著和正式員工一樣的工牌,和他們做著類似的事情,會讓你覺得你的水平已經和他們差不多了,但事實上是,在轉正之前,你和他們還差得遠,所以不要停下自己前進的腳步,抓緊時間學習吧,把握好你在公司里的機會,合理利用公司給你提供的資源。

秋招前的積累與沉澱

研究生期間我有一件事情一直在堅持,那就是做筆記和寫博客。

做筆記,就是記錄學習中大大小小的事情,可能是面試問題,可能是一周的學習計劃,也可能知識一個知識點,總歸都是值得記錄的東西,對我來說,就是一種積累。而對於博客,我從一開始只用於記錄項目,到後來做轉載,再到後來寫原創,整理系列文章,則更像是一種沉澱。

但是在春招剛剛結束的這段時間,我發現一個問題,之前學過的東西忘記了很多,特別是那些理解的不夠深的知識點,總是特別容易忘記。另外我發現,雖然我在筆記中記錄了很多的知識點和麵試題,但是往往我只看過一次,不會再去看第二次。

這也意味著,雖然記錄的內容很多,但是真正消化吸收的內容很少,腦子裡充斥著總是那些零碎的知識點和麵試問題,對於完整的知識體系知之甚少。這些問題在春招期間也不斷地暴露出來,讓我思考了很久。

面對如此窘境,我想做出改變,趁著現在時間充裕,我想要為這些內容做一次減法,並且藉此機會,推翻自己原有的知識體系,重建新的知識框架。簡單說來,就是重新開始學習Java後端,這次我要用一種更高效的方式,避免走之前走的彎路,要用最高效,最合理的方式去複習。由於我之前已經有基礎,所以我對完成這一目標有信心,相應地我也為此做出了明確且詳細的學習計劃。

校招複習的幾個關鍵詞

“具體可靠的學習計劃”

在三個月的時間里,我首先按照Java後端路線圖安排好複習計劃,每個知識點都會對應安排一段時間,比如我可能花一天時間複習“Java反射”,兩天時間複習“設計模式”,一周的時間用於複習"JVM虛擬機”。我一般會在月初做好整個月的計劃,然後根據進度做一些微調,但是基本上我都可以跟上進度,並且是在複習到位的前提下。

所以我覺得,對於秋招這一場苦戰,指定計劃尤為重要,一旦計劃定下來,戰略目標清晰,對應的戰術制定也會變得清晰,執行力也會隨之變強。

“寫博客整合知識點”

至於複習方法,我主要通過看高質量博客,並且結合代碼實踐的方式鞏固這部分知識點,比如今天學習“concurrenthashmap”,我會去找兩三篇比較好的博客先看看,主要是源碼解讀方面的,然後我會把它們進行整合,如果有遺漏的知識點我會再進行補充,有時候我還會自己去看看JDK源碼,以便更好地理解博客內容,完成知識整合之後,我就會對應地整理出一篇博客出來,發在我的個人博客上。

除此之外,當我完成了一整個專題的複習之後,我會把這些文章整理成一個專題,比如上面說的“concurrenthashmap”,實際上屬於Java併發包,所以我會專門做一個博客專欄,用來完成Java併發系列的文章專題。對於每一個文章專題,我都會先理清這個專題一共有哪些內容,然後再開始整理。

比如對於Java併發包,我會先寫Java多線程基礎的文章,再寫JMM記憶體模型的文章,接著一步步著手寫Java線程池,阻塞隊列,工具類,原子類等等。這樣一來這部分內容就複習完畢了,寫系列文章的好處就在於,我可以從頭到尾理清脈絡,並且對於每一部分的知識點都做了比較好的總結。

對於博客的選擇,我吸取了之前的教訓,寧願花半小時看一篇高質量文章,也不花10分鐘看5篇爛文章。深度閱讀的好處,就是可以讓這部分內容更好地融入你腦內的知識體系,而不是像其他快餐文章一樣轉瞬即逝。

“做項目鞏固實踐能力”

由於之前在實習期間參加的項目都比較大,我接觸的模塊也比較單一,沒有對整體項目有一個很好的把握,所以我決定趁這段時間再鞏固一下我的項目實踐能力,這裡的能力主要是指的是對項目架構的把握能力,以及對業務開發的熟練度,當然也包括對各種常用後端技術的熟悉程度。

我花了大概一個月的時間完成了兩個項目的開發,當然主要也是模仿兩個開源項目做了,這兩個項目都使用SpringBoot快速開發,並且用到一些常用的後端技術比如redis,雲存儲,以及一些常見Web框架,除此之外還涉及到了solr,爬蟲等技術。雖然項目不算很難,但是我在這段時間里很快地熟悉了完整項目開發的流程,並且每天做迭代,通過Git來跟進版本,每個版本都會寫清所做的內容,這也讓我對項目的架構非常熟悉。

在項目之餘,我也找一些常用的後端組件來跑一跑demo,以便讓我對這些技術有一個直觀的瞭解,比如面試常問的dubbo,zookeeper,消息隊列等組件。這些嘗試也讓我在理解它們的原理時更加得心應手了。

“堅持刷題,註重方法”

演算法題是秋招筆試面試中的重頭戲,每個研發同學都免不了經歷演算法題的摧殘,對我這麼一個非科班同學來說,更是讓人頭大。正因為如此,我放棄了刷大量LeetCode題目的方法,選擇了更加行之有效的刷題方式。

首先我重新刷了一遍劍指offer,並且對每道題目進行總結,儘量保證每一道題都可以記在腦子裡,眾所周知劍指offer中的題是面試時非常喜歡考的,所以先搞定這部分題目是最為關鍵的。

搞定劍指offer之後,當然還要刷LeetCode了,LeetCode題目這麼多,怎麼選擇呢,我沒有按照tag刷,也沒有按照順序刷,而是參考當時一個大佬的LeetCode刷題指南來進行刷題的,他把每個類型的題目都做了歸納,每部分只放一些比較經典的題目。所以我前後大概刷了100多道LeetCode的題目,並且在第二遍刷題複習的時候,我也對這些題目做了一份總結。

除了上面兩個經典題庫,我還著重刷了大廠的歷年真題,這部分我主要是通過牛客網的歷年真題題庫來完成刷題的。說實話,真題是非常重要的,因為公司出的題目不像平時的那些演算法題,可能會出得非常奇葩,所以你如果不提前適應的話會比較吃虧。完成這部分題目之後,我對演算法題的複習也基本告一段落了。

當我完成所有內容的複習時,提前批已經開始了。終於要上戰場了,因為戰前準備比較充分,所以我對秋招還是比較樂觀的,但事實上,秋招不僅是攻堅戰,而且是持久戰,要笑到最後,確實也不是那麼容易的事情。

重建知識體系,對學過的東西做減法

前面提到我在秋招前完成了知識體系重建,那在這裡我也想跟大家分享一下我當時大致的知識體系構成。就跟我前面說的一樣,我選擇重新再學一遍Java後端相關的技術內容,因為我知道大致的學習方向,並且有一定的基礎,所以看很多文章變得更加得心應手,寫文章和做總結也更加有底氣了。

首先在Java基礎方面,我寫了20多篇原創博客,主要是對Java核心技術的解析,比如“Java反射”,“Java序列化和反序列化”,“Java異常體系”等等。

在Java集合類方面,我原創了部分文章,另外整合了一些比較好的技術文章,其中最主要的就是關於hashmap的文章,當時我整合的文章幾乎沒有遺漏任何一個知識點。

在Java併發編程方面

我主要參考了併發編程網以及一些優質博客的文章,先搞懂了Java併發原理,再一步步學習JUC併發包的組件,其中重點看了chm,併發工具類以及阻塞隊列等JDK源碼的解析文章,除此之外,我還會在IDE中跑JUC相關的emo,畢竟這方面的內容非常需要實踐。

在Java網路編程方面

我先從最基礎的socket入手,再講到NIO,AIO,並且加入了幾篇對Linux IO模型解析的文章,讓整個知識體系更加完整(因為NIO是基於Linux Epoll實現的),接著我又加入了對Netty的探討,以及Tomcat中對NIO的應用,可以說是把Java網路編程一些比較重要的部分都囊括進來了。為了更好理解這部分內容,我也在網上參考了很多客戶端和服務端通信的demo,最後我分別用Socket,NIO,AIO以及Netty把C/S 通信的demo都寫了一遍。

在JVM虛擬機方面

我則按照《深入理解JVM虛擬機》這本書的行文脈絡進行文章的整理。在搞定JVM基本原理以後,我著重瞭解了JVM調優和實踐中常遇到的問題,並且整理了常用的JVM調優工具,場景問題以及調優實踐的案例,這也是因為面試中對JVM調優實踐越來越重視了。

在JavaWeb方面

我從JavaWeb相關技術的發展入手,一步步瞭解了每種技術存在的意義,比如JSP,Servlet,JDBC,Spring等等,然後對每種技術進行了比較全面的瞭解,並且著重地看了Spring和SpringMVC的源碼分析文章,另外一方面,我花了很多時間去研究Tomcat的工作原理。除此之外,JavaWeb項目中常用的maven,日誌組件,甚至是單測試組件,也納入了我的系列文章里。

在資料庫和緩存方面

我主要學習了MySQL和Redis這兩種最常用的資料庫。對於Mysql,我從簡單的sql開始瞭解,然後開始瞭解sql優化,MySQL的存儲引擎和索引,事務及鎖,還有更複雜的主從複製,分庫分表等內容。對於Redis,我也是從簡單的api入手,然後去瞭解每一種數據結構的底層實現原理,接著嘗試去學習Redis的持久化方式,以及作為緩存常需要考慮的技術點,當然,也包括Redis的分散式鎖實現,以及它的分散式集群方案。

最後一部分就是分散式相關的理論和技術

這個也是困擾我很久的一塊內容,我主要把這塊內容分為兩個部分,分別是分散式理論和分散式技術,理論方面,我先瞭解CAP,BASE等基本知識,然後開始學習一致性協議和演算法,接著探討分散式事務。對於分散式技術,涉及的東西就更多了,例如分散式session,負載均衡,分散式鎖等內容。

這些知識點我都會用一到兩篇文章去總結,對於分散式緩存,消息隊列,以及分散式服務等內容,我會花比較多的時間去全面學習,然後總結出一個系列的文章出來。當然,對於這些技術的學習主要還是停留在理論方面,在自己的項目中能用到的比較少。

至此,我的知識體系基本構建完成,這也是我在秋招中能夠成功闖過那麼多面試的原因。

秋招之路,砥礪前行

不管前期做了多少準備,到秋招的時候也不能掉以輕心,從七月底第一次面試到9月基本佛系,中間經歷了大大小小的面試。

在完成知識體系重建以後,我把重點轉向了另外幾件事,一是完善和熟悉我的簡歷,以便在面試中能夠比較好地發揮,二是持續刷題,保持對演算法題和筆試真題的手感和熟練度,三則是看面經查缺補漏,我一直認為看面經是很重要的一項複習內容。

就這樣,我一邊繼續複習,以便開始了一場接一場的面試接力。

起初,我面了幾家小公司練手,接著阿裡的提前批接踵而至,我戰戰兢兢地參加了阿裡中間件部門的面試,面難難度還算適中,一共四輪面試,當時我的表現也還不錯,問題基本都答上來了。面完不到一周以後我就收到了通過的消息,當時還有點懵。沒想到第一個offer這麼快就來了。

這段時間內,螞蟻金服的兩個部門也給了我面試機會,我都參加了它們的面試,並且順利地拿到了其中一個部門的offer。由於我對螞蟻這邊的業務比較感興趣,最終選擇了螞蟻金服的offer。

阿裡提前批的勝利確實是意外之喜,但也大大地鼓舞了我,於是我又參加了百度和騰訊的提前批面試,由於百度的提前批不走流程,一共有四個部門面試了我,每個部門都有2到3輪面試,總計約為12次面試,到後來我已經快暈了,看到百度的電話就害怕,由於面試次數太多,有時候發揮確實也不是很好,我也沒有特別在意,只當是在鍛煉自己了。

百度的面試難度每個部門不一樣,但是每次面試必寫演算法題,一寫演算法題,時間至少就是一個小時以上,每次面試完都有一種身體被掏空的感覺。

經歷了百度面試的摧殘以後,我手寫演算法的速度也變快了,很多坑也被我填上了。接下來面對騰訊的面試,我也是既激動又擔心,騰訊的面試難度比較大,對於操作系統和網路的知識喜歡深挖,問的東西也很有深度,面完前三面以後,第四面拖了3周才進行。當時三面面試官對我的評價比較好,也讓我信心爆棚了好久。

在等待騰訊終面的期間,我參加了今日頭條的面試,當時有幸拿到了一個白金碼,免去筆試,事實證明白金碼作用真的很大。頭條的面試難度和騰訊差不多,三輪面試,同樣需要寫各種演算法,由於是視頻面試,我可以清楚地看到,頭條的面試官真的非常高冷啊。面完頭條我的第一感覺就是應該掛了吧。沒想到最後還是給了offer。

結束這幾家大廠的面試之後,我覺得我的秋招已經接近尾聲了,不過由於之前投的比較多,所以我又面了幾家大公司,如網易,華為,快手等。到9月上旬的時候,我接連收到了bat和頭條,網易的意向書,阿裡最早,騰訊最晚,每收到一封意向書我都很開心,沒想到最後我真的可以集齊bat等大廠的offer。

9月以後,除了偶爾和同學做幾場大廠的筆試,我基本就佛系了。直到後來一些外企例如亞馬遜,大摩開始筆試面試,我才又重新回到了狀態。

截止目前,我基本上把該拒絕的offer都拒絕了,綜合各方面因素的考慮,最後應該會簽阿裡,原因是部門是我自己喜歡的,同時給的評級也比較高。雖然騰訊也給了sp,但是最後還是忍痛割愛啦。至於百度和頭條,給的offer並不是很令人滿意,所以就沒有考慮了。

至此,我的秋招之旅總算圓滿結束。

面經合集

之前發過很多秋招面經,一直沒有做一個整理,今天就做一個整理吧。

阿裡面經

阿裡中間件研發麵經

螞蟻金服研發麵經

崗位是研發工程師,直接找螞蟻金服的大佬進行內推。

我參與了阿裡巴巴中間件部門的提前批面試,一共經歷了四次面試,拿到了口頭offer。

然後我也參加了螞蟻金服中間件部門的面試,經歷了三次面試,但是沒有走流程,所以面試中止了。

最後我走的是螞蟻金服財富事業群的流程,經歷了四次面試,包括一次交叉面,最終拿到了螞蟻金服的意向書,評級為A。

阿裡的面試體驗還是比較好的,至少不要求手寫演算法,但是非常註重Java基礎,中間件部門還會特別安排Java基礎筆試。

騰訊面經

騰訊研發麵經

崗位是後臺開發工程師,我沒有選擇意向事業群。

SNG的部門撈了我的簡歷,開始了面試,他們的技術棧主要是Java,所以比較有的聊。

一共經歷了四次技術面試和一次HR面試,目前正在等待結果。

騰訊的面試一如既往地註重考查網路和操作系統,並且喜歡問Linux底層的一些知識,在這方面我還是有很多不足的。

百度面經

百度研發麵經

百度研發麵經整合版

崗位是研發工程師崗位,部門包括百度智能雲的三個分部門以及大搜索部門。

百度的提前批面試不走流程,所以可以同時面試好多個部門,所以我參加百度面試的次數大概有12次左右,最終應該是拿了兩個部門的offer。

百度的面試風格非常統一,每次面試基本都要到電腦上寫演算法,所以那段時間寫演算法寫的頭皮發麻。

網易面經

網易研發麵經

面試部門是網易雲音樂,崗位是Java開發工程師。

網易是唯一一家我去外地面試的公司,也是我最早去實習的老東家。

一共三輪面試,耗時一個下午。

網易的面試比我想象中的要難,面試官會問的問題都比較深,並且會讓你寫一些結合實踐的代碼。

頭條面經

今日頭條研發麵經

崗位是後臺研發工程師,地點選擇了上海。

我參加的是位元組跳動的內推面試,當時找了一個牛友要到了白金碼,再次感謝這位頭條大佬。

然後就開始了一下午的視頻面試,一共三輪技術面試,每一輪都要寫代碼,問問題的風格有點像騰訊,也喜歡問一些底層知識,讓我有點懵逼。

快手&拼多多面經

拼多多&快手研發麵經

崗位是Java開發工程師,面試我的部門好像是基礎架構部門。

快手是兩輪視頻面試加上一輪hr面試。然後沒下文了,ben

拼多多的崗位是業務平臺研發工程師。

當時在學校里參加了面試,過程是比較順利的,問的問題也都比較有難度。

自我感覺良好,但是最後卻收到了拒信,還是挺可惜的。

京東&美團面經

京東&美團研發麵經

崗位是Java開發工程師

京東和美團都是電話面試,京東是提前批,聊了兩次,問我能不能去實習,我說不能,然後就沒有下文了。

美團也是提前批的電話面試,直接一面問了一個多小時,有幾個問題沒答好,直接掛了。後來正式批也沒讓我參加,可以說是非常真實了。

鬥魚面經

鬥魚研發麵經

崗位是Java開發工程師(大數據方向)

剛好我人在武漢,於是鬥魚讓我去想場面。

大概花了一下午的時間結束所有流程,首先做了一個筆試,還算簡單,然後是三輪面試,前兩輪主要是技術,最後一輪總監面。

總體來說面的還是不錯的,但是沒有回應,不太清楚啥原因。

有贊面經

有贊研發麵經(Java細節)

崗位依然是Java開發工程師

當時是電話面試。

有贊的面試出人意料地很有挑戰性,問的都是Java細節,死摳知識點,沒有一定准備要回答好還真是很有難度的。

斷斷續續大概面了三面,後來我不想去現場面,就沒了下文。

華為&深信服等面經

華為 深信服等研發麵經

除了華為和深信服,裡面還包含了美圖,迅雷,猿輔導等小公司的面經。

華為和深信服是大數據研發崗。其他是後端工程師的崗位。

華為和深信服差不多,技術面試都比較水,所以放一起說。

另外三家小公司的面試難度也差不多,不過最後都沒有下文了,感覺也是挺玄學的哈哈。

海康&商湯等面經

海康,商湯,順豐等研發麵經

崗位都是後臺開發工程師。

海康只經歷了簡歷面,現場面沒有去。 商湯也只是稍微聊了一下,就沒有後續了。

順豐經過兩面直接給offer。

其中還包括亞馬遜的實習生面經。

另外最近面了亞馬遜的秋招,感覺難度和實習的面試差不多。面經就不貼了,有興趣的同學可以和我聊聊。

攜程&拼多多面經

攜程&拼多多研發麵經

崗位是Java開發工程師。

攜程是武漢現場面,很搞笑的是,攜程的面試題是不換的,我同學第二天去面題目一模一樣。

並且,攜程總共只有一輪面試,真是勤儉節約。

之前拼多多提前批折戟,這次又來參加正式批了。

沒想到這次面的更差了2333 有個演算法題想半天了不會。於是面完三面草草收場。不得不吐槽一下,負責我們學校面試接待的hr,脾氣真是有點大,搞得我都不敢問她問題了。

以上就是本次秋招我整理的面經合集啦,喜歡的朋友可以點贊收藏哈。

後記

秋招結束以後,我就把主要精力花在做這個公眾號上了。當然,剩下要處理的事情還有很多,畢業論文,畢業旅行,還有工作前的知識儲備等等。果然,人的一生需要不斷的修行,剛剛闖過了一關又馬上要迎接下一輪挑戰,你不能停下腳步,畢竟大家都在往前走。

希望還在求職路上的各位少俠好好加油,在未來也能夠順利地拿到自己想要的offer!

本文中涉及到的幾個鏈接我彙總在這裡,方便大家查看。

1、GitHub:https://github.com/h2pl/Java-Tutorial

(Java後端技術站點,整理很多Java後端技術文章,推薦Java方向的同學看看)

2、知乎:www.zhihu.com/people/h2pl

喜歡在知乎發各種經驗分享帖,曾經火過。哈哈現在過氣了。

3、B站:https://space.bilibili.com/511631

新人up,請多指教

4、個人網站:https://how2playlife.com/

同步更新技術博客,閱讀體驗更佳

5、公眾號【程式員書單】一個為程式員推薦好書的公眾號,想看什麼好書,關註它就行。

6、公眾號【Java技術江湖】一個簡簡單單的Java技術小站,想看Java方面的文章到這裡就行。

更多內容請關註微信公眾號【Java技術江湖】

一位阿裡 Java 工程師的技術小站。作者黃小斜,專註 Java 相關技術:SSM、SpringBoot、MySQL、分散式、中間件、集群、Linux、網路、多線程,偶爾講點Docker、ELK,同時也分享技術乾貨和學習經驗,致力於Java全棧開發!(關註公眾號後回覆”Java“即可領取 Java基礎、進階、項目和架構師等免費學習資料,更有資料庫、分散式、微服務等熱門技術學習視頻,內容豐富,兼顧原理和實踐,另外也將贈送作者原創的Java學習指南、Java程式員面試指南等乾貨資源)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很多人搞不明白 REST(Representational State Transfer 表述性狀態轉移)原因在於一開始就是把它當做設計風格而不是架構風格來理解,因而一上來就大談特談什麼 RESTful API,結果是只見樹木不見森林。 僅從設計的角度去理解 REST(僅把它作為 API 設計原則) ...
  • 一、PreparedStatement介面 1.java.sql.PraparedStatement介面繼承並擴展了Statement介面,用於執行動態的SQL語句,即包含參數的SQL語句。 PraparedStatement ps = connection.preparedStatement("s ...
  • IO讀寫基礎 應用層在進行read,write系統調用時,不是物理級別的讀寫,而是緩存的複製,進程緩衝區同內核緩衝區的緩存複製,底層數據交換是有由操作系統內核完成,控制內核緩衝與硬體(物理設備)之間數據交換.linux系統在系統內核只有一個內核緩衝區,用戶進程都有獨立的緩衝區,是進程緩衝區。外部設備 ...
  • 內置異常和Throwable核心方法 Java內置異常 可查異常(必須要在方法裡面捕獲或者拋出) ClassNoFoundException 應⽤程式試圖載入類,找不到對應的類 IllegalAccessException 拒絕訪問⼀個類的時候 NoSuchFieldExcetion 請求的變數不存 ...
  • VSCode配置Rust開發環境 在商店中輸入rls,選擇rust,點擊Quick start中的下載鏈接。這個Rust插件你也要記得下。 跳轉後來到下載界面,點擊下載。 運行下載好的exe文件,命令行輸入1按下回車即可。 安裝完畢後在命令行輸入rustc --version,如果能輸出版本號則表示 ...
  • 一、Tomcat的安裝及簡單使用 在網上找到你需要安裝的Tomcat版本,解壓到你需要安裝的目錄就可以了 目錄介紹: bin 專門用來存放 Tomcat 伺服器的可執行程式 conf 專門用來存放 Tocmat 伺服器的配置文件 lib 專門用來存放 Tomcat 伺服器的 jar 包 logs 專 ...
  • Java是啥 新手程式員通常會走入一個誤區,就是認為學習了一門語言,就可以稱為是某某語言工程師了。但事實上真的是這樣嗎?其實並非如此。 今天我們就來聊一聊,Java 開發工程師到底開發的是什麼東西。準確點來說,Java後端到底在做什麼? 基礎 大家都知道 Java 是一門後端語言,後端指的就是服務端 ...
  • 最近有很多小伙伴來問我,Java小白如何入門,如何安排學習路線,每一步應該怎麼走比較好。原本我以為之前的幾篇文章已經可以解決大家的問題了,其實不然,因為我之前寫的文章都是站在Java後端的全局上進行思考和總結的,忽略了很多小白們的感受,而很多朋友都需要更加基礎,更加詳細的學習路線。 所以,今天我們重 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...