笔试面试储备知识点

  1. XSS 跨站脚本攻击 && CSRF 跨站请求伪造
  2. 树的遍历(递归算法和特点)
    1. 前序遍历
    2. 中序遍历
    3. 后序遍历
  3. 事件代理和委托
  4. cookie 设置
  5. Web Storage(sessionStorage and localStorage)
  6. canvas
  7. 查找算法及时间复杂度
  8. 排序算法及时间复杂度
  9. js正则(多行匹配下$ ^ 匹配的是一行,不是整个文本)
  10. js基本类型和引用类型,函数参数传递(按值传递),变量复制;
  11. typeof 和 instanceof
    1. instanceof 可以用来检测对象是否为 Object、Array、RegExp
    2. 注意 instanceof操作符检测类型是 constructor,而typeof检测的是 字符串;
  12. 执行环境(execution context)和 作用域
    1. 每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中。虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。(变量和函数提升有关)
    2. 当代码在一个环境中执行时,会创建变量对象的一个作用域链(scope chain)。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。
    3. 使用with语句延长作用域链.
    4. 全局执行环境和函数执行环境
  13. ES5没有块级作用域,只有函数作用域;
  14. 垃圾收集
    • 自动的垃圾收集机制
    • 标记清除
      • 是目前主流的垃圾收集算法,这种算法的思想是给当前不使用的值加上标记,然后再回收其内存。
      • 当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”。而当变量离开环境时,则将其标记为“离开环境”。
      • 垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记。然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后再被加上标记的变量将被视为准备删除的变量
    • 引用计数
      • 跟踪记录每个值被引用的次数。当声明了一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数就是 1。如果同一个值又被赋给另一个变量,则该值的引用次数加 1。相反,如果包含对这个值引用的变量又取得了另外一个值,则这个值的引用次数减 1。当这个值的引用次数变成 0 时,则说明没有办法再访问这个值了,因而就可以将其占用的内存空间回收回来。
      • 存在循环引用问题
  15. 内存限制问题,手动解除引用
  16. DOM操作:元素的方法
  17. 字符串、正则、数组的操作方法