通過一個半月的面試,終於在4月21號畫上了圓滿的句號,順利拿到了阿里和騰訊前端實習offer,真心感謝這段時間面試官、家人和朋友的幫助和鼓勵。下面將會從前端基礎、前端框架、http協議、node和其餘問題等方面進行總結(如下問題是按照面試時間來排序的,時間過去過久不少問題都不太記得了,只能把記得問題給寫下來)。css
前端基礎
- prototype和__proto__的關係是什麼
- meta viewport原理
- 域名收斂是什麼
- float和display:inline-block;的區別
- 前端優化策略列舉
- 首屏、白屏時間如何計算
- 閉包
- 做用域鏈
- ajax如何實現、readyState五中狀態的含義
- jsonp如何實現
- 怎麼處理跨域
- restful的method解釋
- get和post的區別
- 事件模型解釋
- 編寫一個元素拖拽的插件
- 編寫一個contextmenu的插件
- 編寫web端cookie的設置和獲取方法
- 兼容ie6的水平垂直居中
- 兼容ie的事件封裝
- h5和原生android的優缺點
- 編寫h5須要注意什麼
- xss和crsf的原理以及怎麼預防
- css優先級
- 如何實現點擊radio的文字描述控制radio的狀態(經過label實現)
- delegate如何實現
框架原理
angularjs前端
- angular的directive怎麼寫
- angular的髒檢查(雙向綁定)是如何實現的
- 依賴注入如何實現
- scope如何實現
- $parse模塊如何實現(主要本身寫了一個相似的庫)
reactnode
- react在setState後發生了什麼(直接說了setState源碼)
- flux解釋
- 對react有什麼瞭解(直接說了react中虛擬dom內部表示,mount過程源碼和同步過程源碼)
jsBridge
- 如何說服對方使用jsBridge
requirejs
- amd和cmd區別,怎麼了解到這些區別的,是不是去看了規範
- requirejs那些常常用的方法,而後對其進行解釋
weex
- weex實現大體原理(只寫過demo,面試管很好沒有難爲我,只問了這一個問題)
http協議
- accept是什麼,怎麼用
- http協議狀態碼,302和303的區別
- 前端緩存如何實現、etag如何實現、etag和cache-control的max-age的優先級哪一個比較高以及爲何、cache-control和expire優先級哪一個比較高以及爲何
node
- Buffer模塊是幹什麼的
- Stream是什麼,使用的兩種模式
- http模塊如何將異步處理方式實現成同步處理方式,具體解析請參考http模塊如何將異步處理轉成同步處理
其餘問題
- utf8和gbk的區別
- 知道頁面上某個點的座標,如何獲取該座標上的全部元素
- angular、react和jQuery適合哪些應用場景(建議查看各個框架產生背景)
- 7點15分小於180度的夾角是多少
- 大數相加
- 給5升和6升的水杯如何倒出3升的水
- 一班喜歡足球的人60%,喜歡排球的70%,喜歡籃球的80%,求喜歡足球和排球的佔多少
- 前端異常監測如何實現
- 直播點贊按鈕的冒泡功能如何實現
- js的uglify如何實現
- 項目架構、如何帶人(本身帶過一個小團隊)
- 前端工程化方面作了哪些東西
面試中的收穫
- 最開始面試時只閱讀過angular源碼,阿里一面完後面試官對我說react用的不熟悉不要緊,弄懂原理也能夠,以後三天瘋狂閱讀react源碼,對於react中虛擬dom內在表示、mount過程、setState的同步過程有了清晰的認識。
- 面試官建議去閱讀node的http模塊和Stream模塊源碼,其中node-v0.1.100的http模塊源碼已經閱讀完,而且寫了一個基於net模塊的http模塊。node-v6.9.1的Stream模塊源碼如今還在閱讀中。
- 初步瞭解了前端異常監測,而且瞭解了百姓網、騰訊和阿里在前端異常監測的一些方案和框架。
- 閱讀了大量前端工程化方面的博文,對前端工程化有了進一步的理解。
- 瞭解了angular和react產生背景。