Skip to content

JavaScript

第一梯队(极高频)

这些基本每个公司都可能会问,别去赌不考的概率

  1. 什么是 JavaScript 事件循环(Event Loop)?宏任务和微任务执行顺序是怎样的?
  2. Promise 的状态有哪些?状态如何变化?
  3. Promise.then 返回值规则是什么?(返回普通值 / Promise / 抛异常)
  4. async / await 和 Promise 的关系是什么?
  5. JavaScript 有哪些数据类型?
  6. 如何判断数据类型?(typeof / instanceof / Object.prototype.toString)他们之间的区别
  7. 原型链是什么?JavaScript 的继承是如何实现的?
  8. 闭包是什么?有哪些应用场景?可能产生什么问题?
  9. var / let / const 的区别是什么?
  10. 箭头函数和普通函数的区别是什么?

第二梯队(高频)

这些也是大厂常问

  1. JavaScript 为什么是单线程?如何实现异步编程?
  2. 宏任务和微任务分别有哪些?
  3. Promise.all / Promise.race / Promise.allSettled 的区别是什么?
  4. 事件循环相关代码输出题(Promise + setTimeout)
  5. new 一个构造函数时内部发生了什么?
  6. call、apply、bind 的区别是什么?
  7. this 的指向规则是什么?
  8. 深拷贝有哪些实现方式?
  9. 垃圾回收机制是什么?新生代和老生代如何工作?
  10. 栈和堆的区别是什么?

第三梯队(中高频)

  1. JavaScript 数组有哪些常用方法?
  2. 哪些数组方法会改变原数组?
  3. for...in 和 for...of 的区别是什么?
  4. map 和 forEach 的区别是什么?
  5. reduce 的使用场景是什么?
  6. 数组去重有哪些方法?
  7. 数组扁平化如何实现?
  8. 如何判断一个对象是空对象?
  9. Object 和其他数据类型的本质区别是什么?
  10. Object.defineProperty 和 Proxy 的区别是什么?

第四梯队(中频)

  1. JavaScript 模块化机制是什么?ESM 如何运行?
  2. JS 模块导入时会不会执行 IIFE?
  3. ES6 有哪些新特性?
  4. class 和 function 构造函数的区别是什么?
  5. WeakMap 和 Map 的区别是什么?
  6. WeakMap 的应用场景有哪些?
  7. typeof null 为什么是 object?
  8. 为什么不可迭代对象不能用 for...of?

代码输出 / 场景题

  1. 作用域链和变量提升相关代码输出题
  2. async / await / Promise / setTimeout 执行顺序输出题
  3. class 继承代码输出题
  4. toSorted 和 sort 的代码输出结果

JS 手写题高频

  1. 手写 防抖(debounce)函数
  2. 手写 节流(throttle)函数
  3. 手写 数组 map 方法
  4. 手写 深拷贝函数
  5. 手写 EventEmitter(发布订阅模式)
  6. 手写 Promise 简易实现
  7. 手写 数组扁平化
  8. 手写 数组去重
  9. 手写 LRU 缓存
  10. 手写 Proxy 代理对象

JS 场景 / 机制类

  1. setTimeout(1000) 一定是 1000ms 吗?为什么?跟 RAF 的对比
  2. 定时器不准确的原因是什么?
  3. 为什么 Promise 可以解决回调地狱?
  4. Promise 链式调用是如何实现的?
  5. 为什么会出现内存泄漏?JS 中有哪些情况会造成内存泄漏?