一面
- 自我介绍
- 介绍项目,问项目难点
- 问实习经历,实习期间有没有什么收获
JS中有哪些数据类型
数据类型共有八种 基本数据类型:undefined、null、string、number、boolean、bigint、symbol 引用数据类型:Object
判断数据类型的方法
一共有四种
- typeof用于判断基本数据类型,返回值为undefined、number、boolean、string、bigint、symbol、function、object;无法判断null、array、object因为它们都返回object
- instanceof用于判断构造函数的prototype是否存在于该实例对象的原型链上,能够判断引用数据类型
- constructor可以利用对象原型上的constructor属性判断对象类型,原理object.constructor === objcet.proto.constructor 指向该实例的构造函数;不能检测null和undefined
- object.prototype.toString.call()返回字符串’[object 被检测实例的所属类]’ ,可用于判断类型
怎么判断symbol,symbol使用场景有哪些,平时使用过吗
- null和undefined有什么区别
介绍一下对闭包的理解 !!!
MDN:闭包是一个函数以及其捆绑的词法环境的引用组合 红宝书:闭包是指有权访问另一个函数作用域中的变量的函数 你不知道的JavaScript:当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行
闭包有哪些可应用的场景
- 能够访问函数定义时所在的词法作用域(阻止其被回收)
- 私有化变量
- 创建模块
- 模拟块级作用域
节流和防抖的区别
节流、防抖都是为了控制某个事件的触发次数,减少触发频率,来提高性能和避免资源浪费 节流是事件频繁触发时,在n秒内只执行一次(不管n秒内触发多少次) 应用场景:鼠标滚动,轮播图 防抖是事件频繁触发后的n秒内只会执行一次,如果在n秒内事件再次触发则重新计时 应用场景:等待用户输入完后发送请求
闭包可能会造成的问题,怎么避免这些问题
闭包会导致函数的自由变量一直保存在内存中,不会被垃圾回收机制清除,过多的闭包可能会造成内存泄漏
垃圾回收机制以及回收策略
JS中有哪些异步的方法
callback:事件回调、setTimeout/setInterval中的回调、Ajax请求、Node.js的API Promise Generator async/await
介绍一下promise,为什么叫promise
promise是一种处理异步操作的方式,能够避免陷入回调地狱。 promise本意是承诺,在程序中表示我承诺等异步代码执行结束我会给你一个结果,你可以对这个结果进行处理。
promise有哪些状态,通过什么方式能改变promise状态
promise.race和promise.all的区别
写题,讲思路
给定两个对象objA, objB,一个字符串数组filterArray;判断并输出objA和objB是否相等。
如何判断:除了filterArray中包含的字符串key,objA和objB中所有的key-value都能匹配(不要求顺序一致),则判定objA和objB相等。
示例1:
输入:objectA = {'a': 123, 'b': 234, 'c': 345}; objectB = {'a': 123, 'b': '222', 'c': '333'}; filterArray = ['b', 'c'];
输出:true
示例2:
输入:objectA = {'a': 123, 'b': 234, 'c': 345}; objectB = {'a': 123, 'b': 234}; filterArray = ['b'];
输出:false
反问面试表现,对我学习上有什么建议