如何準備校招技術面試

如何準備校招技術面試

標籤 : 面試前端


[TOC]java


2017 年互聯網校招已近尾聲,做爲一個非 CS 專業的應屆生,零 ACM 經驗、零期刊論文發表,我經過本身的努力和準備,從找實習到校招一路運氣不錯,面試所有經過,謹以此文記錄個人校招感悟。git

寫在前面

寫做動機github

  • 記錄本身的經歷、反思與總結
  • 在互聯網上看到了不少前人的經驗帖,做爲回饋,也分享本身的經驗
  • 賺一點打賞(可掃描我我的網站裏的二維碼 http://brianway.github.io/about/)

你能夠從這篇文章獲取哪些信息面試

  • 如何看待校招面試
  • 後臺研發 爲例,校招技術面試的考覈範圍和難度
  • 如何提高本身的技術內功(長期)
  • 如何有針對性地作面試準備(短時間)
  • 面試交談中的一些技巧
  • 一線互聯網公司的校招面試流程

這篇文章不能帶給你什麼算法

  • 本文並非速成寶典/突擊手冊
  • 本文不會羅列面試原題和題解

個人面試經歷

春招找實習,投了三家(阿里,騰訊,美團),所有拿到實習 Offer,去了阿里。spring

  • 阿里:菜鳥網絡;3 面技術電面 + 1 面 HR 視頻面。二面佈置了一個工程小做業,作了兩天
  • 騰訊:投的後臺開發(事業羣無心向),被轉到 SNG 運營開發;簡歷評級 S,2 面電話面試 + 線路現場面試 2 面技術 + 1 面 HR
  • 美團:美團餐飲平臺;2 面電話面試 + HR 直接通知 offer。歷時一週多,最效率

秋招爲了穩妥地轉正,拿一個好的評級,在專心準備轉正面試,錯過了提早批,正式批投了五家,面了三家(阿里,騰訊,網易),基本都是 special offer:數據庫

  • 阿里:菜鳥網絡;成功轉正,評級不錯
  • 騰訊:投的微信 Web 開發,被調到 IEG 後臺開發(不知道爲何多了一個阿里實習,個人簡歷評級反而從 S 變成了 A+);在線筆試 + 現場 2 技術面 + 1 HR面。HR 面時我指望薪資提的 sp 的價格,offer 報批中。
  • 網易:跨境電商(考拉海購);在線筆試 + 現場 2 技術面 + 1 HR 面。HR 說技術面評價不錯,問題不大。結合身邊同窗,我應該是 sp。網易面試體驗最好,面試官(尤爲一面那位)很專業,很佩服
  • 頭條(放棄面試):來校園宣講,免筆試直接面試,沒去
  • 網易遊戲(放棄面試):計費應用系統開發;電話通知筆試過了,手裏有 3 個 offer 了,就主動告知不面了。

如何看待校招面試

招聘,對公司而言,是尋找勞動力;對員工而言,是尋找將來的同事。因此考覈的東西確定有以下幾點:編程

  • 技術能力:招你進來是幹活的,公司不是慈善機構,不養閒人,因此你須要 證實你能勝任這項工做
  • 學習能力/潛力:要能幹活的走社招就好了,應屆的優點就是潛力,你得 向公司證實值得培養你
  • 軟技能:招你進來是和其餘人共事的,因此爲人處事、溝通能力、是否合羣、三觀等等, 你的「調性」要和公司/組裏的吻合

因此不少人掛的緣由就很明顯了:技術能力不佳,掛;看不到學習的悟性,只會已有技能,掛;聊天思路不清晰,溝通障礙,掛…………設計模式

固然,招聘原本就是一個雙向選擇的過程,公司在選擇你的同時,你也在選擇公司,好比工做要拼仍是要 balance,這種事見仁見智。

技術面試考覈的技術範圍

雖然面試考覈的東西不少,但技術面試最主要的仍是考覈技術能力,記得學長告訴過我:「技術基礎和項目經歷,至少得有一個拿得出手」,因此下面談談所謂的「技術基礎」。

我投的全部崗位都是 Java 研發,因此就以 Java 研發爲例,以文字的形式寫出大體的知識圖譜/思惟導圖。不少我就只點到爲止,不可能面面俱到。

  • 算法和數據結構基礎

    • 數據結構:數組,鏈表,哈希表,堆,隊列,棧,二叉樹,B樹/B+樹,紅黑樹,圖(研發問圖很少)
    • 常見的排序算法(冒泡,插入,快排,堆排,歸併排序...)
    • 簡單的動態規劃問題(揹包,上樓梯)
    • 各類時間空間複雜度分析
  • Java 基礎

    • 最基本的語言基礎:語法,關鍵字含義,面向對象....
    • 集合類(ArrayList, HashMap, ConcurrentHashmap...等等)
    • 多線程(鎖,CAS,線程池,concurrent 包下的類)
    • 語言特性:反射,動態代理,泛型,Java 8 新特性
    • IO (裝飾器模式,NIO)
    • JVM:內存模型,垃圾回收,類加載機制
  • Java Web

    • Tomcat,Servlet,JSP,Cookie/Session 等基本概念
    • 框架使用和原理:Spring(AOP,IoC),MyBatis 等
  • 數據庫(主要是 MySQL)

    • 基本 SQL 語句,索引優化
    • 存儲引擎(InnoDB,MyISAM),索引原理
    • 事務 ACID,隔離級別
    • 分庫分表,主從複製,讀寫分離
  • 計算機網絡

    • OSI 7 層模型和 TCP 4 層模型
    • 傳輸層:TCP/IP 相關知識,和 UDP 比較
    • HTTP 協議:報文結構,POST/GET 方法
    • 網絡編程 (socket, NIO, select 等)
  • 操做系統

    • 基本 Linux 的操做指令
    • 進程/線程比較,進程間通訊方式,P/V 操做
    • 磁盤調度,虛擬內存
    • 死鎖,中斷

1.這麼多東西,從哪學起呢?

我本身的學習路線規劃:技能的主線是 Java 語言基礎 -> Spring 框架開發業務 -> 分佈式系統解決高併發,基礎方面 算法,網絡協議,操做系統 帶着學

2.學到什麼程度呢?

  • 概念性的程度:瞭解是啥,可以口述含義
  • 使用的程度:能夠熟練使用,好比調用 API,寫 SQL 查詢
  • 原理的程度:可以講清楚底層實現
  • 提出看法的程度:從任意技術能夠引伸出相關技術,並可以分析聯繫和區別,提出本身的看法和體會

以上四種程度逐層加深,固然越深越好,一般前兩種程度只能稱之爲「瞭解」;而寫上簡歷迎接考覈的,至少須要掌握到「原理」的程度

好比,Java 你至少得看過經常使用類的 JDK 源碼;數據庫只會增刪改查確定不夠,起碼得把底層索引結構講清楚;常見算法起碼能講清楚關鍵步驟,分析時間空間複雜度,而且 bug free 地寫出來。

技術儲備是一切的基礎,若是基礎都不會,那後面的簡歷撰寫,臨場引導面試官等技巧根本無從下手,只有被虐的份

如何提高本身的技術內功

「冰凍三尺非一日之寒」,功夫在平時,與其背面經寄但願於碰原題,不如紮實學習,以不變應萬變。

能夠經過 看書+記筆記 的形式來學習,書上的代碼能夠對着敲一敲,學習筆記和代碼能夠發到 GitHub 上,用來展現本身的學習熱情。

下面是我這一年多來看過的書,每一本我讀以前都作了充分的調研和篩選,豆瓣評分通常都在 7~9 分:

  • 《算法》(第四版)圖之前章節
  • 《劍指 Offer》
  • 《Java 編程思想》
  • 《Java多線程編程核心技術》(高洪巖 著)
  • 《Java 併發編程實戰》
  • 《深刻理解 Java 虛擬機》
  • 《Java 8 實戰》
  • 《鳥哥的 Linux 私房菜》
  • 《MySQL 必知必會》
  • 《Maven 實戰》
  • 《圖解 HTTP》
  • 《敏捷軟件開發》
  • 《架構探險-從零開始寫 Java Web 框架》
  • 《Spring 3.x 企業應用開發實戰》
  • 《Head First 設計模式》
  • 《大型網站技術架構》(李智慧 著)
  • 《大型網站系統與 Java 中間件實踐》

少看了一本《深刻理解計算機系統》,因此被問到系統相關問題就很虛。

附上買書的截圖

書1

書2

我整理了一些學習筆記和源碼:

如何有針對性地作面試準備

首先 最重要的就是寫簡歷,找工做就像相親,簡歷就是顏值,在這個看臉的社會,只有長得過關,別人才願意深刻發掘你。從我面試的感覺來講,經過與否,簡歷能夠佔到 50% 以上。

建議儘早的開始準備簡歷,由於寫簡歷時纔會發現本身的簡歷沒什麼東西可寫,纔會有一種危機感。若是等到校招纔開始寫,就晚了。

怎麼寫一個好的簡歷網上不少帖子,就不贅述了,這裏簡單說幾點:

  • 亮點:名校本碩,專業排名,大賽獲獎,名企實習。(若是一個沒有隻能自求多福)
  • 技能:這些多是面試官的提問點,不熟別寫
  • 項目:技術棧,難點,貢獻/產出
  • 事實:一萬句「我學習能力很強」不如一句「我專業排名第一」,一萬句「我愛打遊戲」不如一句「我王者農藥打了 1000 多盤,天天投入 4 小時以上」

項目經歷的提煉能夠從如下幾個方面着手準備,這些問題均可以事先想好,多口述演練,以避免臨場緊張出錯

  • 基本問題

    • 項目簡介
    • 項目詳解
    • 項目用到的技術
  • 開放問題

    • 遇到的困難及解決
    • 項目的優缺點及改進
    • 收穫

沒有項目經歷能夠本身找找開源的項目作,或者找一些本身感興趣的方向作一些玩具項目,世上無難事,只怕有心人。

面試技巧

面試本質是信息溝通,是你向面試官展現你能勝任這個崗位,而不是一問一答。你應該儘可能主導面試,引導面試官,而不是被動答題。即使同一個衆人皆知的問題,也不該止步於答出來便可,要爭取儘可能回答的和別人不同,展示出本身獨到的研究和體會。

因此不少人疑惑:爲何我每一問都答上來了,爲啥還掛了?多半就是自我感受良好,其實答的不咋樣,或者就是被面試官牽着鼻子走,給人一種是在背面經的感受。其實不少問題沒有標準答案,面試官看的是你解決問題的思路,思考問題的方式,而不是這個問題答案是什麼

我從本身被問過的問題和反思中簡單說幾點:

  • 1.不止步於問題,多展現本身會的

好比最經典一個問題:輸入一個網址到看到頁面,經歷了哪些過程。若是隻是回答 DNS,OSI 的幾層協議,那格局未免過小,同時會把面試官引導往網絡協議提問,接踵而至的可能就是 TCP/IP(三次握手,TIME_WAIT,滑動窗口),HTTP(keep-alive,HTTPS)等一系列協議細節,就把本身的展現機會限制在很小的範圍了。

而這個問題其實能夠從網站架構的層面先宏觀描述,如 DNS,負載均衡,靜態頁面/動態頁面,數據庫訪問,緩存,甚至前端的瀏覽器渲染等等,這樣你能夠聊得東西就不少,同時證實你有實際的項目經驗,知道業界是如何作的,而後再回頭把網絡層面的東西簡單提一提。

再好比被問到有哪些 hash 方法?由於通常都是問哈希衝突解決方法,不少人會說開放地址法,鏈表法等等。至於 hash 方法,真的有點懵逼,憑下意識說了一個取模(取餘數),答到這確定不夠,因而我把 Java 幾個基本類型的包裝類 Integer, Boolean, String 的 hashcode 方法的實現說了一遍,一方面做爲例子填充回答,另外一方面,表示我研究過 JDK 源碼

  • 2.結合例子,不要背書

譬如,被問到 AOP,IoC 這些概念時,不要官方的解釋背一遍,最好結合本身的使用經驗,把使用場景和感覺到的好處說一下,會比較生動。

  • 3.從更高的層面去總結和闡釋問題

以前被問到「倒排索引」的問題時,我只是舉了個例子把這個概念講清楚了,後來以爲並非太好,只是停留在解釋的層面,若是能首先提綱挈領的來一句「通常的索引,是文檔到單詞的映射;而倒排索引,是單詞到文檔的映射」,整個回答的高度就不同了。

再好比「二叉樹搜索和哈希查找的區別」,若是能答出搜索二叉樹是基於比較的排序,因此時間複雜度爲 O(log n),哈希查找是一個函數映射,因此能作到 O(1),說明你不是背面經的。

  • 4.不會的先把醜話說在前面

面試中不免會遇到不會的,這時千萬不要不懂裝懂,若是以爲有想法、能說一點,能夠先坦誠認可本身不會,希望意嘗試回答一下,這樣即便說錯了,也不會被懟,由於你已經把場子撿開了。

好比當問到「JVM 如何標記要回收的內存」,我其實記不得了,就說不清楚,但標記無非就那麼幾種方法,因此提了兩種:要麼在每塊內存留一點標識位(好比一個字節)來標識,要麼另外用一個調度表之類的存儲結構來統一記錄和管理。這樣還能夠和麪試官進一步交流學習。

  • 5.覆盤反思

每一場面完都要反思總結,看看哪裏答得很差。若是是知識性的缺陷,就趕快補起來;知道答案但答得很差的,就從新組織措辭和表達方式;即便是回答上來的,也能夠反思一下如何答得更好。

固然,全部技巧的前提,是認真踏實的基礎準備

一線互聯網公司的校招面試流程

  • 筆試

我以爲不少公司的筆試是過場,主要仍是根據簡歷刷人。由於我筆試歷來沒所有 AC 過,但都經過筆試了,認識的一些朋友三題 AC,卻沒過筆試。

  • 電話面試

有的大公司會全程電話面試(如阿里),有的是先電話面試篩選簡歷,而後通知現場面(如網易)。電話面試的好處就是不用手寫代碼,缺點就是語言不少時候傳遞的信息是不夠的,不少面部反饋、手勢和圖例都沒法展現。

  • 現場面試

大多數公司仍是會安排現場面試,要麼安排你去公司面試(大公司會報銷路費),要麼安排公司員工到你學校來,一般就是 2 面技術面+1 面 HR 面 。每一個公司風格不一樣,好比騰訊通常是一天一面,戰線有三天,而網易是一天面完。

另外,其實校招的戰線已經從每一年的 9 月份提早到了 3 月份,尤爲是阿里,實習生留用會佔很大一個比例。因此但願認清緊迫的形式,越早準備越好。3 月能不能找到一個好的實習,對找工做影響仍是挺大的,畢竟,若是沒實習經歷,那面試只能全程懟基礎了,而基礎是個無底洞。並且,手裏是否有一個保底的轉正 offer,你面試的心態是不同的。

一些建議

  • 簡歷越早投越好:就像《中國好聲音》導師轉椅子同樣,剛開始以爲不錯的就啪啪啪四轉,後來坑不夠了,愈來愈糾結
  • 只投一種崗位:我全程只投了「Java 研發崗/服務器端開發」,這樣能夠統一準備,避免戰線過長
  • 分梯度精投幾個公司:不要海投,這樣會疲於奔命,勞民傷財尚未時間準備。能夠根據本身的能力,投幾個不一樣檔次的公司(如:高於本身水平的,但願比較大的,頗有把握的,這幾檔),爭取拿到保底的,衝刺心儀的,而不是看到一個公司招人就去面試。

最後祝各位找工做順利,這篇文章主要是寫給學弟學妹的,但願儘早重視起來,開始準備。若是讀完以爲有收穫的話,歡迎給我打賞(http://brianway.github.io/about/)

相關文章
相關標籤/搜索