如何準備校招技術面試
你可以從這篇文章獲取哪些資訊
如何看待校招面試
以 後臺研發 為例,校招技術面試的考核範圍和難度
如何提升自己的技術內功(長期)
如何有針對性地做面試準備(短期)
面試交談中的一些技巧
一線網際網路公司的校招面試流程
這篇文章不能帶給你什麼
本文並不是速成寶典/突擊手冊
本文不會羅列面試原題和題解
春招找實習,投了三家(阿里,騰訊,美團),全部拿到實習 Offer,去了阿里。
阿里:菜鳥網路;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 中介軟體實踐》
少看了一本《深入理解計算機系統》,所以被問到系統相關問題就很虛。
首先 最重要的就是寫簡歷,找工作就像相親,簡歷就是顏值,在這個看臉的社會,只有長得過關,別人才願意深入發掘你。從我面試的感受來說,通過與否,簡歷可以佔到 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 研發崗/伺服器端開發”,這樣可以統一準備,避免戰線過長
分梯度精投幾個公司:不要海投,這樣會疲於奔命,勞民傷財還沒有時間準備。可以根據自己的能力,投幾個不同檔次的公司(如:高於自己水平的,希望比較大的,很有把握的,這幾檔),爭取拿到保底的,衝刺心儀的,而不是看到一個公司招人就去面試。
相關文章
- 網際網路校招面試必備——資料庫 | 掘金技術徵文面試資料庫
- Java研發方向如何準備BAT技術面試答案JavaBAT面試
- 如何準備阿里技術面試?終面官現身說法!阿里面試
- 新手程式設計師該如何準備面試?【備戰春招/秋招系列】程式設計師面試
- 網際網路校招面試必備——Java多執行緒 | 掘金技術徵文面試Java執行緒
- 網際網路校招面試必備——計算機網路 | 掘金技術徵文面試計算機網路
- 如何準備Java的高階技術面試,java基礎面試筆試題Java面試筆試
- 如何準備面試?面試
- Java秋招校招面試Java面試
- 我是如何準備阿里的社招面試,給準備java社招的朋友的一個建議!阿里面試Java
- 【備戰春招/秋招系列】初出茅廬的程式設計師該如何準備面試?程式設計師面試
- 工作快兩年了!斗膽談談校招社招技術面試那些事面試
- 現場拆題+直通面試 | 美團技術校招直播來了!面試
- 牛客特製2020名企校招筆試面試求職攻略-技術篇筆試面試求職
- 最近校招面試記錄面試
- 面試準備面試
- java面試準備Java面試
- 面試準備(一)面試
- 面試準備(1)面試
- 下血本買的!萬字Android技術類校招面試題彙總,Android崗Android面試題
- 2019校招Android面試題解1.0Android面試題
- 2018名企校招筆試真題精選技術篇筆試
- 如何利用系統思維準備面試?面試
- 面試準備-文章分享面試
- 面試準備題型面試
- 【面試準備·1】Babel面試Babel
- 【面試準備·2】webpack面試Web
- java面試準備(1)Java面試
- 作為一技術人員,面試前都需要做哪些準備?面試
- 騰訊校招前端開發筆試初試總結| 掘金技術徵文前端筆試
- 2018春招PHP面試總結 | 掘金技術徵文PHP面試
- 校招面試心得看得再多也沒用面試
- 演算法與面試之-如何準備演算法面試演算法面試
- 面試準備——JVM相關面試JVM
- jsliang 的 2019 面試準備JS面試
- 2019 面試準備 - 圖片面試
- Android面試準備(中高階)Android面試
- iOS秋招面經---我是如何通過多家公司的面試 | 掘金技術徵文iOS面試