Skip to content
大纲

手写面试题

帮你搞定 90% JS 手写题

TODO

  1. 手写 call, apply 和 bind 🔥
  2. 实现 new 关键字
  3. 实现 instanceof 关键字
  4. 实现 const 关键字
  5. 实现数据类型判断 typeOf
  6. 实现 JSON.stringify
  7. 实现 JSON.parse
  8. 数组去重、对象数组去重 🔥
  9. 数组与树结构互转 🔥
    1. array2tree
    2. tree2array
  10. 实现一些 Array 方法
    1. 数组 forEach, filter, map, reduce
    2. 扁平化 flatten 方法
    3. 实现 flatMap 函数 (先 map 再 flat) 🔥
    4. 实现数组乱序输出
    5. 将数组扁平化,输出一个升序且不重复的数组
    6. 实现指定长度拆分数组(lodash.chunk 方法)🔥
  11. 实现一些 Object 方法
    1. 实现 Object.create 方法
    2. 实现 Object.assign 方法
    3. 实现 Object.freeze 方法
  12. 实现 JS 函数记忆 memoize 🔥
  13. 实现深拷贝 deepClone 🔥
    1. shallowCopy
    2. deepClone
    3. 深度优先遍历与广度优先遍历,如何实现?🔥
  14. 实现宽松相等 looseEqual
  15. 实现 JS 的继承 ES5/ES6 🔥
  16. 实现防抖函数 debounce 🔥
  17. 实现节流函数 throttle 🔥
  18. 实现函数柯里化 curry 🔥
    1. 柯里化 currying
    2. 偏函数 partial
    3. 反柯里化 uncurrying
    4. 组合函数 compose
  19. 闭包相关问题 🔥
  20. 计时相关问题
    1. 使用闭包实现每隔一秒打印 1,2,3,4
    2. 实现 setTimeout 模拟 setInterval🔥
  21. 解析 URL 参数为对象 🔥
  22. 手写 Promise 实现 🔥
    1. 实现简版 Promise
    2. Promise.all() ES2015
    3. Promise.race() ES2015
    4. Promise.prototype.finally() ES2018
    5. Promise.allSettled() ES2020
    6. Promise.any() ES2021
    7. Promise.try() Stage 1
    8. pAny, pTry, pMap, pLimit 等
  23. N 道 Promise 面试题一次爽到底
  24. 实现 sleep 方法
  25. 实现函数 promisify
  26. 封装 ajax 请求 🔥
  27. 实现 jsonp 跨域 🔥
  28. 实现请求控制 (超时,取消,重试,并发)🔥
    1. 超时取消
    2. 手动取消
    3. 失败重试
    4. 并发控制
  29. 手写 async/await 的实现 🔥
    1. 基于 generator 实现
  30. 实现懒加载 🔥
    1. 实现图片懒加载 by scroll
    2. 实现图片懒加载 by IntersectionObserver
    3. 实现 iframe 懒加载
  31. 实现观察者模式 Observer 🔥
  32. 实现发布订阅模式 EventEmitter(事件总线)🔥
  33. 字符格式化(千分位等)
    1. 实现数字千分位分隔
    2. 手机号按 3-4-4 格式化
    3. 实现字符串的 repeat 方法
  34. 实现简版模板引擎
  35. 实现 add 方法 🔥
    1. 实现 add(1,2,3) 与 add(1)(2)(3) 结果相同
    2. 实现无限累加 sum 函数
    3. 实现大数加法
    4. 实现一个异步的 sum/add
    5. 如何控制 add 异步请求的并发次数
  36. 代码分析题(LazyMan) 🔥
    1. 满足条件 a == 1 && a == 2 && a == 3
    2. 实现 (5).add(3).minus(2) 功能
    3. 实现 LazyMan('Tony').eat('lunch').sleepFirst(5)
  37. 对字符串进行压缩编码 🔥
  38. 实现一个 once 函数,记忆返回结果只执行一次 🔥
  39. 实现 LRU Cache 算法 🔥
  40. 实现斐波那契数列 fibonacci 🔥
  41. 循环打印红黄绿灯 🔥
  42. 实现管理本地缓存过期的方法 🔥
  43. 写一个全排列、全组合的函数 🔥
  44. 查找字符串中出现最多的字符和个数

参考