js面试题汇总
# JS 面试题
遍历对象的方法,区别,遍历数组的方法,哪个快
for of 和 for in 的区别,怎么让 for of 可以遍历一个对象?
Object.keys() 和 for in 区别
JavaScript 字符串的常用方法有哪些?
== 和 ===区别,分别在什么情况使用
如何判断一个元素是否在可视区域中?
sort 的底层实现机制,看过源码么?
为什么在 js 中 0.1 + 0.2 !== 0.3, 为什么会有误差,如何解决,名词解释什么叫定点和浮点,
在不知道浮点数位数时应该怎样判断两个浮点数之和与第三数是否相等?
举例一下 Map 和 object 的区别,如果需要一个字典的需求,都是 key: value 的形式,那应该怎么选择这两个呢
什么是作用域?什么是作用域链?函数执行上下文包含了哪些内容?
定时器为什么不准
{} + [] 结果是什么
页面有一个 iframe,将主页面的一个数组传到 iframe 中再用 instanceof 判断数组是否可行
阻塞、非阻塞和异步同步是对应的吗?一样的吗?
js 的引入方式有哪些?
# js 异步
promise、async await、Generator 的区别
Promise 的用法?了解 allSettled 方法么,怎么实现?
promise 哪些方法是原型上的,哪些方法是实例上的
promise 能否用 try catch,来 catch 到 promise 内部的错误
Promise 有哪些潜在的问题?
promise 先 catch 再 then 在 catch 里返回内容 then 里回调函数能不能接受到
promise 如何满足多个异步进程的同步顺序
promise 错误如何捕获
promise.race 和 promise.all 的区别
catch 之后的 then 还会执行吗?
如何限制 Promise 请求并发数
如何顺序执行 10 个异步任务
async await 如何实现的;怎么去捕获 await、async 中的错误,拓展一下 async 方案存在的缺陷
你是怎么理解 ES6 中 Promise 的?使用场景?
异步编程中,如何实现三个请求依次返回
js 实现最多发送三个并发请求,后续有多个请求在等待发送
一次性可能发 10 个请求,但是请求池控制一次性只能处理三个,请求池内的请求一个处理完后推进下一个请求
10 个网络请求全部完成之后再执行一个操作怎么实现?除了 Promise all 你还知道什么方法?
一个异步请求,如果 5s 内有返回就正常返回,如果 5s 内没返回就输出'超时',如何用 promise 实现?
js 能加锁吗
封装 fetchApi, 要求超时报错的同时,取消执行的 promise,而不是继续执行
# ES6
ES6 有什么新特性?ES7 有什么新特性?
ES6 数组、对象、函数 新增了哪些扩展?
什么是暂时性死区,什么是变量提升
ES6 里面,let,const,var 的区别,const 声明了数组,还能 push 元素吗,为什么?
let const var 区别,怎么手写一个函数实现 const 的功能
let、const 与栈、堆之间的关系,栈、堆哪个访问速度更快,为什么?
const 声明生成对象的时候,如何使其不可更改
const 定义的 Array 中间元素能否被修改? 如果可以, 那 const 修饰对象的意义是?
你是怎么理解 ES6 新增 Set、Map 两种数据结构的?set 为什么不可重复原理
Map 和 WeakMap 有什么区别,WeakMap 解决了什么问题?
Map 和 Set 的区别,Map 和 Object 的区别
你是怎么理解 ES6 中 Generator 的?使用场景?
你是怎么理解 ES6 中 Proxy 的?使用场景? 说说 Reflect;
你是怎么理解 ES6 中 Module 的?使用场景?
你是怎么理解 ES6 中 Decorator 的?使用场景?
ES6 symbol 如何使用以及使用场景;
说说 Iterator 的使用;哪些是可迭代的
Java 的 class 和 JavaScript 的 class 有什么区别
object ,Map 的性能问题。object 和 Map 在具体实现去重上有什么不同
ES6 的 Set 内部实现
es6 class 怎么设置原型、静态、实例方法
你用过静态方法,静态属性,私有变量么?
# js 数据类型
说说 JavaScript 中的数据类型?存储上的差别?
判断变量数据类型的几种方法
谈谈 JavaScript 中的类型转换机制
typeof 与 instanceof 区别,null instanceof Object?instanceof 的限制,typeof 和 instanceof 判断的原理
typeof String(1) 和 type new String(1) 返回值
说说 Javascript 数字精度丢失的问题,如何解决?
js 大数的处理
null 和 undefined 有什么区别
如何判断两个变量相等(对象特殊处理)
number 类型表示整数的最大范围
String(1)和 new String(1) 为啥都能调.substr()
# js 对象
- 讲对象循环引用分为哪几种情况,判断一个对象是否是循环引用对象
Object.freeze()了解过么
Object.is 的实现原理
Object.freeze 和 Object.seal 的区别
原型对象的 constructor 指向谁
怎么判断一个元素有没有被引用
创建一个原型链只有 name 属性的对象(除了 name 属性其他属性都没有)
如何判断对象为空
# js 数组
判断 Array 类型有几种方法
怎么区别 array 和 object
类数组怎么转换为数组,说说你知道的所有方法
你知道哪些 JS 数组的 API
splice 和 slice 区别
清空一个数组的方法,越多越好
filter 、map 区别
数组中的方法如何实现 break
arguments 类数组,如何遍历类数组
# js 函数
箭头函数和普通函数的区别?箭头函数可以作为构造函数吗
普通函数和构造函数的区别
什么是立即执行函数,有什么作用
函数式编程与面向对象的区别,优缺点
Javascript 中如何实现函数缓存?函数缓存有哪些应用场景?
什么是防抖和节流?有什么区别?如何实现?带立即执行参数的消抖?
讲一下函数作用域和块级作用域
class 组件与函数式组件的区别,class 组件存在问题,函数组件的问题
class 组件和函数组件 diff、渲染、挂载过程差异
class 组件随着项目变大生命周期逻辑过于耦合、庞大,函数组件可以更细粒
解释一下函数调用栈和作用域链的关系
如何用柯里化拆分副作用
简述 Javascript 的柯里化与逆柯里化
setTimeout 第二个参数为 0 时和匿名自执行函数区别
# js 事件
- 说一下浏览器中的事件机制。
简述 Javascript 事件冒泡和事件捕获原理
addEventListener 默认是捕获还是冒泡
e.target 和 e.currentTarget 的区别
说一下事件委托,事件模型
说说 DOM 事件流,DOM 事件的绑定的几种方式
window 的 onload 事件和 domcontentloaded 谁先谁后?
浏览器事件有哪些过程?为什么一般在冒泡阶段,而不是在捕获阶段注册监听? addEventListener 参数分别是什么?
DOM 上面直接绑定 onclick 事件和监听事件有什么区别(事件绑定与事件监听的区别)
# js DOM
获取页面所有图片的 src
打印 dom 节点下所有文本
DOM 怎么添加事件
# js 高级(追问)
# js 事件循环
事件循环机制,node 和浏览器的事件循环机制区别
nodejs 中的 EventLoop 是如何什么样的。setImmediate 会在哪个阶段执行,setImmediate 和 setTimeout 谁执行的比较快,为什么
你刚刚说到 js 是单线程,javascript 为什么是单线程?那线程跟进程有什么区别?
浏览器新开了一个页面,有几个线程?
点击事件是宏任务还是微任务
正在执行宏任务时插入进来一个微任务,请问这个微任务的执行时机
# js 闭包
说说闭包?闭包有什么作用?优缺点?对页面会有什么影响,什么时候闭包会消除?
闭包是函数式编程吗?(是)
闭包的作用域
用 ES5 实现私有变量
说一下闭包的本质是什么?会造成哪些问题
除了函数的内部返回一个函数,还有其他的方法产生闭包吗?(有)
为什么内部函数可以访问外部函数
# js 深拷贝和浅拷贝
深拷贝浅拷贝的区别?如何实现一个深拷贝?
lodash 都用哪些东西 get、set 实现原理、深拷贝实现原理
# js this
- bind call apply 区别
bind 有什么用?连续多个 bind,最后 this 指向是什么?
# 作用域和执行上下文
描述一下作用域和作用域链?作用域链是什么时候确定的?函数定义时会确定哪些东西?预编译阶段会发生了什么?描述一下 AST?
说说你对作用域链的理解,函数作用域是在什么时候形成的
怎么理解 JS 静态作用域
如何使其拥有动态作用域的特性
# js 原型原型链
什么是原型,原型链
# js 继承
Es5/es6 继承的区别?
追问: class 的 super 是什么意思
class B 继承 class A 翻译成 es5 应该是什么样子
javascript 里面的继承怎么实现,如何避免原型链上面的对象共享
js 里的多重继承怎么实现
class 定义类和 function 定义类的区别
类的概念、类继承的特点以及实现
# js new
说说 new 操作符具体干了什么?
如何不用 new,实现一个构造器的实例化
# js 垃圾回收机制
简述浏览器的垃圾回收机制
垃圾回收时会阻塞 js 的运行么
标记清除为什么比引用清除好
怎么定位 Node 内存泄露问题?
你刚刚提到的标记清除法有什么缺点?怎么解决?
你刚刚提到的引用计数法有什么缺点吗?
v8 里面的垃圾回收机制是什么?
v8 是怎么解决循环引用的?
写一个循环引用影响垃圾回收机制
垃圾回收机制 栈内存回收、堆内存回收
GC 的两种类型
简述垃圾回收中新生代和老生代的概念
# js 内存
说说 JavaScript 中内存泄漏的几种情况?内存泄漏的解决方案和排查方案?火焰图接触过吗
V8 内存回收策略
js 里堆和栈的区别
# js 动画
说说 requestAnimationFrame 的作用,并实现获取每秒的帧数
requestAnimationFrame 是否会被阻塞,raf 阶段是在 dom 渲染前还是渲染后
关于 JS 动画和 css3 动画的差异性
setTimeout 和 requestAnimationFrame 做动画有区别吗?哪一个更好?为什么?
setTimeout 和 setInterval 的源代码是在哪里实现的?
settimeout 和 settimeinterval 哪个更准确,为什么?延时设为 0ms 会怎样?(最少 4ms)