关注程序员耳东,编程转码真轻松
大家好我是程序员耳东,最近打算新开一个坑——手摸手解析JS手写面试题
为什么要写这个系列
之前搞过JS八股解析系列和HTML&CSS八股解析系列,效果还不错,有很多面试和自学的粉丝都说在面试中遇到了我笔记里面写过的题目,这让我甚是欢喜
但是后来一些粉丝在群里反馈说,面试的时候会遇到一些手写代码的问题,比如说写个防抖节流啊,写个数组去重啊,写个Promise.all啊,而且越是给的工资高的公司,越爱考察这种手写题
为啥呢?
你想想,如果是概念八股文的话,你可以死记硬背,但如果是这种手写代码题,你怎么背?
退一万步,就算你背下来了,面试的时候稍微变个条件加个参数,你还写的出来吗?
所以,我准备开这个新坑,手摸手的解析JS手写面试题,力求通俗易懂,如果看不懂请找我
这个系列跟完之后达到的效果
这个系列其实也算是我为自己而写的一个系列吧,因为我之前面试的时候,经常会遇到白纸或者白板写代码的场景,除过算法题以外最多的就是JS手写题
有的人可能认为这种题目太过八股、平时工作中用不到,但其实这些代码也是对我们程序设计能力的极大锻炼,每一个题目都是一个小的场景抽象,每一段解决代码都是一个解决方案
它们虽然不会在工作中直接用到,但是它们可以锻炼到思维方式,让你写代码更快更好
我期望这个系列跟完之后,可以达到两个效果:
- 不怕面试遇到JS手写题,可以应付常见的JS手写面试题
- 平时工作写代码更加丝滑
有哪些手写题
ok,废话不多说,我列一下这个系列要解析的手写题目,这里可能并不完整,后面我应该还会增加一些题目进来,力求常见的题目都解析。
- 实现防抖(debounce)函数
- 实现节流(throttle)函数
- 实现深拷贝函数
- 实现instanceof函数
- 模拟实现new操作符
- 实现call函数
- 实现apply函数
- 实现bind函数
- 模拟实现Object.create函数
- 实现JS的继承
- 实现JSON.stringify
- 实现JSON.parse
- 实现Promise.resolve方法
- 实现Promise.reject方法
- 实现Promise.finally方法
- 实现Promise.all方法
- 实现Promise.allSettled方法
- 实现Promise.race方法
- 实现简版的Promise
- 实现解析URL的Params方法
- 实现简版模板引擎
- 实现千分位分割
- 实现判断电话号码方法
- 实现判断邮件方法
- 实现判断身份证号方法
- 实现数组的map方法
- 实现数组的reduce方法
- 实现数组的flat(扁平化)
- 实现对象扁平化方法
- 实现add方法,满足以下要求
- 实现sleep方法
- 实现方法求两个数组的交集
- 实现函数柯里化
- 实现Array.isArray方法
- 实现双向绑定
- 实现对象数组去重
- 实现判断数据类型的方法
- 基于generator实现async/await
- 基于Promise实现Ajax方法
- 实现JSONP跨域
- 实现发布订阅
- 实现观察者模式
- 实现Object.freeze方法
- 实现异步并发数限制
- 实现异步串行和异步并行
- 实现Vue的reactive功能
- 实现简版图片懒加载
- 实现深度对比isEqual方法
- 实现getValue和setValue来获取/设置对应path的值
- 实现按指定长度拆分数组(lodash.chunk方法)
- 实现compose方法
- 实现简版redux
- 实现const运算符
- 实现管理本地缓存过期的方法
- 实现ES6的extends运算符功能
- 实现setTimeout模拟setInterval方法
- 实现lazyMan方法
- 实现DomToJson方法
- 实现类数组转换为数组方法
- 实现列表转换为树结构方法
- 实现大数相加方法
- 实现JS乱序算法
- 实现JS函数记忆
更新节奏
因为东哥自身也是个打工人,公司里面业务也比较繁忙,写笔记的时间一般是牺牲睡眠和假期,但是我尽量保证一周更新一次,还有就是其中一些题目我在想要不要开直播来手写,哈哈
如果跟着一起写的人比较多的话,可以单独搞个群来讨论这些题目
好了,这篇笔记就说到这里,希望大家监督我周更