【面經】寒冬中的一年半前端跳槽

亞古發表於1970-01-01

面試內容

小米-小米應用商店(過)

一面

小米的面試官給人的感覺很親切很真誠,是一個體驗很不錯的面試。

  1. css實現圖片自適應寬高
  2. 講flex,手寫出flex常用的屬性,並且講出作用
  3. BFC是什麼
  4. 專案裡面的前端鑑權是怎麼實現的?
  5. vue裡面的虛擬dom是怎麼回事?
  6. vue雙向繫結講一講
  7. 手寫函式防抖和函式節流
  8. 講講常用的es6語法,比如let、promise、class等等
  9. 瀏覽器渲染過程,迴流重繪等等,load、DOMContentLoaded等等事件的觸發順序
  10. 從小米應用商店裡面隨便找了一個需求讓我現場實現,寫虛擬碼

二面

  1. 講專案裡面的鑑權和圖片懶載入怎麼實現的
  2. 講vue-lazyloader的原理,手寫虛擬碼
  3. 講express框架的設計思想
  4. 線上日誌是如何處理的
  5. 講事件迴圈
  6. 講nodejs的eventEmitter的實現

三面

  1. 講專案裡面做的事情
  2. 講vue的響應式原理、依賴收集、監聽陣列、虛擬dom等等
  3. 講express的中介軟體系統是如何設計的
  4. 現場從小米應用商店中找出一個需求現場實現,說思路,寫關鍵的程式碼

四面

  1. 講vue-lazyloader原始碼以及設計
  2. 使用es5實現es6的class
  3. websocket握手過程
  4. 瀏覽器的事件迴圈和nodejs事件迴圈的區別

百思程式設計(過)

這個公司是獵頭推薦的,一家初創公司,CEO比較強勢,也算比較有趣。

一面

  1. 跨域以及解決辦法
  2. 手寫一段小演算法
  3. JavaScript的sort方法內部使用的什麼排序?

二面

這一面是CEO面,主要問了我的職業規劃等等問題,在我沒有表現出很強的要去該公司的意願後,直接給我送走了…

ponyAI-基礎架構(過)

一面

  1. 講專案裡面幹了啥
  2. vue-lazyloader怎麼實現的
  3. vue的響應式系統、虛擬dom
  4. 函數語言程式設計
  5. 手寫了一個演算法題

二面

這輪面試時從美國打電話過來的,事後才知道是Google的前端…

  1. 講講專案裡面做了什麼
  2. vue原理,和react的區別(其實我沒怎麼用過react)
  3. JavaScript非同步的處理方式,現場出了一個問題,使用promise實現

三面

  1. 講專案模組規劃、專案如何部署、如何優化等等
  2. 手寫函式的防抖
  3. 手寫一道演算法題

四面

  1. 講講專案
  2. 手寫一道演算法題

洋錢罐(過)

一面

  1. 講專案
  2. 前端持久化的方式、區別
  3. vue-lazyloader的原理
  4. 怎麼配webpack
  5. 手寫vue雙向繫結
  6. 講es6的一些特性,並且現場出了幾個程式碼片段,說結果
  7. 手寫一道演算法題
  8. http狀態碼

二面

  1. 講專案
  2. vue-router的原理
  3. 專案中怎麼用的webpack,怎麼優化
  4. 講express的設計原理
  5. 手寫一道演算法題

創新奇智(過)

一面

  1. 講專案
  2. 手動實現parseInt

二面

這一面居然遇到了前同事…寫了一些筆試題,問了一些問題

三面

  1. 講tcp/ip網路層、三次握手,為什麼不能兩次握手
  2. 講vue原理
  3. 手寫一道演算法題

猿輔導(跪)

猿輔導好像總共就一面,期間一些實現方式和麵試官有爭議(沒有衝突)

一面

  1. 手寫vue的mixin方法
  2. 手寫promise的all方法
  3. 現場出了一個移動端的小需求

搜狐-垂直媒體部門(過)

一面

  1. 講專案
  2. 專案裡面用nodejs做了啥
  3. 抽取了哪些vue元件

二面

  1. 講專案
  2. 手寫實現promise

騰訊-地圖(跪)

騰訊兩個部門面試都會先做一套筆試題,筆試題基本就是一些常見的前端問題以及演算法題

一面

  1. 講專案,對專案提了一些問題
  2. 怎麼判斷一個點是否在圓形內、正方形內
  3. 對筆試題

騰訊-天天快報(跪)

也是先做了一套筆試題,但是令人尷尬的是,面試官覺得我快排寫錯了,然而我只是在原地快排沒有申請額外空間…

  1. 對筆試題
  2. 沒了

百度-百度雲(過)

這個部門今年據說升為一級部門了,好像還挺不錯的

一面

  1. 講專案
  2. vue響應式原理,什麼是mvvm
  3. es6使用過的特性
  4. flex常見的屬性
  5. css選擇器的優先順序
  6. 抽取過哪些vue元件

二面

  1. 講專案
  2. express設計原理,面試官對動態路由匹配一直追問下去,但是這裡的原始碼設計我確實是忘了,一路討論下去扯到了字串的字首樹…
  3. 實現一個事件釋出訂閱類,其實就是eventEmitter

三面

三面是山大老學長,聊了一些業務上的事情

搜狗-手機搜狗(過)

搜狗一面的體驗比較差,面試官給人的感覺不太好…

一面

  1. 講專案
  2. 事件迴圈
  3. 回撥函式的壞處
  4. vue裡面哪兒不會用到雙向繫結

二面

忘了…

快手-商業化(過)

一面

  1. 講專案
  2. 如何抽取公共元件的
  3. vue的響應式原理
  4. 如何實現一個可設定過期時間的localStorage
  5. 實現一個釋出訂閱系統,包括on、emit、off等等

二面

  1. 一道智力題
  2. 軟體工程思想、設計模式等等
  3. async/await程式碼片段,說輸出結果

今日頭條-廣告系統(過)

一面

  1. 講專案
  2. 講lazyloader實現
  3. 用docker做了什麼
  4. 用webpack做了什麼
  5. 手寫一個演算法題
  6. 講flex
  7. vue響應式原理
  8. es6

二面

  1. JavaScript非同步
  2. 優化專案
  3. vue原理,包括計算屬性、依賴收集等等
  4. 用JavaScript的非同步實現sleep函式
  5. 演算法題

三面

  1. 手寫快排,時間複雜度,優化
  2. 手寫實現jsonp
  3. 專案部署,線上問題等等
  4. websocket握手過程

四面

  1. 對vuex的理解,單向資料流
  2. 設計一個單點登入的系統,類似阿里系那種
  3. 手寫一個演算法

五面

  1. 實現一個聯想搜尋元件
  2. 手寫函式防抖和節流

OPPO成都研發中心(過)

一面

  1. 講專案
  2. 講vue的 響應式系統,講了好久,從渲染watcher到虛擬dom,面試官還跟我討論了好久
  3. 忘了

二面

  1. 講專案
  2. 忘了

百詞斬(跪)

首先會線上做一道演算法題,挺簡單的,百詞斬感覺掛的稀裡糊塗的…

一面

  1. websocket握手過程
  2. tcp/ip網路層,http的特點
  3. http強行使用udp能實現嗎?
  4. vue原理
  5. webpack熱更新原理,使用過的外掛
  6. 原型、閉包、跨域
  7. 手寫了一道演算法題

為什麼面這麼多公司

因為我是實習直接轉正的,也沒參加過秋招,所以對自己在市場上是個怎樣的實力沒有一個清晰的瞭解,而且我也想多瞭解一下其他公司在做什麼,於是就儘量的多面,不過說實話面試確實挺累的。

如何準備

首先前端基礎要過關,可以參考前端工程師手冊合格前端系列第九彈-前端面試那些事2018前端面試押題(講義)Interview Book

其次,因為我是在小廠,所以可能專案複雜度沒那麼高,我就儘量把手頭上用到過的東西都搞明白設計原理,比如vue、express、vue-lazyloader、promise等等,平時也會造一些輪子,其實這些對業務開發都是有好處的,起碼可以讓你知道自己在寫啥。最後,計算機基礎也是拋不開的,LeetCode刷200題左右,常見的排序、搜尋、樹遍歷演算法都要會,而且以這幾個為基礎的變形也要能看出來。

還有就是面試的時候的一些技巧,因為我本身表達能力還行,面試基本不緊張,說說笑笑也就過去了,之前在公司也當過一年的面試官,這方面發怵的同學可以做一些相關的準備。

來源:https://juejin.im/post/5c356f68f265da61483bca61

相關文章