![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
前端面试区
拾玥花开
一个奋斗者
展开
-
记录Array的fill方法
今天在刷算法的时候,看解析,发现了Array(n).fill(‘a’)这样的用法。这属于ES6的一种用法。Array(n)很明显就是定义一个数组,里面有n个元素。fill()方法将一个数组的所有元素从开始索引填充到具有静态值的结束索引,语法为:arr.fill(value)arr.fill(value, start)arr.fill(value, start, end)Array(n).fill(‘a’)就是声明一个值全为a 的数组。...原创 2021-04-14 20:23:45 · 394 阅读 · 0 评论 -
剑指offer——跳台阶扩展问题
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。示例1输入3返回值4假设跳 n 级台阶的跳法数量是 f(n)个。那么根据题意,青蛙可能从 n-1 级直接跳上来,也可能从 n-2 级直接跳上来,依次类推:f(n) = f(n - 1) + f(n - 2) + … + f(1)同理:f(n - 1) = f(n - 2) + f(n - 3) + … + f(1)所以,将公式 1 中的f(n - 2) + f(n - 3原创 2021-03-09 13:09:17 · 149 阅读 · 0 评论 -
剑指offer——青蛙跳台阶(斐波拉数列解法)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输入1返回值1示例2输入4返回值5这题其实就是在求斐波那契数列。理解起来也很简单。假设跳到 n 级台阶有 f(n)种方法。根据题目,青蛙在跳上 n 级时有 2 种方法:从 n - 1 级跳 1 级上来从 n - 2 级跳 2 级上来青蛙跳到 n- 1 级有 f(n-1)种方法,跳到 n- 2 级有 f(n-2)种方法。所以 f(n) = f(n -原创 2021-03-09 11:43:04 · 121 阅读 · 0 评论 -
剑指offer——斐波拉数列(备忘录算法)
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n\leq 39n≤39输入4输出3看到斐波拉数列即可得出:根据数学定义:f(n) = f(n - 1) + f(n - 2),代码可以实现为递归形式。但是若我们采用传统的递归,则会使得时间复杂度为O(2^n),运算的时间会非常大,在牛客中就会超时。传统算法://超时 <script> function Fibonacci(n){原创 2021-03-09 11:17:57 · 546 阅读 · 0 评论 -
通过几个实例理解 JS回调函数 callback
基本理解一个概念回调函数回头再调用函数,等主干事情干完了,再回头干分支上的事情。官方定义A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.实例1//定义主函数,回调函数作为参数function A(callback) { callback(); console.lo转载 2021-03-06 14:58:50 · 309 阅读 · 0 评论 -
前端中的广播通信——BroadcastChannel
我们经常会用postMessage来实现页面间的通信,但这种方式更像是点对点的通信。但是当我们使用广播通信时我们只要在一个页面发送信息,其他所有的页面都能接收到这条信息,但是前提是同源页面。下面的方式就可以创建一个标识为kevin的频道:const bc = new BroadcastChannel('kevin');各个页面可以通过onmessage来监听被广播的消息:bc.onmessage = function (e) { const data = e.data; const原创 2021-03-06 10:20:50 · 2487 阅读 · 0 评论 -
剑指offer——用两个栈实现队列(js)
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。原题链接:用两个栈实现队列该题要求我们使用两个栈来实现一个队列,我们都知道栈的特性是后进先出,而队列的特性是先进先出。所以我用一个栈来表示进栈另外一个栈表示出栈。入上图所示现有元素1,2,3进instack栈,在出栈的时候,instack出栈的顺序为3,2,1。然后将instack出战的元素,依次放入outstack中,则当outstack栈出栈的时候元素的出栈顺序为1,2,3。所以整个元素进栈的时候是1原创 2021-03-05 11:27:01 · 201 阅读 · 1 评论 -
剑指offer——重建二叉树
题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。输入:[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]输出:{1,2,5,3,4,6,7}我们先看一个比较简单的二叉树:该二叉树的前序遍历是:12453,中序遍历是42513。我们知道前序遍历的第一个元素就是根节点。而在中序遍历中位于根原创 2021-03-05 10:53:24 · 138 阅读 · 1 评论 -
剑指offer——从头到尾打印链表
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。输入:{67,0,24,58}输出:[58,24,0,67]本题的解题思想是将链表转换为数组,然后使用数组中的reverse方法或者使用pop方法将末尾的元素依次放入另外一个数组中,然后返回数组即可。/*function ListNode(x){ this.val = x; this.next = null;}*/function printListFromTailToHead(head){ /原创 2021-03-04 14:36:07 · 124 阅读 · 1 评论 -
js实现链表
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Doc原创 2021-03-04 10:04:29 · 92 阅读 · 2 评论 -
剑指offer——替换空格(js)
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。本题有很多种解法,在js代码中很简单,直接使用字符串中的替换replace方法即可,但是要注意,replace() 是替换与正则表达式匹配的子串所以我们在替换的时候,要写出匹配字符串中空格的正则表达式。/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s strin原创 2021-03-02 11:19:41 · 198 阅读 · 0 评论 -
剑指offer题库——二维数组的查找(JS代码)
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例1输入7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]输出true方法一:直接法:遍历数组中的所有元素,找到是否存在。function Find(target, array){ // write code here co原创 2021-03-01 16:31:16 · 142 阅读 · 0 评论 -
一线大厂JS面试之异步进阶版
文章目录一线大厂JS面试之异步进阶版异步和同步的区别event loop(事件循环/事件轮回)PromisePromise的三种状态async和await宏任务和微任务一线大厂JS面试之异步进阶版异步和同步的区别我们在写传统程序时,程序运行时同步进行的,(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。这是因为JS是单线程语言,只能同时做一件事。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。正是因为如此,异步有着不会阻塞代码运行的原创 2020-09-28 20:56:50 · 173 阅读 · 0 评论 -
js面试必考之作用域和闭包
js面试必考之作用域和闭包作用域介绍先来看下作用域,看张图片: 自由变量 一个变量在当前作用域没有定义,但被使用了 向上级作用域一层一层的去寻找,直到找到为止 如果到全局作用域还没找到,则报错xxx is not defined这里面有三个函数,每个函数中都定义这一个变量,a1它的作用域范围是最大红色方框,a2的作用域为中间的方框,a3的作用域为最里面的方框,而在fn3函数 return语句 返回a+a1+a2+a3是,a ,a1,a2,这三个变量在fn3中没有,那么原创 2020-09-25 12:28:07 · 266 阅读 · 0 评论 -
js面试一定会出的原型和原型链
js面试一定会出的原型和原型链我们先来看一段代码,后面的内容都会围绕着出现的代码来讲 class People{ constructor(name){ this.name=name; } eat(){ console.log(`${this.name} eat something`); } } class Studen原创 2020-09-22 19:54:29 · 96 阅读 · 0 评论 -
JS面试第一站变量类型和计算
文章目录JS面试第一站变量类型和计算值类型和引用类型的区别typeof手写深拷贝==和===的区别turly变量和falsely变量JS面试第一站变量类型和计算值类型和引用类型的区别看得懂代码就证明你会了 // 值类型和引用类型 //值类型 存放在栈中 let a1=110; let b1=a1; a1=200; console.log(b1);//输出110 //值类型由哪些:undefined Boolean原创 2020-09-22 16:37:11 · 125 阅读 · 0 评论