面试题列表(持续添加中~~~)

纯理论题

  1. JavaScript的数据类型
  2. GET跟POST的区别
  3. 简述 AJAX 及基本步骤
  4. HTTP返回的各种状态表示什么意思
  5. new操作符具体做了什么
  6. null跟undefined的区别
  7. JavaScript的原型及原型链
  8. 请描述一下 cookies,sessionStorage 和 localStorage 的区别?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
    sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
    共同点:
    都是保存在浏览器端,且同源的。
    区别:
    cookie数据始终在同源的http请求中携带(即使不需要),即在浏览器和服务器间来回传递。
    cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
    一般作会话标识。
    存储大小:
    cookie数据大小不能超过4k。
    sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
    有效期:
    cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭
    localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
    sessionStorage 数据在当前浏览器窗口关闭后自动删除。
    作用域:
    cookie 所有的同源窗口都共享
    localStorage 所有的同源窗口都共享
    sessionStorage 仅限当前窗口

书写题

  1. 实现一个函数 clone(),可以对 JavaScript 中的5种主要的数据类型(包括 Number、String、Object、Array、Boolean)进行值复制

    分析:

    • 使用 typeof 判断值得类型
    • 使用 toString 区分数组和对象
    • 递归函数的使用
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      function clone(obj) {
      //判断是对象,就进行循环复制
      if (typeof obj === 'object' && typeof obj !== 'null') {
      // 区分是数组还是对象,创建空的数组或对象
      var o = Object.prototype.toString.call(obj).slice(8, -1) === "Array" ? [] : {};
      for (var k in obj) {
      // 如果属性对应的值为对象,则递归复制
      if(typeof obj[k] === 'object' && typeof obj[k] !== 'null'){
      o[k] = clone(obj[k])
      }else{
      o[k] = obj[k];
      }
      }
      } else { //不为对象,直接把值返回
      return obj;
      }
      return o;
      }
  2. 实现柯里化函数

    算法题

-------------本文结束感谢您的阅读-------------