非科班二本前端大廠面試的心路歷程和總結(騰訊、頭條、阿里、京東) | 掘金技術徵文

現狀和背景

我的背景

我是17年畢業的,大三升大四的暑假期間開始學習前端;在這以前一直在小公司打滾;並且至今已經換了四家公司了(算上接下來入職的公司),可謂跳槽很是頻繁(實際上是小公司容易倒閉)。若是說別人的經歷的是如何的加分,那我得經歷大概是負無窮。html

在這樣的背景下,我從2019年底到2020年三月底爲止;基本面完了深圳大多大公司和一些小公司;這篇文章主要就是講我的簡歷準備、面試準備和心態方面的經歷。前端

面試狀況

  • 騰訊 - offer
  • 京東凹凸實驗室 - 談薪環節
  • 字節跳動 - 談薪環節
  • 富途證券 - offer
  • Coding - 談薪談崩
  • 順豐 - 筆試 + 一面(薪酬面試官直言給不到,就沒繼續下去)
  • 還有一些中途掛了的公司(螞蟻、阿里國際化、大疆、微衆)

可能你們以爲面試收穫不錯,但其實我拿到的大廠offer基本是2020年3月份左右收到的,而面試掛掉的基本是2019年年底;當時真是陷入了自我懷疑和崩潰之間。下面具體說一下,我的的整個心路歷程吧。vue

寫做本文目的

寫做本文的目的,除了抒發本身最近面試的一些感想,另外就是爲了給有技術實力卻缺乏背景的技術同窗提供一些進大廠的實操經驗;對於背景過硬的同窗其實參考價值不大(飛龍騎臉還能輸?)。node

面試前準備

技術基礎

紮實的技術基礎是面試大廠的前提react

  • JavaScript基礎(ES6+)
  • 瀏覽器基礎(Dom Api、Bom Api、運做機制、渲染原理等等)
  • 算法基礎(常見數據結構的應用(棧、隊列、樹、鏈表)、dfs、bfs、簡單的dp)
  • 網絡基礎(https、http、http二、dns、tcp等等)

上面這些基礎知識算上是基本要求,並且大多須要平常的積累,基礎問題最好還要答出具體的應用場景和解決了什麼問題。webpack

例子:web

  • 棧的應用:實現麪包線或者路由組件,是典型的棧。
  • dfs:vue diff過程當中採起的策略就是dfs,優點是****。
  • http2解決了什麼問題?解決了http大請求阻塞等等。

另外就是原理題目要答的夠細緻:面試

  • 瀏覽器加載/解析流程
  • 瀏覽器渲染原理
  • event loop工做原理

最好可以去看一遍HTML Standard正則表達式

上述這些問題若是停留在看技術文章,若是遇到深刻的問題會被問懵。算法

若是對本身這方面的技術有信心後,就能夠去刷面試題進行查漏補缺(面試題真的只能當查漏補缺看)

另外不要看不起一些基礎技術,以爲用到去查就好了,常見被咱們忽略的基礎:

  • 正則表達式(我一開始忽略了,死的很慘)
  • 隱式轉換(我一開始忽略了,死的很慘)

可能其餘同窗也會有各類平時以爲用不上的技術,壓根看不上的技術,以爲不必看。但到真的問到就涼了,因此我以爲是看的越多成功率越高。

框架層面,相似react和Vue反而沒有太多問題,基本上了解實現原理,看過核心源碼,理解設計上的理念就問題不大。

工程項目基礎

我的以前還發過一條沸點吐槽本身項目不夠優秀,老實說大多數前端同窗的平常業務就是寫寫後臺管理界面、切切圖;業務毫無複雜度,即便業務有複雜度也不必定和麪試崗位契合。

我的也是這樣的,作得是金融方面的業務,雖然存在必定的複雜度,但業務專業性太強,面試官根本不懂我作得是啥;一開始我只要聊本身寫的業務,面試官基本處於懵逼狀態,而後就掛了。

因此後面工程和項目相關,我主要說的就是你們都能聽得懂的方向了:

  • 性能優化(內存、初始化)
  • 前端監控(用戶軌跡埋點、錯誤監控)

若是項目不大行的同窗能夠考慮聊這方面的實踐。

在聊項目實踐的時候須要注意的是深度的問題,在小公司的場景下,每每對工程化的實踐是很是淺薄的。

好比說問初始化優化回答的就是:dll分包、按需加載、圖片base6四、gzip壓縮。

顯得很是蒼白,在回答工程化實踐的過程當中我的我的認爲須要說清楚下面的問題:

  • 爲何要作這件事情(交代背景和緣由)
  • 實施過程是怎麼樣的,遇到了什麼困難,如何解決?(確認你參與度)
  • 最後取得了什麼樣的成效(最好能提供實際數據)?
  • 拓展:在大量的用戶(數據)環境下,會遇到什麼樣的問題?
    • 好比:監控海量日誌怎麼樣寫入(小公司哪有海量日誌,因此須要本身拓展思考)

這些問題都要在面試前,本身提早想清楚,臨場發揮每每不如意。

面試過程當中技巧

面試過程當中除了寫編程題和問一些基礎問題;其他時間基本都屬於聊天,因此重點在於能把天聊下去。聊得開心也就過了;聊得卡頓,讓面試官頻繁看簡歷找問題問,基本就涼了。

因此事先準備一套可以足夠深刻聊下去的技術方向就顯得很是重要,本身腦補好一套連續的問題,自問自答;在面試過程當中,引導面試官到本身事先準備好的方向。

心態

不得不說心態很是重要,面試是雙方互相選擇的過程,最終結果受多方因素的影響:

對於面試者來講:紮實的技術 + 運氣 = Offer

畢竟不一樣的公司、不一樣的部門、不一樣的面試官的面試偏重都是不同的,要拿到一個合適的offer不只技術重要,其實運氣也很重要。

在我我的的經歷中:一面面試官讚揚我技術基礎紮實,二面面試官直接說我技術基礎不紮實的狀況也是發生過的。

在如今相對內卷的環境下,面試更可能是要表現比其餘人更好,而不是達到某個標準;因此擺正心態仍是蠻重要的,沒面過也不表明本身技術不行。

另外就是制定好目標,規劃好本身到底爲了什麼而跳槽,打算去哪家公司?爲了平臺仍是錢,亦或是純粹想換個環境。

就我我的而言,一開始鎖定的目標就是騰訊,中間迷茫了一段時間考慮要不要去中小公司算了;後面以爲跳槽去小公司並不是個人目的,最後堅持下來纔拿到了騰訊的offer(能夠看到我有些公司談薪談崩了,有部分緣由就是我故意開的很高)。

簡歷的準備

最好固然是每一份崗位單獨準備一份簡歷。可是對於我的而言,我投出去的簡歷並無把握收到面試邀請(背景不夠硬),因此每份單獨準備時間成本太大,因此我這裏是只准備了一份簡歷的。

對於簡歷而言,我的認爲大概三個方面:會什麼、作過什麼、能作什麼

項目描述聽從star原則;而不是單獨羅列作過的東西,最好的檢測方式我認爲就是,若是本身是面試官,看到這份簡歷可以問什麼問題,這樣的問題足不足夠支撐我進入大廠?

另外有個雷區就是切忌簡歷過於誇大,被問到本身沒法hold住的面試題就完了。

例子:

  • 初始:我寫了推廣落地了http2(在小公司的環境下基本改個配置,作一些測試就好了);在大公司的環境下更換應用層傳輸協議,其中工做量和技術評估相差巨大。
  • 後續改進:在前面加了限定詞,公司內部項目推廣落地了http2;這樣把影響範圍網絡環境限定在比較簡單的環境下,也說明了本身實際使用過http2。

在面試的過程當中,應該不斷修改本身的簡歷,把本身回答的好的問題凸顯在簡歷上,吸引面試官提問;把答得很差的問題在簡歷中邊緣化。

下面是我的簡歷部分的截圖,可以得到面試邀請基本是由於這部分吧,各位看官能夠作個簡單參考

各大大廠的面試風格

每一個廠之間的面試風格都不同,甚至每一個部門之間的風格都不同;面不一樣的公司進行有針對性的準備能夠提升成功概率。下面我說下我的經歷下來的一些見解。

頭條飛書、富途證券(算法紮實優先考慮)

把這兩個放在一塊兒說是由於這兩家都喜歡寫算法題。

富途證券這邊一共三輪技術面試,基本上每輪都兩道以上的編程題或者機率題,全程基本不會問項目,只有第一輪面試會過一遍前端基礎問題,後續基本寫題就完事了;反饋很是快,大概面試完次日就能知道面試結果。

頭條這邊面得是飛書,每輪面試官除了固定的編程題外,像是有明確的問題方向;第一輪偏重前端基礎,第二輪偏重項目設計,第三輪主要是針對某一方向深刻挖掘和有點壓力面得感受。

另外頭條比較好的地方是每輪面試記錄比較詳細,基本不會出現兩輪面試之間問重複問題的狀況;頭條的反饋也是很是快的,基本上也是面完次日就有反饋了。

這兩家基本上要對本身的算法有必定信心纔去嘗試,由於算法題佔面試的比重極大。

京東凹凸實驗室(適合複雜工程化和nodejs方向)

京東也是三輪技術面試,京東是我面的惟一一家沒有編程題的大廠。

三輪技術面試基本偏宏觀,比較少落到具體某個點的細節;也是惟一一家問了webpack的(我簡歷中並未說起webpack);京東面的是凹凸實驗室,場景比較核心(負責618和京東PC首頁),內部平臺使用nodejs;成員基本上全棧開發。

着重nodejs的工程化方案、部署運維(內存管理、監控方案);webpack內部原理和針對小程序的應用;面試官對小程序、多端方案、前端微服務這些比較感興趣。

另外據反饋,商家平臺常常掛(nodejs),因此有這方面經驗的同窗去面基本很穩;基礎題極少。

阿里和螞蟻

這兩個都掛了,並且說實話並不知道爲啥掛了;二面以前會有道編程題並不難,但不能debug,到時間會自動提交;並且不知道執行結果。

整體的面試風格比較務實,一面基礎,二面會根據項目展開進行提問;

我的建議的話,面阿里仍是選擇杭州的崗位比較靠譜。

騰訊(比較綜合,但題目不算難)

騰訊面試輪次不少和流程較慢,若是像我這樣下定決心要進騰訊的,要作好長期做戰準備;我的面試騰訊經歷了五輪技術面,一輪GM,一輪HR一共七輪;先後一個多月的時間。

騰訊由於技術面比較多,因此整體問的會比較面面俱到,編程題、前端基礎、項目、設計都會有所涉及;

我的經歷大概是組員負責面基礎、leader會根據項目進行展開提問、總監(非前端)聊技術視野、面試委員會會比較難相似頭條三面、GM聊人生;leader後面的面試基本都會問職業規範和跳槽緣由;這些面試之中會穿插編程題。

總得來講,騰訊面試難度並不高,可是容錯率比較低,一些問題沒回答到點上就會掛;由於自己輪次也很是多,因此形成了面騰訊很是考驗心態,兩次面試之間的間隔很是隨機,有可能隔一天,有可能隔一週;因此面試騰訊心態是最重要的。

一些面試題

編程題

  • 實現Promise
  • 實現xss-filter
  • 實現正則獲取url params
  • 合併n個有序鏈表
  • 渲染一個超長的list,實現dom節點的複用
  • random7實現random10
  • 實現正則切分千分位(10000 => 10,000)
  • 實現正則切分銀行卡卡號(像實體卡同樣四位一個空格)
  • 實現jsonp
  • 判斷一個ipv4地址是否存在已有的1000萬條ipv4地址中(bitmap)
  • 實現bind,實現new
  • 一次能夠走一步或者兩步,n個階梯的樓梯有多少種走法
  • 實現掃雷(二維數組,隨機分佈地雷座標)
  • 計算累進稅率
  • 求一個數組中比左邊和右邊的元素都大的元素(On)
  • 實現雙向綁定
  • 實現InputNumber

上面基本上是我的半年來遇到大部分的編程題,還有一些不大好描述的;還有一些閉包相關的編程題都算比較常見的題目了。

網絡和安全

  • https原理(握手過程)
  • http1和http2有什麼區別,http2優點
  • http常見返回碼及其含義
  • http緩存控制,協商緩存相關的幾個頭部的之間的優先級關係
  • 什麼是cors?爲何要用cors?
  • xss是什麼?如何防範?具體例子,jsonp如何防止xss?
  • cookie有什麼用?存在什麼問題?如何解決?crsf如何防範?
  • dns尋址過程?簡述cdn原理

其餘簡述題

  • 談下vue和react的差別
  • 談下對react hook的理解
  • 談下對typescript的理解
  • 談下對前端微服務的理解,有什麼好處,有什麼壞處
  • 談下對serverless架構的理解
  • 談下react fiber的理解
  • 瀏覽器輸入url後流程,儘量詳細
  • 前端適配方案
  • 談下mobx和redux的差別和選擇
  • 若是讓你從零主導一個項目,描述下總體思路,前端後端,開發到部署
  • 若是讓你搭建一套前端監控方案,具體思路
  • 如何定位內存泄露

除了這些比較通用的問題,大多仍是聊項目具體內容會多一些;因爲面試完有點久了,題主一個只能回憶大概這麼多問題,實際遠不止這麼多題目;實際能夠發現簡述題和我寫的簡歷是息息相關的,因此其實除了基礎面試題能夠翻閱一下面經;這類簡述題只能當作參考。

沒有標明具體的公司是考慮到可能會有部分公司不容許發麪經;若是有同窗對具體某個公司感興趣能夠留言

總結

疫情期間整體行情仍是隻有頭部公司在進行招聘,題主面得小公司都是去年面得;頭部公司崗位仍是比較充足的,可是競爭也比較激烈;實際上能夠看到有部分崗位題主已經面完HR了,卻遲遲不願發offer,可能也被丟到備胎池裏面就行對比了。

因此整體建議仍是充實本身,充分準備;不要浪費面試機會。

最後祝你們都拿到心儀的offer。

相關文章
相關標籤/搜索