2019.02.19前端面試五家後總結
為了測試過去的一年的成長,出去面試五家公司(3家創業saas公司,一家上市公司,一家跨境電商),
新的一年,要繼續鞭策自己成長。
前端面試註意幾個方面:
1. 溝通能力
2. 基礎知識深度
3. 解決問題的實際能力
4. 知識邊界
1. 溝通能力:
對問題的視角闡述是否準確容易理解。
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 解決問題的能力
- 組件接口的設計(比如設計一個表單組件/picker) 基於react或者vue
- 針對項目業務邏輯提具體的問題(比如怎麽維持app用戶的登錄狀態)
- 具體的工具(webpack,gulp,git)考察具體的知識點,怎麽解決沖突
- 前端方向的把握,nodejs和typescript的學習情況
2019.02.19前端面試五家後總結