面試內容
小米-小米應用商店(過)
一面
小米的面試官給人的感覺很親切很真誠,是一個體驗很不錯的面試。
- css實現圖片自適應寬高
- 講flex,手寫出flex常用的屬性,並且講出作用
- BFC是什麼
- 專案裡面的前端鑑權是怎麼實現的?
- vue裡面的虛擬dom是怎麼回事?
- vue雙向繫結講一講
- 手寫函式防抖和函式節流
- 講講常用的es6語法,比如let、promise、class等等
- 瀏覽器渲染過程,迴流重繪等等,load、DOMContentLoaded等等事件的觸發順序
- 從小米應用商店裡面隨便找了一個需求讓我現場實現,寫虛擬碼
二面
- 講專案裡面的鑑權和圖片懶載入怎麼實現的
- 講vue-lazyloader的原理,手寫虛擬碼
- 講express框架的設計思想
- 線上日誌是如何處理的
- 講事件迴圈
- 講nodejs的eventEmitter的實現
三面
- 講專案裡面做的事情
- 講vue的響應式原理、依賴收集、監聽陣列、虛擬dom等等
- 講express的中介軟體系統是如何設計的
- 現場從小米應用商店中找出一個需求現場實現,說思路,寫關鍵的程式碼
四面
- 講vue-lazyloader原始碼以及設計
- 使用es5實現es6的class
- websocket握手過程
- 瀏覽器的事件迴圈和nodejs事件迴圈的區別
百思程式設計(過)
這個公司是獵頭推薦的,一家初創公司,CEO比較強勢,也算比較有趣。
一面
- 跨域以及解決辦法
- 手寫一段小演算法
- JavaScript的sort方法內部使用的什麼排序?
二面
這一面是CEO面,主要問了我的職業規劃等等問題,在我沒有表現出很強的要去該公司的意願後,直接給我送走了…
ponyAI-基礎架構(過)
一面
- 講專案裡面幹了啥
- vue-lazyloader怎麼實現的
- vue的響應式系統、虛擬dom
- 函數語言程式設計
- 手寫了一個演算法題
二面
這輪面試時從美國打電話過來的,事後才知道是Google的前端…
- 講講專案裡面做了什麼
- vue原理,和react的區別(其實我沒怎麼用過react)
- JavaScript非同步的處理方式,現場出了一個問題,使用promise實現
三面
- 講專案模組規劃、專案如何部署、如何優化等等
- 手寫函式的防抖
- 手寫一道演算法題
四面
- 講講專案
- 手寫一道演算法題
洋錢罐(過)
一面
- 講專案
- 前端持久化的方式、區別
- vue-lazyloader的原理
- 怎麼配webpack
- 手寫vue雙向繫結
- 講es6的一些特性,並且現場出了幾個程式碼片段,說結果
- 手寫一道演算法題
- http狀態碼
二面
- 講專案
- vue-router的原理
- 專案中怎麼用的webpack,怎麼優化
- 講express的設計原理
- 手寫一道演算法題
創新奇智(過)
一面
- 講專案
- 手動實現parseInt
二面
這一面居然遇到了前同事…寫了一些筆試題,問了一些問題
三面
- 講tcp/ip網路層、三次握手,為什麼不能兩次握手
- 講vue原理
- 手寫一道演算法題
猿輔導(跪)
猿輔導好像總共就一面,期間一些實現方式和麵試官有爭議(沒有衝突)
一面
- 手寫vue的mixin方法
- 手寫promise的all方法
- 現場出了一個移動端的小需求
搜狐-垂直媒體部門(過)
一面
- 講專案
- 專案裡面用nodejs做了啥
- 抽取了哪些vue元件
二面
- 講專案
- 手寫實現promise
騰訊-地圖(跪)
騰訊兩個部門面試都會先做一套筆試題,筆試題基本就是一些常見的前端問題以及演算法題
一面
- 講專案,對專案提了一些問題
- 怎麼判斷一個點是否在圓形內、正方形內
- 對筆試題
騰訊-天天快報(跪)
也是先做了一套筆試題,但是令人尷尬的是,面試官覺得我快排寫錯了,然而我只是在原地快排沒有申請額外空間…
- 對筆試題
- 沒了
百度-百度雲(過)
這個部門今年據說升為一級部門了,好像還挺不錯的
一面
- 講專案
- vue響應式原理,什麼是mvvm
- es6使用過的特性
- flex常見的屬性
- css選擇器的優先順序
- 抽取過哪些vue元件
二面
- 講專案
- express設計原理,面試官對動態路由匹配一直追問下去,但是這裡的原始碼設計我確實是忘了,一路討論下去扯到了字串的字首樹…
- 實現一個事件釋出訂閱類,其實就是eventEmitter
三面
三面是山大老學長,聊了一些業務上的事情
搜狗-手機搜狗(過)
搜狗一面的體驗比較差,面試官給人的感覺不太好…
一面
- 講專案
- 事件迴圈
- 回撥函式的壞處
- vue裡面哪兒不會用到雙向繫結
二面
忘了…
快手-商業化(過)
一面
- 講專案
- 如何抽取公共元件的
- vue的響應式原理
- 如何實現一個可設定過期時間的localStorage
- 實現一個釋出訂閱系統,包括on、emit、off等等
二面
- 一道智力題
- 軟體工程思想、設計模式等等
- async/await程式碼片段,說輸出結果
今日頭條-廣告系統(過)
一面
- 講專案
- 講lazyloader實現
- 用docker做了什麼
- 用webpack做了什麼
- 手寫一個演算法題
- 講flex
- vue響應式原理
- es6
二面
- JavaScript非同步
- 優化專案
- vue原理,包括計算屬性、依賴收集等等
- 用JavaScript的非同步實現sleep函式
- 演算法題
三面
- 手寫快排,時間複雜度,優化
- 手寫實現jsonp
- 專案部署,線上問題等等
- websocket握手過程
四面
- 對vuex的理解,單向資料流
- 設計一個單點登入的系統,類似阿里系那種
- 手寫一個演算法
五面
- 實現一個聯想搜尋元件
- 手寫函式防抖和節流
OPPO成都研發中心(過)
一面
- 講專案
- 講vue的 響應式系統,講了好久,從渲染watcher到虛擬dom,面試官還跟我討論了好久
- 忘了
二面
- 講專案
- 忘了
百詞斬(跪)
首先會線上做一道演算法題,挺簡單的,百詞斬感覺掛的稀裡糊塗的…
一面
- websocket握手過程
- tcp/ip網路層,http的特點
- http強行使用udp能實現嗎?
- vue原理
- webpack熱更新原理,使用過的外掛
- 原型、閉包、跨域
- 手寫了一道演算法題
為什麼面這麼多公司
因為我是實習直接轉正的,也沒參加過秋招,所以對自己在市場上是個怎樣的實力沒有一個清晰的瞭解,而且我也想多瞭解一下其他公司在做什麼,於是就儘量的多面,不過說實話面試確實挺累的。
如何準備
首先前端基礎要過關,可以參考前端工程師手冊、合格前端系列第九彈-前端面試那些事、2018前端面試押題(講義)、Interview Book。
其次,因為我是在小廠,所以可能專案複雜度沒那麼高,我就儘量把手頭上用到過的東西都搞明白設計原理,比如vue、express、vue-lazyloader、promise等等,平時也會造一些輪子,其實這些對業務開發都是有好處的,起碼可以讓你知道自己在寫啥。最後,計算機基礎也是拋不開的,LeetCode刷200題左右,常見的排序、搜尋、樹遍歷演算法都要會,而且以這幾個為基礎的變形也要能看出來。
還有就是面試的時候的一些技巧,因為我本身表達能力還行,面試基本不緊張,說說笑笑也就過去了,之前在公司也當過一年的面試官,這方面發怵的同學可以做一些相關的準備。