阿里前端面經1-4面

一面 40min

  • react hooks, useEffect和useCallback區別?
  • react性能優化
  • 簡述diff算法?為什么是O(n3)
  • currentTarget和target區別?
  • webpack loader原理?plugin原理?手寫過嗎?
  • 怎么進行代碼分割?
  • 瀏覽器性能優化
  • 如何封裝一個腳手架cli,如何感知腳手架的更新?
  • 部署流程?靜態資源如何部署?覆蓋式更新和非覆蓋式更新的區別?hash值的意義,max-age設置多久?200和304?from memory和from disk?
  • git rebase? git merge --squash ? 團隊中如何使用git?
  • 如何理解js原型鏈?為什么這樣設計?
  • es5幾種繼承方式 優缺點?es6繼承?

二面 60min

  • flex布局?
  • 左邊固定,右邊flex:1,如果右側文字超出,左側會被擠壓嗎?怎么解決?
  • element、antd等組件庫替換主題樣式的原理是啥?
  • 如何發布一個npm包?設計開發一個UI庫怎么打包?如何按需加載?babel-import-plugin原理是啥?es5引入和es6引入有什么區別?如何進行tree-shaking, 是哪個plugin進行的?es moduleh和Commonjs的區別?
  • Webpack打包優化?如何分chunk?如何按需加載組件?
  • webpack-dev-server和dev-middleware、hotmiddleware的區別,原理能說說嗎?
  • 如何替換項目中所有https=>http? (css和js都得替換,css-loader和babel-loader-plugin)
  • 移動端適配?post-css原理?
  • redux原理?connect高階組件的原理?如何連接store和業務組件?
  • 如何寫一個高階組件?高階組件有哪幾種使用場景(反向繼承,生命周期劫持)?
  • react setState原理?diff原理?setState同步還是異步?
  • react key的原理?
  • react事件處理機制?
  • react fiber為什么會出現?解決了什么場景下什么問題?
  • react hooks為什么會出現?有什么優勢?
  • useEffect、useCallback、useMemo的區別?
  • koa原理?洋蔥模型?dispatch函數細節?
  • new 原理?如何實現一個new ?
  • 一個異步請求,如果5s內有返回就正常返回,如果5s內沒返回就輸出'超時',如何用promise實現?
  • 描述一下作用域和作用域鏈?作用域鏈是什么時候確定的?函數定義時會確定哪些東西?預編譯階段會發生了什么?描述一下AST?
  • 瀏覽器性能優化?介紹一下瀏覽器緩存?打包出來的文件加hash值有什么用?
  • 懟項目.

三面 90min

  • 移動端適配方案 rem原理?物理像素和獨立像素?
  • 怎么判斷機型是iphonx, 幾種方案?
  • css動畫優化方案,如何開啟gpu加速?
  • 小程序遇到過哪些坑?tarojs原理?以前的版本和現在有什么區別?重運行時的優缺點?
  • react組件性能優化方案
  • http三次握手
  • https原理
  • https如何防止中間人攻擊
  • 跨域方案?jsonp原理?cors原理,描述一次完整的Cors請求?
  • node掌握怎么樣?高并發下有哪些處理?數據庫被擊穿怎么辦?
  • 這一面大部分時間在懟項目 懟業務場景

四面交叉面 30min

  • axios的原理,和xhr、fetch區別,axios在node能使用嗎?node怎么發起請求?
  • tarojs原理?重編譯輕運行時的優缺點?輕編譯重運行時優缺點?
  • promise幾種狀態?怎么實現promise.finally?
  • 如果要實現一個請求5s內沒正常返回就返回我想要的,比如'超時',怎么用Promise實現?
  • 怎么設計一個動態配置化表單?哪些場景使用?
  • 剩下一半時間問項目

還有幾道js題

  1. 實現函數字符串轉對象
'a.b.c'
=>
a: {
b: {
c: null
}
}

2.異步請求控制并發 LimitPromise

  1. 輸入字符串 輸出二維數組
`
12312

1  3
12 3
`
=>
[
['12312'],
['13'],
['123']
]
  1. 考this,輸出什么?
function O() {
this.x = 1
this.print = function () {
console.log(this.x)
}
}
var o = new O()

var print = o.print
print()

var n = {x: 2, print: print}
n.print()

可惜5面hr+boss面掛了,緣分未到吧~明年再面

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容