面试题

76 阅读4分钟
JS 基础知识
  1. JS 的三大组成部分是什么?
  2. JS 中的变量命名规则和规范是什么?
  3. JS 的基本数据类型有哪些?
  4. JS 中检测数据类型的方法是什么, 根据目前所学, 有多少种返回值分别代表什么意思?
  5. JS 中转换数据类型中转数值有多少种方式?
  6. JS 中转换数据类型中转布尔的时候有多少种数据转换成 false?
  7. JS 中的三个逻辑运算符是什么, 分别表示什么意思?
  8. JS 中前置 ++ 和 后置 ++ 的区别是什么?
JS 条件分支
  1. switch 中是否可以不写 break?
  2. switch 中的 default 是什么意思, 类似于什么? 什么时候执行?
  3. 三元表达式在书写时的注意点是什么?
  4. 三元表达式的优点是什么?
  5. 只有一行代码的 if 分支语句除了能够利用三元表达式优化之外, 还有什么优化的方式? 原理是什么?
JS 循环语句
  1. while 循环和 do while 循环的区别?
  2. 循环嵌套中需要注意什么?
  3. 循环中 break 和 continue 关键字的区别分别是什么?
  4. 利用循环判断一个数字是不是水仙花数的逻辑是什么?
JS 的函数
  1. 函数的参数分几种, 分别是什么意思?
  2. 函数的返回值是什么意思?
  3. 声明式函数和函数表达式有什么区别?
  4. 什么是作用域?
  5. 什么是变量的预解析?
  6. 变量的赋值规则是什么?
JS 的对象和数组数据类型
  1. 如何创建对象数据类型, 如何创建数组数据类型?
  2. 如何遍历对象 和 遍历数组?
  3. 对象的增删改查语法是什么?
  4. 数组的 length 索引 分别是什么意思?
JS 的对象和数组数据类型 二
  1. 手写 冒泡排序?
  2. 手写 选择排序?
  3. 数据类型之间的区别? (存储; 赋值; 比较; 传参)?
数组的常用方法
  • push; pop; unshift; shift;
  • reverse; sort; splice; slice; concat; join; indexOf; lastIndexOf;
  • forEach; map; filter; find; findIndex; every; some; reduce;
字符串的常用方法
  • charAt; charCodeAt; toLowerCase; toUpperCase;
  • substr; substring; slice;
  • concat; split; indexOf; lastIndexOf;
  • trim; trimStart(trimLeft); trimEnd(trimRight);
  • includes; startsWith; endsWith; repalce;
JS 的 BOM
  • 浏览器的滚动事件?
  • 如何获取浏览器的滚动距离? 有几种方式? 区别是什么?
  • 三种本地存储的区别是什么?
JS 的 DOM 操作
  1. 获取页面元素有几种常用方式, 分别是什么意思, 参数是什么, 返回值是什么?
  2. JS 如何操作元素 样式 ?
  3. JS 如何操作元素 类名 ?
  4. JS 如何操作元素 属性 ?
  5. JS 操作节点有哪些方法 ? (创建节点, 删除节点, 插入节点 等)?
  6. 获取节点的方式(获取子级/兄弟级/父级)?
  7. 如何获取一个元素的所有属性节点?
  8. 节点属性中的 nodeType/nodeName/nodeValue 代表什么, 返回什么?
  9. 如何获取元素的非行内样式?
JS 的事件
  1. 事件的传播方式有哪些? 如何区分?
  2. 如何调整为事件捕获?
  3. 绑定事件时, onXXX 的方式有什么问题, 如何解决?
  4. 事件委托的核心是什么? 好处是什么?
  5. 函数的 this 指向是由什么决定的?
  6. 一个函数在 (全局/对象内/定时器内/事件函数内/自执行函数中) 这些场景中打印 this 分别会指向什么?
  7. 如何修改一个函数的 this 指向, 这些方法有什么区别?
正则
  1. 正则的元字符有哪些?
  2. 正则的方法有哪些?
  3. 正则的标识符有哪些?
  4. 正则的重复元字符是什么?
  5. 正则的两大特性是什么?
  6. 字符串的方法中有哪些可以与正则连用?
ES6
  1. let/const/var 三者的区别是什么?
  2. 箭头函数有哪些简写方式以及与普通函数的区别?
  3. 解构赋值有哪些注意点?
  4. 展开运算符有什么使用场景?
  5. Map 与 Set 有什么共同点, 如果想获取这两个数据结构的长度需要使用什么属性?
  6. 对象的简写语法是什么?
  7. 描述一下你了解到的 ES6 模块化语法
    • 什么是模块化开发?
    • 模块化开发的前置要求是什么?
    • 导入导出的语法是什么?有什么要求?
面向对象
  1. 创建对象的方式有哪些?
  2. 构造函数的注意事项?
  3. 什么是实例化? 什么是实例化对象?
  4. 原型是什么, 如何能够获取到?
  5. 原型链是什么?
  6. 判断数据类型有哪些方法?
  7. ES5 继承的方式有哪些?
  8. ES6 如何继承?

JS 高阶

  1. 说一下你了解的闭包(如何创建 + 好处 + 弊端)?
  2. 沙箱模式利用了什么实现的?
  3. 函数调用过程中发生了什么事?
  4. 数据劫持中有哪些配置项, 有什么注意点?

手写题

  1. 冒泡排序
  2. 选择排序
  3. 拖拽
  4. 深拷贝 (深浅拷贝)
  5. 防抖与节流
  6. 函数的柯里化