开个新坑,手摸手解析63道JS手写面试题

简介: 开个新坑,手摸手解析63道JS手写面试题

关注程序员耳东,编程转码真轻松

大家好我是程序员耳东,最近打算新开一个坑——手摸手解析JS手写面试题

为什么要写这个系列

之前搞过JS八股解析系列和HTML&CSS八股解析系列,效果还不错,有很多面试和自学的粉丝都说在面试中遇到了我笔记里面写过的题目,这让我甚是欢喜

但是后来一些粉丝在群里反馈说,面试的时候会遇到一些手写代码的问题,比如说写个防抖节流啊,写个数组去重啊,写个Promise.all啊,而且越是给的工资高的公司,越爱考察这种手写题

为啥呢?

你想想,如果是概念八股文的话,你可以死记硬背,但如果是这种手写代码题,你怎么背?

退一万步,就算你背下来了,面试的时候稍微变个条件加个参数,你还写的出来吗?

所以,我准备开这个新坑,手摸手的解析JS手写面试题,力求通俗易懂,如果看不懂请找我

这个系列跟完之后达到的效果

这个系列其实也算是我为自己而写的一个系列吧,因为我之前面试的时候,经常会遇到白纸或者白板写代码的场景,除过算法题以外最多的就是JS手写题

有的人可能认为这种题目太过八股、平时工作中用不到,但其实这些代码也是对我们程序设计能力的极大锻炼,每一个题目都是一个小的场景抽象,每一段解决代码都是一个解决方案

它们虽然不会在工作中直接用到,但是它们可以锻炼到思维方式,让你写代码更快更好

我期望这个系列跟完之后,可以达到两个效果:

  1. 不怕面试遇到JS手写题,可以应付常见的JS手写面试题
  2. 平时工作写代码更加丝滑

有哪些手写题

ok,废话不多说,我列一下这个系列要解析的手写题目,这里可能并不完整,后面我应该还会增加一些题目进来,力求常见的题目都解析。

  1. 实现防抖(debounce)函数
  2. 实现节流(throttle)函数
  3. 实现深拷贝函数
  4. 实现instanceof函数
  5. 模拟实现new操作符
  6. 实现call函数
  7. 实现apply函数
  8. 实现bind函数
  9. 模拟实现Object.create函数
  10. 实现JS的继承
  11. 实现JSON.stringify
  12. 实现JSON.parse
  13. 实现Promise.resolve方法
  14. 实现Promise.reject方法
  15. 实现Promise.finally方法
  16. 实现Promise.all方法
  17. 实现Promise.allSettled方法
  18. 实现Promise.race方法
  19. 实现简版的Promise
  20. 实现解析URL的Params方法
  21. 实现简版模板引擎
  22. 实现千分位分割
  23. 实现判断电话号码方法
  24. 实现判断邮件方法
  25. 实现判断身份证号方法
  26. 实现数组的map方法
  27. 实现数组的reduce方法
  28. 实现数组的flat(扁平化)
  29. 实现对象扁平化方法
  30. 实现add方法,满足以下要求
  31. 实现sleep方法
  32. 实现方法求两个数组的交集
  33. 实现函数柯里化
  34. 实现Array.isArray方法
  35. 实现双向绑定
  36. 实现对象数组去重
  37. 实现判断数据类型的方法
  38. 基于generator实现async/await
  39. 基于Promise实现Ajax方法
  40. 实现JSONP跨域
  41. 实现发布订阅
  42. 实现观察者模式
  43. 实现Object.freeze方法
  44. 实现异步并发数限制
  45. 实现异步串行和异步并行
  46. 实现Vue的reactive功能
  47. 实现简版图片懒加载
  48. 实现深度对比isEqual方法
  49. 实现getValue和setValue来获取/设置对应path的值
  50. 实现按指定长度拆分数组(lodash.chunk方法)
  51. 实现compose方法
  52. 实现简版redux
  53. 实现const运算符
  54. 实现管理本地缓存过期的方法
  55. 实现ES6的extends运算符功能
  56. 实现setTimeout模拟setInterval方法
  57. 实现lazyMan方法
  58. 实现DomToJson方法
  59. 实现类数组转换为数组方法
  60. 实现列表转换为树结构方法
  61. 实现大数相加方法
  62. 实现JS乱序算法
  63. 实现JS函数记忆

更新节奏

因为东哥自身也是个打工人,公司里面业务也比较繁忙,写笔记的时间一般是牺牲睡眠和假期,但是我尽量保证一周更新一次,还有就是其中一些题目我在想要不要开直播来手写,哈哈

如果跟着一起写的人比较多的话,可以单独搞个群来讨论这些题目

好了,这篇笔记就说到这里,希望大家监督我周更

相关文章
|
2天前
|
JSON 前端开发 JavaScript
【JavaScript技术专栏】JavaScript异步编程:Promise、async/await解析
【4月更文挑战第30天】JavaScript中的异步编程通过Promise和async/await来解决回调地狱问题。Promise代表可能完成或拒绝的异步操作,有pending、fulfilled和rejected三种状态。它支持链式调用和Promise.all()、Promise.race()等方法。async/await是ES8引入的语法糖,允许异步代码以同步风格编写,提高可读性和可维护性。两者结合使用能更高效地处理非阻塞操作。
|
19小时前
|
JavaScript 前端开发 程序员
javascript基础(入门),当上项目经理才知道,推荐程序员面试秘籍
javascript基础(入门),当上项目经理才知道,推荐程序员面试秘籍
|
2天前
|
自然语言处理 JavaScript 前端开发
三个JavaScript面试题
【5月更文挑战第7天】- 闭包是JavaScript函数能记住词法作用域,即使在外部执行。示例:计数器函数`createCounter()`返回访问`count`的匿名函数,每次调用计数递增。 - 事件循环处理异步操作,通过检查任务队列执行回调。示例:`setTimeout`异步任务在3秒后添加到队列,待执行,输出顺序为同步任务1、2,然后异步任务1。 - 箭头函数是ES6简洁的函数定义方式,如`greet = name => `Hello, ${name}!`。它没有自己的`this`,不适用作构造函数。
30 6
|
2天前
|
SQL 缓存 JavaScript
深入解析JavaScript中的模板字符串
深入解析JavaScript中的模板字符串
14 1
|
2天前
|
JavaScript 网络协议 数据处理
Node.js中的Buffer与Stream:深入解析与使用
【4月更文挑战第30天】本文深入解析了Node.js中的Buffer和Stream。Buffer是处理原始数据的全局对象,适用于TCP流和文件I/O,其大小在V8堆外分配。创建Buffer可通过`alloc`和`from`方法,它提供了读写、切片和转换等操作。Stream是处理流式数据的抽象接口,分为可读、可写、双工和转换四种类型,常用于处理大量数据而无需一次性加载到内存。通过监听事件和调用方法,如读取文件的可读流示例,可以实现高效的数据处理。理解和掌握Buffer及Stream能提升Node.js应用的性能。
|
2天前
|
JavaScript 前端开发 开发者
Node.js的包管理和npm工具深度解析
【4月更文挑战第30天】本文深入解析Node.js的包管理和npm工具。包管理促进代码复用和社区协作,包包含元数据描述文件`package.json`和入口文件。npm提供搜索、安装、发布等功能,通过命令行进行操作,如`install`、`search`、`uninstall`。npm支持版本控制、全局安装、脚本定义及私有仓库。理解和熟练运用npm能提升Node.js开发效率。
|
2天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
2天前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
|
2天前
|
JavaScript 大数据 开发者
Node.js的异步I/O模型与事件循环:深度解析
【4月更文挑战第29天】本文深入解析Node.js的异步I/O模型和事件循环机制。Node.js采用单线程与异步I/O,遇到I/O操作时立即返回并继续执行,结果存入回调函数队列。事件循环不断检查并处理I/O事件,通过回调函数通知结果,实现非阻塞和高并发。这种事件驱动编程模型简化了编程,使开发者更专注业务逻辑,为高并发场景提供高效解决方案。
|
2天前
|
存储 JavaScript 前端开发
每日一道javascript面试题(九)函数的参数可以和函数体中的变量重名吗
每日一道javascript面试题(九)函数的参数可以和函数体中的变量重名吗

推荐镜像

更多