25暑期 淘天前端一面 面經(jīng)分享
面試時(shí)長(zhǎng): 1h30min
JavaScript
- [[JavaScript 和其他語言的區(qū)別]]
- [[JavaScript 內(nèi)存回收]]
- [[事件循環(huán)]] 引入事件循環(huán)是用來解決什么問題的?以下代碼的輸出是什么?如果去掉await呢?執(zhí)行過程中 V8 引擎是如何進(jìn)行壓棧彈棧的?同步代碼會(huì)放在事件循環(huán)里嗎?
console.log(1); await Promise.resolve().then(()=>{ console.log(2); }); console.log(3);
- [[即時(shí)編譯]]是用來解決什么問題的?
- 瀏覽器輸入 url 到頁面呈現(xiàn)的過程 處理 CSS 如果都是外聯(lián)的會(huì)發(fā)生什么html 從返回到解析到頁面的過程,假設(shè)流式返回了 1 兆的 HTML,瀏覽器是如何解析的?布局的計(jì)算、繪制、頁面 HTML 的渲染分別是在 CPU 還是 GPU 里完成的?每次繪制多大面積?(猜了個(gè)視口)追問如果視口面積很大,是把整個(gè)視口一次性提交給 GPU 嗎?
- 屏幕的刷新頻率是多少?瀏覽器的呢? 在瀏覽器上做動(dòng)畫,如何保證動(dòng)畫更細(xì)膩?RAF 的回調(diào)時(shí)機(jī),是在什么時(shí)候回調(diào)?(有點(diǎn)沒理解)RAF 可以傳入一個(gè)回調(diào)函數(shù),這個(gè)回調(diào)函數(shù)是在什么時(shí)候被調(diào)用的?(傳入 RAF 的回調(diào)函數(shù)還有一個(gè)參數(shù),是 RAF 開始執(zhí)行回調(diào)函數(shù)的時(shí)刻)面試官提示和事件循環(huán)有關(guān)系,RAF 在事件循環(huán)內(nèi)的什么時(shí)候被執(zhí)行?(RAF 是宏任務(wù))RAF 的回調(diào)會(huì)掉幀嗎?如果在 RAF 的回調(diào)函數(shù)中放了一個(gè)斐波那契函數(shù),這樣會(huì)掉幀嗎?(猜會(huì)有一種機(jī)制預(yù)防,被問是什么機(jī)制,實(shí)在不會(huì))
React
- react 框架有什么特點(diǎn)(盡可能多說)
- React 的出現(xiàn)是為了解決什么問題?(舉了 React 文檔井字棋狀態(tài)前進(jìn)回溯的例子,面試官說不止這一點(diǎn)點(diǎn))
- React 的 [[React diff]] 算法,具體講講比較子樹的時(shí)候用到廣度還是深度優(yōu)先
- 函數(shù)式組件有什么好處?(說了方便進(jìn)行組件通信、提高復(fù)用性,面試官說類組件也可以復(fù)用?。?/li>
- 使用過哪些 hooks?
- Hooks 的出現(xiàn)是為了解決什么問題?(面試官提示函數(shù)式組件本質(zhì)上是函數(shù),函數(shù)需要狀態(tài),hooks 提供了簡(jiǎn)潔的方式維護(hù)當(dāng)前組件的狀態(tài)。)(面試官給出學(xué)習(xí)建議:以 React 版本更新這方面為脈絡(luò),每個(gè)版本解決了什么樣的問題)
計(jì)算機(jī)基礎(chǔ)
- [[排序]]
- 知道哪幾種排序算法,選擇排序和插入排序區(qū)別是什么?
- 快速排序是怎么實(shí)現(xiàn)的?說一下,時(shí)空復(fù)雜度分別是多少?最好最壞情況下呢
除了上面的還問了項(xiàng)目的一些細(xì)節(jié)(主要是登錄鑒權(quán)相關(guān),token如何快速失效?知道無感刷新嗎?)和個(gè)人的基本情況。
反問部門業(yè)務(wù)和如何讀源碼,面試官講了非常多技術(shù)上的學(xué)習(xí)思路和方法,受益匪淺,真的很感謝這位面試官。
4.9一面 4.10二面 4.15hr面 4.16oc 4.18意向
希望大家都能拿到想要的offer~^_^