<aside> 💡 如果你看完解答後,想進一步瞭解每題的詳細解題思路,可以訂閱 ExplainThis 的 E+ 成長計畫。在 E+ 當中,我們有收錄更多常見的題目,並且每一題除了解答,還有附上詳細的思路分析。此外,E+ 有討論專區,任何不懂的問題都可以提問,獲得進一步的解說。
👇 可以在以下網址了解 E+ 成長計畫 **https://www.explainthis.io/zh-hant/e-plus**
👇 更多免費的前端學習資源,可以在 ExplainThis 網站上看到
</aside>
這個文件收錄了前端工程面試,常見的 Promise、Time、函式、陣列操作、閉包、物件、class 程式題。每一題都有題目描述與解答,此外也有標上難度分類。建議還不熟悉前端程式題的人,可以先從 Easy
的開始做起,都做完後再練習 Medium
的題目。
其他類別的題目,可以在 50 題前端程式題大補帖 (上) 中找到。
**備註:**如果你本身有用 Notion, 可以直接複製這個文件到自己的 Notion,就可以自行編輯、做筆記 🙂
<aside> 🔹 Part 3 - Promise 與 Time
Easy
手寫 sleepEasy
手寫 Promise.raceEasy
Add Two Promises (將兩個 Promise 結果相加)Easy
Timeout Cancellation (可取消的延遲函式)Easy
Interval Cancellation (可取消的間隔函式)Medium
手寫 repeatMedium
Execute Asynchronous Functions in Parallel (手寫 Promise.all)Medium
Promise with Time LimitMedium
Cache with Time Limit
</aside><aside> 🔹 Part 4 - 函式 (Function)
Easy
Function Composition (函式組合)Easy
Allow One Function Call (僅允許呼叫一次函式)Easy
Return Length of Arguments Passed (回傳函式中參數的長度)
</aside><aside> 🔹 Part 5 - 閉包 (Closure)
Easy
Create Hello World Function (創建閉包函式)Easy
counter (計數器)Easy
counter II (計數器 II)Easy
To Be Or Not To Be (手寫 expect 函式)Medium
Memoize (記憶函式)
</aside><aside> 🔹 Part 6 - 物件與類別 (Object and Class)
Easy
Is Object Empty (判斷物件是否為空)Easy
Calculator with Method Chaining (加減乘除計算機)Easy
Array Wrapper (陣列封裝)Medium
Compact Object (精簡物件)Medium
Event Emitter
</aside>Easy
手寫 sleep🔸 題目描述
JavaScript 雖然內建了 setTimeout
控制程式暫停與繼續的方法,但使用起來有些繁瑣。請設計一個更流暢的機制,類似其他語言如 Java 和 Python 中的 sleep
函式,同時保持 JavaScript 非同步的特性。
// 可以這樣
console.log('Explain');
await sleep(3000); // 停 3 秒
console.log('This');
// 或者
console.log('Explain');
sleep(3000).then(() => {
console.log('This'); // Only logs after 3 seconds
});
💭 分析與思路