站点工具

用户工具


前端代码题

闭包

  1. 输出什么? 如果想输出0、1、2、3、4、5怎么解决,至少两种方案
    for(var i=0; i<6; i++) {
      setTimeout(() => {
     console.log(i)
      })
    }

异步、Promise输出

  1. 输出什么

    async function async1 (){
    console.log("async1")
    await async2()
    console.log("async1 end")
    }
    console.log("scripts start")
    async1()
    async function async2() {
     await console.log("async2")
    }
    new Promise((resolve,reject)=>{
      console.log("promise1")
      resolve()
    }).then(()=>{
      console.log("promise2")
    })
    setTimeout(()=>{
      console.log("setTimeout")
    })
  2. 输出什么

    setTimeout(()=> console.log(1))
    new Promise(resolve => {
      resolve()
      console.log(2)
    }).then(_ => {
      console.log(3)
      Promise.resolve().then(_ => {
     console.log(4)
      }).then(_ => {
     Promise.resolve().then(_ => {
       console.log(5)
     })
      })
    })
    console.log(6)

this、作用域、声明前置、隐式转换

  1. 以下代码输出

    var a = function(){ this.b = 3 }
    var c = new a()
    a.prototype.b = 10
    var b = 7
    a()
    console.log(b)//3
    console.log(c.b)//3
  2. 代码输出什么

    function Foo() {
      getName = function () {
     console.log(1);
      }
    }
    var getName = function () {
      console.log(4);
    };
    function getName() {
      console.log(5);
    }
    Foo.getName = function () {
      console.log(2)
    }
    Foo.prototype.getName = function () {
      console.log(3);
    }
    Foo.getName()     
    getName()  	    
    new Foo.getName()    
  3. 隐式转换
    if ([]) console.log(1);
    if ([].length) console.log(2);
    if ([] == 0) console.log(3);
    if ({} === {}) console.log(4);

算法

  1. 给两个数组[1,2,3],[2,1,3,4],如果A包含于B返回1,B含于A返回2,其他返回0
  2. 无重复的字符串字串
  3. 合并两个有序链表
  4. 最长回文子串
  5. 最长无重复字符子串
  6. 搜索二叉树,找出第k大
  7. 很长的字符串返回出现次数最多的字母以及相应次数
  8. 多叉树的最大深度
  9. js实现树的深度优先搜索、广度优先搜索
  10. 返回前k个最小的数字组成的数组,保持相对顺序
  11. 给定一棵二元查找树,实现左右子树反转 用栈怎么实现

手写

  1. 手写一个Promise.all (3)
  2. 手写Promise,包含简单的逻辑即可
  3. 用reduce实现map
  4. 手写一个repeat函数,要求每隔3秒alert一次helloWorld,总共输出4次
    function repeat(func, times, wait){
      ...
    }
    var rp = repeat(alert, 4, 3)
    rp('helloWorld')
  5. 字符串转化为数字
    // 'A' => 1
    // 'B' => 2
    // 'AA' => 27
  6. 手写观察者(3), 带once
  7. 代码题:写一个函数打印杨辉三角前n行
    [
     [1],
     [1,1],
     [1,2,1],
     [1,3,3,1],
     [1,4,6,4,1]
    ]
  8. 用call/apply实现bind
  9. 实现大数相加
  10. 手写防抖节流
  11. 实现并发控制
  12. 写一个instanceof的实现
  13. 字符串 转换为对象。 比如 a.b.c,
    {
    a: {
        b: {
            c: null
        }
    }
    }
若愚 · 2022/01/25 17:02 · 前端专刷_代码题.1643101332.txt.gz