金三銀四:如何更高效的準(zhǔn)備面試
今天從一個面試官的角度,來聊聊技術(shù)面試那些事兒,幫助大家更好的準(zhǔn)備面試,拿到心儀的Offer。
大公司都是怎么面試的
知己知彼,才能百戰(zhàn)不殆,我從兩個方面對互聯(lián)網(wǎng)行業(yè)的面試進行拆解,一個是面試流程,另外一個是結(jié)構(gòu)化面試。
面試流程
大部分公司的招聘流程可以分為簡歷投遞、簡歷篩選、面試環(huán)節(jié)、溝通 Offer 幾個步驟。
校園招聘比較特殊,是企業(yè)在統(tǒng)一時間到學(xué)校去進行宣講,大批量的簡歷收集和篩選,其他的面試流程都是一致的。
簡歷投遞
除了獵頭等第三方渠道,求職的第一步就是簡歷投遞。
你可能會說,簡歷投遞就是去招聘網(wǎng)站上選擇崗位,然后投遞就好了,這個有什么特別的。
其實投遞簡歷也有一些技巧,比如簡歷的文件名,可以使用“名字—求職崗位—教育背景—工作背景”這樣的格式命名,突出自己的優(yōu)勢,方便 HR 快速評估。
選擇合適的招聘網(wǎng)站投遞,相比前程無憂等綜合類網(wǎng)站,Boss 直聘等垂直招聘網(wǎng)站更適合 IT 類求職。
另外一個非常有效的簡歷投遞渠道,就是內(nèi)推,找到合適的人來內(nèi)推,可以大大提高面試成功率。
多聯(lián)系自己的師兄師姐,前同事等,或者去V2EX,北郵人等IT人活躍的社區(qū),都可以找到類似的內(nèi)推機會。
簡歷篩選
簡歷篩選環(huán)節(jié),就是如何在簡歷中突出自己的優(yōu)勢。
有些朋友明明項目很出彩,可落到簡歷上就一筆帶過,要記住,除非你是業(yè)界大佬或者知名人士,對于大部分候選人來說,面試官了解你的最直接材料就是簡歷。
所以一定要認真對待簡歷的制作,特別是專業(yè)技能、項目經(jīng)驗等的描寫。對于技術(shù)類崗位,一個堅持更新的博客、開源項目的代碼貢獻,都可以作為你的亮點。
面試環(huán)節(jié)
Talk is cheap,show me the code,面試環(huán)節(jié)直接決定面試結(jié)果,技術(shù)和業(yè)務(wù)實力始終是最重要的。
作為選拔性環(huán)節(jié),互聯(lián)網(wǎng)大廠一直有“面試造火箭,入職擰螺絲”的特點,畢竟內(nèi)卷就是當(dāng)下的國情,各位老鐵們一路做題家過來也都清楚,能做的就是有針對性的不斷提高和積累。

另外,一些公司比較看重企業(yè)文化和價值觀等,會有對應(yīng)的價值觀和性格測評,像阿里巴巴,HR 有一票否決權(quán),所以非技術(shù)的面試環(huán)節(jié)同樣重要。
溝通 Offer
面試通過以后就是 Offer 溝通和背調(diào)環(huán)節(jié),Offer 溝通說白了就是談錢談職級,這一點還是要多和身邊有經(jīng)驗的朋友請教下。

從獵頭、朋友、網(wǎng)絡(luò)了解這個崗位的薪酬范圍,根據(jù)自己的當(dāng)前薪酬和跳槽期望綜合考慮,自己有一個心理區(qū)間。
在和HR溝通的環(huán)節(jié)中,Hr希望幫公司節(jié)省成本,你希望多漲點工資,信息不對稱,求職者始終是缺乏信息的一方,不要相信太多的大餅,你的核心價值是你的業(yè)務(wù)能力和職業(yè)素養(yǎng),而不是薪資的談判能力。
最后一步 Offer 發(fā)放和入職,到這里整個面試流程就結(jié)束了。
結(jié)構(gòu)化面試
各大互聯(lián)網(wǎng)公司對面試官都是有要求的,畢竟在和候選人溝通的過程中,面試官就代表了公司的對外形象,所以一般都會有針對面試官的培訓(xùn)。
以阿里、字節(jié)跳動等為例,一般會采取「結(jié)構(gòu)化面試」的方式。
結(jié)構(gòu)化面試,指的是將各種知識技能做好劃分,例如編程語言,操作系統(tǒng),數(shù)據(jù)庫,網(wǎng)絡(luò),算法,工程/架構(gòu)設(shè)計,并通過幾個面試官之間的多輪交叉面試來考查掌握程度。
這樣的面試方法,可以避免某個面試官考察太偏,并充分挖掘候選人的亮點。
人力部門也會特別關(guān)注候選人的面試體驗,每輪面試過后,都會通過調(diào)查問卷的形式來取得求職者對本輪面試的一些體驗。
如何考察技術(shù)能力
程序員面試,當(dāng)然技術(shù)是最重要的,不同公司對技術(shù)能力的考察會有一些側(cè)重點。
一般來說,國內(nèi)互聯(lián)網(wǎng)公司更看重項目能力,國外公司更看重計算機基礎(chǔ)。阿里的面試更看重你的項目經(jīng)驗,Google和 Facebook 等北美公司的面試,每輪面試都需要手寫算法,針對社招還會有 System Design 題目。

考察計算機基礎(chǔ),如操作系統(tǒng)、網(wǎng)絡(luò)原理等
一線互聯(lián)網(wǎng)公司在面試中更加關(guān)注計算機基礎(chǔ)知識的考察,比如數(shù)據(jù)結(jié)構(gòu)和算法,操作系統(tǒng)、網(wǎng)絡(luò)原理。
國內(nèi)公司在招聘上也越來越看齊 Google、Facebook 等海外企業(yè),這方面比較典型的公司是今日頭條,面試重點考察算法,不提前刷題很難通過。
深入技術(shù)棧,考察對原理和源碼的掌握程度
深入底層實現(xiàn),考察對相關(guān)組件的原理掌握程度,以及是否讀過源碼等。
互聯(lián)網(wǎng)用戶基數(shù)比較大,一個細微的優(yōu)化可能會帶來很大的收益,同樣,一個很小的問題可能會對線上業(yè)務(wù)造成毀滅性的影響,所以要知其然還要知其所以然,對技術(shù)棧的掌握要求比較深入。
偏向?qū)嶋H問題,考察業(yè)務(wù)中的應(yīng)用
面試中通常會結(jié)合實際業(yè)務(wù)場景來提問,其考察的是在真實業(yè)務(wù)中解決問題的能力。
條條大路通羅馬,一個功能點,技術(shù)方案可能有很多,但是從落地到代碼實現(xiàn),就要限制于整體方案、上下游約束等,典型的比如秒殺系統(tǒng)、微博會員關(guān)注關(guān)系設(shè)計等。
重視分布式系統(tǒng),穩(wěn)定性等方向
大型互聯(lián)網(wǎng)公司,特別是 C 端的業(yè)務(wù),面對的是海量的用戶和請求,牽一發(fā)而動全身,對系統(tǒng)可用性、分布式高可用等有極高的要求,所以在面試中會重點考察分布式系統(tǒng)設(shè)計,如何構(gòu)建高并發(fā)高可用的系統(tǒng)。
考察業(yè)務(wù)積累,崗位匹配度
對于一些比較高級的技術(shù)崗位,會特別關(guān)注對業(yè)務(wù)的熟悉程度,比如支付行業(yè),廣告行業(yè)。
關(guān)注哪些軟素質(zhì)
除了技術(shù)能力的考察,面試官會關(guān)注候選人的一些軟素質(zhì),比如溝通能力,抗壓能力,自主學(xué)習(xí)能力等。

想繼續(xù)深入的老鐵可以了解下「行為面試法」和「STAR法則」,這里我就不再展開了。

溝通能力
溝通是否順暢
表達是否有條例
能否清楚表達自己負責(zé)做的事情
能否抓重點,系統(tǒng)的技術(shù)要點
學(xué)習(xí)能力
有沒有良好的學(xué)習(xí)習(xí)慣
在工作之外是否有持續(xù)的積累
能否快速深入某個技術(shù)棧,業(yè)務(wù)領(lǐng)域
發(fā)展?jié)摿?/span>
通過是否有良好的習(xí)慣
是否一直在學(xué)習(xí)來判斷
是否熱愛計算機,對編程有激情
自驅(qū)能力
有夢想,有較高的個人追求
是否敢做有困難的事情
是否敢做沒把握的事情
抗壓能力
是否有負責(zé)多件事情,多件事情如何并行處理
如果讓你接手一個歷史悠久的模塊,你會怎么做
你說的XXX跟開源的YYY很像,是不是抄襲的
如何高效準(zhǔn)備面試
聊完了互聯(lián)網(wǎng)技術(shù)面試的特點,接下來聊聊如何高效的準(zhǔn)備面試。
建議在面試之前,都去招聘網(wǎng)站上看一下,總結(jié)一些崗位要求,下面我從技術(shù)面試出發(fā),總結(jié)下面幾點。
提高計算機基礎(chǔ),加強算法和數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)等底層能力
計算機基礎(chǔ)能力是校招的重點,社招也會著重考察。
操作系統(tǒng)和網(wǎng)絡(luò)原理,比如基本的調(diào)度算法、文件系統(tǒng),還有各種網(wǎng)絡(luò)協(xié)議,比如 TCP/IP 協(xié)議也是必備的,操作系統(tǒng)推薦機械工業(yè)出版社的華章系列教材,網(wǎng)絡(luò)原理也有幾本大部頭,可以看《圖解 HTTP 協(xié)議》和《圖解 TCP/IP 協(xié)議》。

數(shù)據(jù)結(jié)構(gòu)方面,基本的數(shù)組、棧和隊列、字符串、二叉樹等結(jié)構(gòu),其中二叉樹是面試中的重點,手寫紅黑樹有點夸張,不過基本的遍歷、二叉樹重建、二叉樹深度等必須掌握,沒事就在白紙上寫寫代碼,考的是白板編程能力。
算法方面,基本的排序和查找算法就不用提了,遞歸、分治、BFS、DFS、動態(tài)規(guī)劃算法都在題目范圍中。如果算法基礎(chǔ)不太好,就刷刷《劍指 offer》《編程珠璣》、LeetCode 的高頻題。
刷刷 LeetCode,對于大部分面試來說足夠了,除非你在簡歷上介紹自己是ACM,NOI獲獎選手,不會在算法上特別刁難。
深入一門編程語言,了解底層實現(xiàn),各種語法糖和特性
工程師不管學(xué)習(xí)多少語言,都要有一門熟悉的主編程語言。
什么是主編程語言,就是對這個編程語言你可以達到深入的程度,不是只會用,要從代碼編譯開始就知道程序是怎么運行的。典型的主語言有 Java、C++、Golang 、PHP 及 Python 等。

針對 Java 語言,要了解 Java 語言的底層機制,字節(jié)碼怎么用,為什么 Java 是平臺無關(guān)型語言,這些都要搞明白。應(yīng)用層面,對集合框架、網(wǎng)絡(luò) IO、并發(fā)編程、泛型、異常、反射等技術(shù)都要有比較深入的了解,一些常見的組件,還要學(xué)習(xí)源碼,優(yōu)化層面,Java 虛擬機調(diào)優(yōu)、常見 JVM 問題的處理,都是面試經(jīng)常考察的,也是一定要掌握的。
加強數(shù)據(jù)庫和緩存應(yīng)用,掌握各種 NoSQL 技術(shù)
數(shù)據(jù)存儲是業(yè)務(wù)的基石,從關(guān)系型數(shù)據(jù)庫 MySQL 到 NoSQL,從 Memcached 到 Redis 的各種緩存,這些都是面試的必考題,從應(yīng)用到底層邏輯都必須了解。
數(shù)據(jù)庫本身這塊的知識點更是重要,Redis 也是面試的重點,作為應(yīng)用最多的緩存,Redis 在開發(fā)中已經(jīng)和 MySQL 一樣重要。
學(xué)習(xí)高并發(fā),高可用,分布式系統(tǒng)設(shè)計
高并發(fā)是技術(shù)人一直追求的,為什么我們說阿里的雙十一是對系統(tǒng)架構(gòu)的挑戰(zhàn)?
就是天量的 QPS 請求,在這種情況下,一個很小的問題都會被放大,導(dǎo)致巨大的業(yè)務(wù)損失。如何保障系統(tǒng)的高可用,保證業(yè)務(wù)正常,是每個工程師都要思考的。要在工作中注意積累分布式系統(tǒng)架構(gòu),以及高并發(fā)和高可用知識。
增強軟性指標(biāo),包括快速學(xué)習(xí),良好的溝通能力
除了技術(shù)實力,軟性指標(biāo)也很重要,平時的工作中,要注意結(jié)構(gòu)化和體系化的思考,學(xué)習(xí)下《金字塔原理》等表達技巧,養(yǎng)成良好的文檔能力,在面試中就可以更好的表現(xiàn)自己。
<END>
大家都在看:
復(fù)雜業(yè)務(wù)系統(tǒng)的架構(gòu)設(shè)計思路
IT人士必知,互聯(lián)網(wǎng)常見商業(yè)模式
題圖來自 Unsplash,基于 CC0 協(xié)議使用
