前端手寫題 50 題大補帖
2024年3月9日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
這個文件收錄了前端工程面試,常見的 Promise、Time、函式、陣列操作、閉包、物件、class 程式題。每一題都有題目描述與解答,此外也有標上難度分類。建議還不熟悉前端程式題的人,可以先從 Easy 的開始做起,都做完後再練習 Medium 的題目。
Closure 系列
Array 系列
Function 系列
Promises and Time 系列
- [Easy] LeetCode JS 30 - 2723. Add Two Promises (將兩個 Promise 結果相加)
- [Easy] LeetCode JS 30 - 2621. Sleep (手寫 sleep)
- [Easy] LeetCode JS 30 - 2715. Timeout Cancellation (可取消的延遲函式)
- [Easy] LeetCode JS 30 - 2725. Interval Cancellation (可取消的間隔函式)
- [Medium] LeetCode JS 30 - 2637. Promise Time Limit
- [Medium] LeetCode JS 30 - 2622. Cache with Time Limit
- [Medium] LeetCode JS 30 - 2627. Debounce (手寫防抖函式)
- [Medium] LeetCode JS 30 - 2721. Execute Asynchronous Functions in Parallel (手寫 Promise.all)
JSON 系列
- [Easy] LeetCode JS 30 - 2727. Is Object Empty (判斷物件是否為空)
- [Easy] LeetCode JS 30 - 677. Chunk Array(陣列分塊)
- [Easy] LeetCode JS 30 - 2619. Array Prototype Last (陣列的最後一個元素)
- [Medium] LeetCode JS 30 - 2631. Group By (陣列分組)
- [Easy] LeetCode JS 30 - 2724. Sort By (依據排序)
- [Medium] LeetCode JS 30 - 2722. Join Two Arrays by ID (根據 ID 合併兩個陣列)
- [Medium] LeetCode JS 30 - 2625. Flatten Deeply Nested Array (陣列扁平化)
- [Medium] LeetCode JS 30 - 2705. Compact Object (精簡物件)
Classes 系列
其他常見題目
- [Easy] 手寫陣列 square
- [Easy] 手寫 inRange
- [Easy] 手寫 clamp
- [Easy] 手寫 compact
- [Easy] 手寫 difference
- [Easy] 手寫 dropWhile
- [Easy] 手寫 dropRightWhile
- [Easy] 手寫 fill
- [Easy] 手寫 fromPairs
- [Easy] 手寫陣列 findIndex
- [Easy] JavaScript 陣列去除重複 removeDuplicates
- [Easy] 實作 Array.prototype.at
- [Medium] 請實現 Lodash 的 .get()
- [Medium] 手寫 cloneDeep (深拷貝)
- [Medium] 手寫 isEqual(深比較)
- [Medium] 手寫節流 (throttle) 函式
- [Medium] 手寫函式緩存 (cache function)
- [Medium] 手寫 consolidateData(整合數據)
- [Medium] 手寫 Repeat