1. 程式人生 > >Frank的技術世界

Frank的技術世界

秋招研磨

經過了大半年的學習和努力。2018 年 10 月 17 日,我的秋招終於落下帷幕。

講講我的秋招之路吧。大概是 2018 年 2 月底,春節都還沒結束,學校的就業群裡也開始了阿里內推,2018 年暑期實習生招聘的序幕拉開了。

由於是專碩,兩年的讀研時間顯的好短暫,才短暫接觸了幾個月的機器學習演算法,都才剛剛入門了 Python 和會使用 Tensorflow 和 Scikit-learn 框架進行一些簡單的機器學習分類工作,馬上又要著手於校招,讓我措手不及。在機器學習演算法等相關學科,對於數學功底要求比較高,對於快速就業讓我十分的無助。由於之前也寫過兩年的 PHP 後臺開發相關的工作,大概在很長的一段時間內一直在糾結究竟是找機器學習崗位或是後臺開發方向。

思考了很久,我對自己未來的規劃是希望成為全棧工程師,在技術達到一定高度,並有很好的想法的時候會有創業做產品的打算。於是我準備往後臺開發方向,但是問題又來了!

究竟是找 Python web、PHP web、Java web,哪個方向呢?Python 和 PHP 算是自己擅長的方向,想找一份工作,固話一下相關的基礎知識準沒問題。當做了一段時間演算法後,也對各個崗位的就業分析了一下,主要還是 Java 佔據了半壁江山,其次是 C++,然後是 Python、PHP、GO。在小型公司,快速的專案迭代更多的使用了 PHP 或是 Python 進行快速開發,但當專案成長到一定的體量都被 Java 給一統江湖了。其中,特別是拼多多和小紅書這兩家企業,從 PHP 和 Python 替換到了 Java 後臺架構。PHP/Python:do fast,Java:think big。

出於這樣一個打算,我選擇了 Java ,也期待未來從事更多的分散式系統架構相關工作。在後臺開發的技術棧上,尤其是 Java 和 C++ 這樣的語言入門和學習的門檻太高。還沒有一個特別好的學習指南能夠幫助我好好的學習 Java 這樣一門語言,其實在本科也學過一年多 Java,但是更多的是停留在應用層面。

大概三月初吧,開始準備全心轉向 Java 後臺開發方向。得益於之前對於 PHP 的後臺開發語言的學習,我的 Java 學習之路還是比較順利和深入的。查看了很多知乎大神對於學習路徑的指導,我也根據自己以往的學習經驗摸索出了對於整個技術棧的認知。在學習過程中,你會看書、看視訊教程、看部落格等等,一開始也用 OneNote 做一些筆記,但是發現很不方便。在 Github 上看到了很多優秀的開源筆記專案,後來用到了 Typora 這 Markdown 編輯器,開始愛上了記錄,於是乎建立了

frank-lam/2019_campus_apply 這個倉庫。此後開始了我正式的,艱苦的學習之路。(具體的技術棧我不一一展開,感興趣的同學歡迎關注我的倉庫,目前已有 800+ star 和 200+ fork)

下面給大家列一下,後臺開發工程師需要達到的一個高度吧。

  • 線上筆試基礎

    • Leetcode 必刷
    • 劍指 Offer 必刷
  • 內功修煉

    • 資料結構與演算法
    • 海量資料處理方法
    • Linux 基礎與命令
    • 計算機網路(應用層,傳輸層,網路層等相關協議)
    • Web 網路和 HTTP/HTTPS 協議
    • 資料庫(MySQL,Redis,SQLServer)
    • 作業系統原理
    • Git 版本管理工具使用
    • 正則表示式
  • Java 核心技術

    • 語法與基礎概念
    • 面向物件與 23 種設計模式
    • Java 容器原始碼(資料結構 & 原始碼分析:ArrayList、Vector、LinkedList、HashMap、ConcurrentHashMap、HashSet、LinkedHashSet and LinkedHashMap)
    • Java 併發程式設計(執行緒狀態、執行緒機制、執行緒通訊、J.U.C 元件、JMM、執行緒安全、鎖優化)
    • Java IO(磁碟操作、位元組操作、字元操作、物件操作、網路操作、NIO)
    • Java 虛擬機器(執行時資料區域、垃圾收集、記憶體分配機制、類載入機制、效能調優監控工具)
    • Java Web(學習 Spring + SpringMVC + MyBatis 框架和設計模式思想,學習 Servlet 和 JSP)
  • 高階加分項

    • Zookeeper(分散式協調服務)

    • Dubbo(分散式服務治理)

    • 分散式事務解決方案

    • ActiveMQ、Kafka、RabbitMQ(分散式訊息通訊)

    • Redis(分散式快取與叢集搭建)

    • mycat(資料庫路由)

    • Nginx(反向代理)

    • Docker(容器技術)

    • Tomcat

或許很多人看到我羅列的這些東西已經開始焦慮,並且感到不適了。是的,要知道一個道理:面試造火箭,工作擰螺絲。如果想通往大廠那麼請好好靜下心來,至少需要一年的時間學習來學習我所列的知識清單。也感謝校招的這段時間,逼著推動我,讓我對技術的認識有了一個全新的認識。

再回到秋招這件事,暑期實習生招聘的幾個月中,參加了無數的校園宣講會也面試了幾家公司增長了一些經驗,但是很不幸最後都掛了。雖然沒有能成功實習,對自己的能力有了一個很好的評估,深知到自己基礎知識的薄弱,於是靜下心來開始了漫長夯基的日子。這裡推薦很多即使不能出去實習的同學,也好好的把握好實習招聘,做一些經驗上的積累。像很多公司也推出了 mini 短期實習的一些政策,或許是一個很好的機會。

都說金九銀十,是的九月、十月是秋招最重要的兩個月。但是學霸們六七月份已經開始了他們的提前批內推(也稱學霸批),如果你想加入阿里(7.15開始)、大疆(6.30截止)等等大廠需要早早準備了。並且內推免筆試呢,增加面試經驗。

老實說那段日子真的很難熬,印象最深刻大概還停留在六、七、八月份緊張的學習,那段時間如同考研衝刺般的激勵自己,無數次在心中暗示自己我一定行的。那幾個月大概對於技術的學習超過了以往任何一段時間,比以往任何一段時間更明確自己的方向,我認為超過了過去兩年學習的水平。翻閱了無數本計算機相關的圖書,為了快速入門看了五十多門的視訊課程,其中有無數優秀的書籍和課程,這裡我將在後期一起整理分享。大概七八月份兩個月沒有休息過,每天八點到實驗室開始看書,晚上大概十一點左右打卡回去。那段時間雖然艱苦,但是對基礎的學習和後來的面試起到了關鍵性的作用,否則我想將無法支撐我的面試。

很快的九月來了,秋招正式的打響了。大概九月份每天都在頻繁的筆試、面試、宣講會,印象最深刻的是同一天 4 場筆試(從早晨 9 點一直筆試持續到晚上 11點才結束),記錄最高的一天跑了五場面試,跑遍了華科和武大周邊的五星級酒店。

秋招還是喜出望外,拿到一些 Offer,海康威視、華為、貝貝網、蘇寧易購,還有等待 Offer 的騰訊和 58 同城。雖然一心想去阿里和網易都沒有很順利,都在兩輪面試後掛了(面試的太早了,都沒有讓我好好準備),但是最後還是拿到了華為 SP。

轉眼回頭再看,每一個無眠的深夜,每一個糾結的過往,從此都雲淡風輕。

如何準備秋招

  • 夯實基礎,把我在上文列舉的知識清單掌握
  • 寫一份優秀的簡歷
  • 包裝一個你最熟悉的專案
  • 掌握好面試話術
  • 多看面經,每次面試後寫下面經

簡歷即是你的名片,把你會的東西都寫到簡歷上,謹慎使用(熟悉,良好,瞭解)等表述性詞彙,一定要對自己的簡歷上每個字負責。提到的技術棧,一定要有深入研究,否則切記寫上。詳細描述一個你最熟悉的專案,包括(1)專案背景和你的工作;(2)專案核心技術點和難點;(3)專案優化改進。

最後在面試過程中要衣著整潔,語言吐字清晰,切記說不會,一定要思考後再回答。面試是一個互動性的交流,不要覺得低人一等,更不要被面試官牽著走,所以這裡再次強調簡歷的重要性,大部分面試都會根據你的簡歷來提問。甚至我在面試中單獨附上了我專案的整體架構圖,有了架構圖更好的對專案進行深化,也是牽引面試官的一個好辦法。如果你的簡歷沒有一個好的專案,那麼請做好瘋狂被懟基礎知識的可能性吧!

調整好心態

在秋招的過程中面試了 20 家企業,也一路掛過來,一定要有一顆平和的心。廣撒簡歷,重點培養。明確自己的崗位,工作地進行海投、精準面試。基本上面到 HR 面的企業都拿到了口頭 Offer 或是意向書。

在面試過程中,選擇往往大於努力,一定要認準自己的方向。

Offer = 40%運氣 + 40%技術 + 20%表達能力

後記

秋招之路不易,寫下一些記憶,希望能夠幫助更多的人。