我寫過不少篇秋招總結,這篇文章應該是最後一篇總結,固然也是最完整,最詳細的一篇總結。秋招是我人生中一段寶貴的經歷,不只是我研究生生涯交出的一份答卷,也是將來職業生涯的開端。僅以此文,獻給本身,以及各位在求職路上的,或者是已經經歷過校招的朋友們。不忘初心,方得始終。前端
在下本是跨專業渣考研的985渣碩一枚,經歷研究生兩年的學習積累,有幸於2019秋季招聘中拿到幾個公司的研發崗offer,包括百度,阿里,騰訊,今日頭條,網易,華爲等。java
(在秋招末期,有幸又拿到了滴滴和亞馬遜的offer,那時已經11月份了,因此以前的文章裏都沒有提到過)python
一路走來也遇到不少困難,也踩了不少坑,同時我本身也探索了不少的學習方法,總結了不少心得體會,而且,我對校園招聘也作了一些研究和相應的準備。在今年的秋季招聘結束之後,我也決定把這些東西所有都寫成文字,作成專題,以便分享給更多將來將要參加校招的同窗。git
個人本科專業是電子信息工程,基本沒有接觸過計算機專業的課程,只學過c語言,而後在大三的時候接觸過java,Android,以及前端開發。這時候我只是一個剛剛入門的菜鳥,還不知道軟件開發的水有多深,抱着試一試的態度去應聘了不少公司。結果可想而知,連簡歷篩選都沒有經過。程序員
當年我對遊戲開發頗有興趣,特別是對網易遊戲情有獨鍾,可是當我看到網易遊戲研發工程師的招聘要求時,我只能望而卻步,由於它要求學歷至少是985的碩士。github
也由於這個契機,我在大三的暑假開始準備考研,花了一個月的時間深思熟慮以後,選擇了華科做爲個人目標院校。面試
因而,2016年的下半年,我成爲了「兩耳不聞窗外事,一心只讀聖賢書」的考研黨,回想起來那確實是玩命學習的半年時間,天天穩定泡在圖書館8個小時以上,有時候學到宿舍都能學到晚上12點,那時候感受本身徹底變了一我的似的,可能當一我的爲了某個目標而努力時,真的會變得不同。最終我順利地考上了,令我意外的是,成績還挺不錯。redis
對於即將讀研的同窗來講,通常有兩件事很重要,一件事是選擇導師,一件事是選擇方向。算法
我在剛讀研的時候最頭疼的也是這兩件事情。首先說明一下,我讀的是專碩,因此實驗室通常不搞科研,有部分導師會帶項目,因爲我不打算在實驗室作項目(由於我更但願去大公司裏鍛鍊幾年),因此我當時本着想要找實習的想法選擇了導師,事實證實個人選擇仍是很正確的,我在研二有大段時間去參加實習,讓我在大廠裏有足夠的時間去鍛鍊和學習。sql
而選擇方向這件事,我卻是折騰了很久。研一期間我作的最多的事情就是看書了,當時本身的方向還不明確,因此找了不少書來看。當別人都在專研數據挖掘和機器學習時,我還在各類方向之間搖擺不定。
我在讀研以前想作遊戲開發和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開發工程師。
網易是惟一一家我去外地面試的公司,也是我最先去實習的老東家。
一共三輪面試,耗時一個下午。
網易的面試比我想象中的要難,面試官會問的問題都比較深,而且會讓你寫一些結合實踐的代碼。
今日頭條研發面經
崗位是後臺研發工程師,地點選擇了上海。
我參加的是字節跳動的內推面試,當時找了一個牛友要到了白金碼,再次感謝這位頭條大佬。
而後就開始了一下午的視頻面試,一共三輪技術面試,每一輪都要寫代碼,問問題的風格有點像騰訊,也喜歡問一些底層知識,讓我有點懵逼。
提早批的筆試其實不是不少,我參加了網易,網易遊戲,拼多多等公司的筆試,應該都是低分飄過。
個人算法基礎比較通常,讀研以前0基礎,因此這方面學的比較艱辛,分享一些個人筆試準備經驗。
1 打好數據結構和算法基礎
2 先易後難,看一些基礎的算法書籍,好比《圖結算法》,《啊哈算法》等等。
3 劍指offer刷起來,兩到三遍,作到成竹在胸
4 LeetCode刷個200題左右,記得二刷,作好總結。
5 到牛客網作公司的歷年真題,熟悉題型,保持手感。
劍指offer指南和LeetCode刷題指南能夠在個人博客裏找到。
其中LeetCode指南是參考@CyC2018大佬的文章。
面試主要考的仍是你的基礎知識,須要你對Java後端技術棧有一個全局上的把握,具體提及來就太多了,具體複習方案能夠參考文章後面的內容。
我我的也總結了一些面試方面的經驗,主要是一些技巧。
1 作好自我介紹和項目總結,把握你發言的主動權
2 搞清楚簡歷上的技術點,兵來將擋水來土掩
3 注意分點答題,思路清晰,也更容易講清楚原理。
4 壓力面下保持冷靜,不要回懟面試官
5 HR面試注意經常使用技巧,能夠提早準備。
對於校園招聘來講,最重要的仍是基礎知識。下面的博客專欄出自個人技術博客 https://blog.csdn.net/a724888
這些專欄中有一些文章是我本身原創的,也有一些文章是轉載自技術大牛的,基本都是是我在學習Java後端的兩年時間內陸續完成的。
總的來講算是比較全面了,作後端方向的同窗能夠參考一下。
本專欄主要介紹Java基礎,而且會結合實現原理以及具體實例來說解。同時還介紹了Java集合類,設計模式以及Java8的相關知識。
帶你走進JVM的世界,整合高質量文章以闡述虛擬機的原理及相關技術,讓開發者更好地瞭解Java的底層運行原理以及相應的調優方法。
本專欄主要介紹Java併發編程相關的基本原理以及進階知識。主要包括Java多線程基礎,Java併發編程基本原理以及JUC併發包的使用和源碼解析。
Java網絡編程一直是很重要的一部份內容,其中涉及了socket的使用,以及Java網絡編程的IO模型,譬如BIO,NIO,AIO,固然也包括Linux的網絡編程模型。
瞭解這部分知識對於理解網絡編程有不少幫助。另外還補充了兩個涉及NIO的重要技術:Tomcat和Netty。
從這裏開始打開去往JavaWeb世界的大門。什麼是J2EE,什麼是JavaWeb,以及這個生態中經常使用的一些技術:Maven,Spring,Tomcat,Junit,log4j等等。
咱們不只要了解怎麼使用它們,更要去了解它們爲何出現,其中一些技術的實現原理是什麼。
本專欄主要講解Spring和SpringMVC的實現原理。
Spring是最流行的Java框架之一。
本專欄文章主要包括IOC的實現原理分析,AOP的實現原理分析,事務的實現源碼分析等,固然也有SpringMVC的源碼解析文章。
本專欄介紹MySQL的基本知識,好比基本架構,存儲引擎,索引原理,主從複製,事務等內容。固然也會講解一些和sql語句優化有關的知識。
同時本專欄裏也介紹了Redis的基本實現原理,包括數據結構,主從複製,集羣方案,分佈式鎖等實現。
本專欄介紹分佈式的基本理論和相關技術,好比CAP和BASE理論,一致性算法,以及ZooKeeper這類的分佈式協調服務。
在分佈式實踐方面,咱們會講到負載均衡,緩存,分佈式事務,分佈式鎖,以及Dubbo這樣的微服務,也包括消息隊列,數據庫中間件等等。
本專欄涵蓋了大後端的衆多技術文章,當你在Java後端方面有必定基礎之後,再多瞭解一些相關技術老是有好處的。
除了Java後端的文章之外,還會涉及Hadoop生態,雲計算技術,搜索引擎,甚至包括一些數據挖掘和AI的文章。
總的來講選取了一些不錯的基礎類文章,能讓你對大後端有一個更直觀的認識。
我以前專門寫了一篇文章介紹了Java工程師的書單,能夠這裏重點列舉一些好書,推薦給你們。
《計算機網絡:自頂向下》這本從應用層講到物理層,感受這種方式學起來更輕鬆。
《圖解算法》《啊哈算法》
這兩部書籍很是適合學習算法的入門,前者主要用圖解的形式覆蓋了大部分經常使用算法,包括dp,貪心等等,能夠做爲入門書,後者則把不少經常使用算法都進行了實現,包括搜索,圖,樹等一些比較高級的經常使用算法。
《劍指offer》這本書仍是要強烈推薦的,畢竟是面試題常常參考的書籍,固然最好有前面基本的鋪墊再看,可能收穫更大,這本書在面試以前通常都要嚼爛。若是想看Java版本的代碼,能夠到個人Github倉庫中查看。
《Java編程思想》這本書也是被譽爲Java神書的存在了,可是對新手不友好,適合有些基礎再看,固然要選擇性地看。我當時大概只看了1/3
《Java核心技術卷一》
這本書仍是比較適合入門的,固然,這種厚皮書要看完仍是頗有難度的,不過比起上面那本要簡單一些
《深刻理解JVM虛擬機》
這本書是Java開發者必須看的書,不少jvm的文章都是提取這本書的內容。JVM是Java虛擬機,賦予了Java程序生命,因此好好看看把,我本身就已經看了三遍了。
《Java併發編程藝術》
這本書是國內做者寫的Java併發書籍,比上面那一本更簡單易懂,適合做爲併發編程的入門書籍,固然,學習併發原理以前,仍是先把Java的多線程搞懂吧。
《深刻JavaWeb技術內幕》
這本書是Java Web的集大成之做,涵蓋了大部分Java Web開發的知識點,不過一本書顯然沒法把全部細節都講完,可是做爲Java Web的入門或者進階書籍來看的話仍是很不錯的。
《Redis設計與實現》
該書全面而完整地講解了 Redis 的內部運行機制,對 Redis 的大多數單機功能以及全部多機功能的實現原理進行了介紹。這本書把Redis的基本原理講的一清二楚,包括數據結構,持久化,集羣等內容,有空應該看看。
《大型網站技術架構》
這本淘寶系技術指南仍是很是值得推崇的,能夠說是把大型網站的現代架構進行了一次簡單的總結,內容涵蓋了各方面,主要講的是概念,很適合沒接觸過架構的同窗入門。看完之後你會以爲後端技術原來這麼博大精深。
《分佈式服務框架原理與實踐》
上面那本書講的是分佈式架構的實踐,而這本書更專一於分佈式服務的原理講解和對應實踐,很好地講述了分佈式服務的基本概念,相關技術,以及解決方案等,對於想要學習分佈式服務框架的同窗來講是本好書。
《從Paxos到Zookeeper分佈式一致性原理與實踐》
提及分佈式系統,咱們須要瞭解它的原理,相關理論及技術,這本書也是從這個角度出發,講解了分佈式系統的一些經常使用概念,而且帶出了分佈式一哥zookeeper,能夠說是想學分佈式技術的同窗必看的書籍。
《大數據技術原理與應用》
做爲大數據方面的一本教材,廈大教授寫的這本書仍是很是讚的,從最基礎的原理方面講解了Hadoop的生態系統,而且把每一個組件的原理都講得比較清楚,另外也加入了spark,storm等內容,能夠說是大數據入門很是好的一本書了。
學習Java後端兩年的時間裏,接觸過不少的資料,網站和課程,也走了很多彎路,因此這裏也總結一些比較好的資源推薦給你們。
0 CSDN和博客園,主流的技術交流平臺,雖然廣告越打越多了,可是仍是有不少不錯的博文的。
1 importnew 專一Java學習資源分享,適合Java初學者。
2 併發編程網,主要分享Java相關進階內容,適合Java提升。
3 推酷 一個不錯的技術分享社區。
4 segmentfault,有點像國內的Stack Overflow,適合交流代碼問題的地方。
5 掘金,一個頗有極客範的技術社區,強推,有不少技術大牛分享優質文章。
6 開發者頭條,一個整合優質技術博客的社區,裏面基本上都是精選的高質量博文,適合技術學習提高。
7 v2ex,一個極客社區,除了交流技術之外還會有不少和程序員生活相關的話題分享。
8 知乎
這個就沒必要多說了。
9 簡書
簡書上有些技術文章也很不錯,有空你們也能夠去看看。
10 Github
有一些GitHub的項目仍是很是不錯的,其中也有倉庫會分享技術文章。
秋招結束之後,我就把主要精力花在作這個公衆號上了。固然,剩下要處理的事情還有不少,畢業論文,畢業旅行,還有工做前的知識儲備等等。果真,人的一輩子須要不斷的修行,剛剛闖過了一關又立刻要迎接下一輪挑戰,你不能停下腳步,畢竟你們都在往前走。
但願還在求職路上的各位少俠好好加油,在將來也可以順利地拿到本身想要的offer!
本文中涉及到的幾個連接我彙總在這裏,方便你們查看。
一、CSDN技術博客:blog.csdn.net/a724888(Java後端技術站點,整理不少Java後端技術文章,推薦Java方向的同窗看看)
二、知乎:www.zhihu.com/people/h2pl(知乎活躍用戶,但願將來能成爲大V)
三、牛客網:www.nowcoder.com/profile/3539721(牛客網活躍粉,分享過一些面經和心得)
四、GitHub:https://github.com/h2pl(用於本身作項目,以及刷劍指offer、LeetCode、歷年筆試題)
黃小斜是 985 碩士,阿里巴巴Java工程師,在自學編程、技術求職、Java學習等方面有豐富經驗和獨到看法,但願幫助到更多想要從事互聯網行業的程序員們。做者專一於 JAVA 後端技術棧,熱衷於分享程序員乾貨、學習經驗、求職心得,以及自學編程和Java技術棧的相關乾貨。黃小斜是一個斜槓青年,堅持學習和寫做,相信終身學習的力量,但願和更多的程序員交朋友,一塊兒進步和成長!
原創電子書:關注微信公衆號【程序員黃小斜】後回覆【原創電子書】便可領取我原創的電子書《菜鳥程序員修煉手冊:從技術小白到阿里巴巴Java工程師》這份電子書總結了我2年的Java學習之路,包括學習方法、技術總結、求職經驗和麪試技巧等內容,已經幫助不少的程序員拿到了心儀的offer!
英雄不問出處,編程不看出身。這裏是自學編程愛好者的彙集地,也是程序員IT學習資源的藏經閣。點擊關注,一塊兒成爲更優秀的程序員!
程序員3T技術學習資源: 一些程序員學習技術的資源大禮包,關注公衆號【程序員江湖】後,後臺回覆關鍵字 「資料」 便可免費無套路獲取,包括Java、python、C++、大數據、機器學習、前端、移動端等方向的技術資料。
關注公衆號【程序員江湖】後回覆「Java」、「Python」、「C++」、「大數據」、「算法」、「AI」、「Android」、「前端」、「iOS」、「BAT」、「校招」、「筆試」、「面試」、「計算機基礎」、「LeetCode」 等關鍵字能夠獲取對應的免費程序員學習資料。
黃小斜是 985 碩士,阿里巴巴Java工程師,在自學編程、技術求職、Java學習等方面有豐富經驗和獨到看法,但願幫助到更多想要從事互聯網行業的程序員們。做者專一於 JAVA 後端技術棧,熱衷於分享程序員乾貨、學習經驗、求職心得,以及自學編程和Java技術棧的相關乾貨。黃小斜是一個斜槓青年,堅持學習和寫做,相信終身學習的力量,但願和更多的程序員交朋友,一塊兒進步和成長!
原創電子書:關注微信公衆號【程序員黃小斜】後回覆【原創電子書】便可領取我原創的電子書《菜鳥程序員修煉手冊:從技術小白到阿里巴巴Java工程師》這份電子書總結了我2年的Java學習之路,包括學習方法、技術總結、求職經驗和麪試技巧等內容,已經幫助不少的程序員拿到了心儀的offer!
英雄不問出處,編程不看出身。這裏是自學編程愛好者的彙集地,也是程序員IT學習資源的藏經閣。點擊關注,一塊兒成爲更優秀的程序員!
程序員3T技術學習資源: 一些程序員學習技術的資源大禮包,關注公衆號【程序員江湖】後,後臺回覆關鍵字 「資料」 便可免費無套路獲取,包括Java、python、C++、大數據、機器學習、前端、移動端等方向的技術資料。
關注公衆號【程序員江湖】後回覆「Java」、「Python」、「C++」、「大數據」、「算法」、「AI」、「Android」、「前端」、「iOS」、「BAT」、「校招」、「筆試」、「面試」、「計算機基礎」、「LeetCode」 等關鍵字能夠獲取對應的免費程序員學習資料。