前端面试手写代码
文章平均质量分 81
程序员既明
这个作者很懒,什么都没留下…
展开
-
面试官:用“尾递归”优化斐波那契函数
1 前言编程题:输入一个整数n,输出斐波那契数列的第n项有些面试官喜欢问这道题。可能你觉得这太简单了,用递归或递推一下子就实现了。正当你信心满满用了两种方式实现的时候…面试官:现在请用“尾递归”优化你的递归实现,用“ES6解构赋值”优化你的递推实现…这时候如果你的基本功不扎实,可能你就懵了。就是这么简单的一道题,包含着相当多的JS知识点,尤其是它的优化过程可以看出你的基本功扎不扎实,所以有些面试官喜欢问这道题。下面我们来看递归和递推这两种实现以及它们各自的优化过程2 递归和尾递归2.原创 2021-11-04 10:41:22 · 487 阅读 · 0 评论 -
面试官:能用JS写一个发布订阅模式吗?
什么是发布订阅模式?能手写实现一下吗?它和观察者模式有区别吗?…1 场景引入我们先来看这么一个场景:假设现在有一个社交平台,平台上有一个大V叫NamiNami很牛,多才多艺,目前她有2个技能:会写歌、会拍视频她会把这些作品发布到平台上。关注她的粉丝就会接收到这些内容现在他已经有3个粉丝了,分别是:Luffy、Zoro、Sanji每次只要Nami一发布作品,3个粉丝的账号上收到的消息就会更新现在用代码来表示:const luffy = { update: function (songs,原创 2021-11-03 00:06:25 · 202 阅读 · 0 评论 -
面试官:JavaScript如何实现数组拍平(扁平化)方法?
1 什么叫数组拍平?概念很简单,意思是将一个“多维”数组降维,比如:// 原数组是一个“三维”数组const array = [1, 2, [3, 4, [5, 6], 7], 8, 9]// 可以降成二维newArray1 = [1, 2, 3, 4, [5, 6], 7, 8, 9]// 也可以降成一维newArray2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]数组拍平也称数组扁平化、数组降维。2 JS标准库中的数组拍平方法JavaScript标准库中已经实现原创 2021-11-01 21:05:48 · 1749 阅读 · 0 评论 -
前端面试手写代码——call、apply、bind
1 call、apply、bind 用法及对比1.1 Function.prototype三者都是Function原型上的方法,所有函数都能调用它们Function.prototype.callFunction.prototype.applyFunction.prototype.bind1.2 语法fn代表一个函数fn.call(thisArg, arg1, arg2, ...) // 接收参数列表fn.apply(thisArg, argsArray) // apply 接收数组参数原创 2021-10-27 11:44:53 · 168 阅读 · 0 评论 -
前端面试手写代码——模拟实现new运算符
⚠ 预备知识:了解原型和原型链了解this绑定1 new 运算符简介MDN文档:new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。class Person { constructor(name) { this.name = name; }}// 创建自定义对象类型的实例const person = new Person('小明')// 创建具有构造函数的内置对象的实例const date = new Date()ne原创 2021-10-21 12:56:26 · 188 阅读 · 0 评论 -
前端面试手写代码——JS函数柯里化
1 什么是函数柯里化2 柯里化的作用和特点2.1 参数复用2.2 提前返回2.3 延迟执行3 封装通用柯里化工具函数4 总结和补充原创 2021-10-20 16:31:43 · 419 阅读 · 0 评论 -
前端面试手写代码——JS数组去重
JS数组去重代码总结原创 2021-10-19 10:12:23 · 186 阅读 · 0 评论