爲了測試過去的一年的成長,出去面試五家公司(3家創業saas公司,一家上市公司,一家跨境電商),前端
新的一年,要繼續鞭策本身成長。vue
前端面試注意幾個方面:node
1. 溝通能力react
2. 基礎知識深度webpack
3. 解決問題的實際能力ios
4. 知識邊界git
1. 溝通能力:es6
對問題的視角闡述是否準確容易理解。web
2. 基礎知識深度知識點考察:面試
2.1 執行上下文:
執行上下文分爲二個階段(編譯階段,執行階段)
(1)編譯階段包括:變量對象(vo),做用域鏈的肯定,this指向的肯定。
變量對象的組成: 1.建立arguments 》2.檢查函數的聲明並建立屬性 》 3檢測var聲明併爲建立屬性賦值爲undefined,遇到相同的屬性跳過
編譯階段的變量對象的屬性是不可訪問的,只有等到執行階段才能訪問。
(2)執行階段包括:變量的賦值,函數的引用,其餘代碼的執行。
活動對象(ao)和變量對象(vo)的區別:都是相同的東西,只是處於執行上下文的不一樣的生命週期,活動對象處於執行階段在當前函數調用棧的棧頂。
2.2 閉包:
什麼是閉包?
閉包的用途?
閉包和匿名函數的區別?
2.3 模塊化:
es6的module和common.js以及amd,cmd模塊化的區別?
2.4 vue生命週期:
建立先後(el掛載點用不了),掛載先後(el,data都能使用),更新先後(虛擬dom的算法),銷燬先後(銷燬後鉤子函數不起做用)
父子組件的怎麼傳值?
嵌套路由怎麼實現?
vuex怎麼使用,由哪些組成,action是幹什麼的,與mutation區別?
2.5 異步的promise,async,await:
怎麼避免回調地獄?
promise是什麼?有哪些狀態?
事件循環的同步,異步,微任務,宏任務的區別?
async返回什麼?
await在等待什麼?
await在等待到結果後又要作什麼?
2.6 http1.0,1.1,2.0的協議,請求響應報文,三次握手
短連接和長連接的區別?
connection的keep-alive是什麼?
http2.0的特色,怎麼理解多路複用?
請求和響應報文的組成?
輸入一個url後發生什麼(url是否有緩存》dns解析url爲ip》tcp鏈接,三次握手》服務端的響應》瀏覽器的渲染》繪畫》顯示)
強制緩存和協商緩存理解?
2.7 使用axios怎麼解決跨域問題?
proxyTable的原理?
http-proxy-middle中間件?
2.8 webpack配置問題
你的項目的entry有多少個?
webpack-merge瞭解嗎?
是否使用過對象存儲來處理圖像?
聽過數據萬象嗎?
怎麼優化多頁面的打包速度?
2.9 面向對象的問題
es6類的靜態成員和動態成員的區別?
重點考察多態和類型的設計,好比說mixin和decorator
2.10 基礎函數的考察
map,reduce,filter,forEach, every, some
splice,slice,parseInt,concat,join
['1','2','3'],map(parseInt) 爲何是 [1 ,NAN, NAN]?
2.11 基礎的算法
冒泡,快速,插入,歸併算法,迴文,數組去重
什麼是鏈表?
如何實現一個hash算法?
歸併排序的複雜度?
2.12 前端常見的設計模式
2.13 進程和線程的區別,什麼是線程同步?
3 解決問題的能力