2022/7/27

一面

  1. 自我介绍
  2. 介绍项目,问项目难点
  3. 问实习经历,实习期间有没有什么收获
  4. JS中有哪些数据类型

    数据类型共有八种 基本数据类型:undefined、null、string、number、boolean、bigint、symbol 引用数据类型:Object

  5. 判断数据类型的方法

    一共有四种

    1. typeof用于判断基本数据类型,返回值为undefined、number、boolean、string、bigint、symbol、function、object;无法判断null、array、object因为它们都返回object
    2. instanceof用于判断构造函数的prototype是否存在于该实例对象的原型链上,能够判断引用数据类型
    3. constructor可以利用对象原型上的constructor属性判断对象类型,原理object.constructor === objcet.proto.constructor 指向该实例的构造函数;不能检测null和undefined
    4. object.prototype.toString.call()返回字符串’[object 被检测实例的所属类]’ ,可用于判断类型
  6. 怎么判断symbol,symbol使用场景有哪些,平时使用过吗

  7. null和undefined有什么区别
  8. 介绍一下对闭包的理解 !!!

    MDN:闭包是一个函数以及其捆绑的词法环境的引用组合 红宝书:闭包是指有权访问另一个函数作用域中的变量的函数 你不知道的JavaScript:当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行

  9. 闭包有哪些可应用的场景

    1. 能够访问函数定义时所在的词法作用域(阻止其被回收)
    2. 私有化变量
    3. 创建模块
    4. 模拟块级作用域
  10. 节流和防抖的区别

    节流、防抖都是为了控制某个事件的触发次数,减少触发频率,来提高性能和避免资源浪费 节流是事件频繁触发时,在n秒内只执行一次(不管n秒内触发多少次) 应用场景:鼠标滚动,轮播图 防抖是事件频繁触发后的n秒内只会执行一次,如果在n秒内事件再次触发则重新计时 应用场景:等待用户输入完后发送请求

  11. 闭包可能会造成的问题,怎么避免这些问题

    闭包会导致函数的自由变量一直保存在内存中,不会被垃圾回收机制清除,过多的闭包可能会造成内存泄漏

  12. 垃圾回收机制以及回收策略

  13. JS中有哪些异步的方法

    callback:事件回调、setTimeout/setInterval中的回调、Ajax请求、Node.js的API Promise Generator async/await

  14. 介绍一下promise,为什么叫promise

    promise是一种处理异步操作的方式,能够避免陷入回调地狱。 promise本意是承诺,在程序中表示我承诺等异步代码执行结束我会给你一个结果,你可以对这个结果进行处理。

  15. promise有哪些状态,通过什么方式能改变promise状态

  16. promise.race和promise.all的区别

  17. 写题,讲思路

    1. 给定两个对象objA, objB,一个字符串数组filterArray;判断并输出objAobjB是否相等。
    2. 如何判断:除了filterArray中包含的字符串keyobjAobjB中所有的key-value都能匹配(不要求顺序一致),则判定objAobjB相等。
    3. 示例1
    4. 输入:objectA = {'a': 123, 'b': 234, 'c': 345}; objectB = {'a': 123, 'b': '222', 'c': '333'}; filterArray = ['b', 'c'];
    5. 输出:true
    6. 示例2
    7. 输入:objectA = {'a': 123, 'b': 234, 'c': 345}; objectB = {'a': 123, 'b': 234}; filterArray = ['b'];
    8. 输出:false
  18. 反问面试表现,对我学习上有什么建议