Skip to content

虾皮秋招笔试

  1. 输出选择

    1.js
    js
    let foo = {};
    let obj = {};
    let obj2 = { a: 1 };
    foo[obj] = "hello";
    foo[obj2] = "hello2";
    
    console.log(foo[obj], foo[obj2]);
  2. 输出选择

    2.js
    js
    Promise.all([]).then((res) => console.log("all"));
    Promise.race([]).then((res) => console.log("race"));
  3. 输出

    3.js
    js
    name = "Sophee";
    obj = {
      name: "SopheePay",
      getName: () => {
        console.log(this.name);
      },
      getName2: function () {
        console.log(this.name);
      },
    };
    const fn1 = obj.getName;
    const fn2 = obj.getName2;
    console.log(obj.getName(), fn1(), obj.getName2(), fn2());
  4. HTTPS 采用了哪些技术?

  5. TCP 与关闭连接相关的变量有:

  6. 给定一个由字母和数字组成的字符串,输出这个字符串里第 K 大的数字。

  7. 抓取气球,给定 total 和 scores,有几种抓取方式可以使总分为 total。输入 5, [1,2,5],输出 4(5, 2+1+1+1, 2+2+1, 1+1+1+1+1)。找零钱

  8. 实现深度比较

    🔍 展开代码
    4.js
    js
    function isEqualedArray(arr1, arr2) {
      const m = arr1.length;
      const n = arr2.length;
      if (m !== n) return false;
    
      for (let i = 0; i < m; i++) {
        if (!_deepEq(arr1[i], arr2[i])) return false;
      }
    
      return true;
    }
    
    function deepEq(strA, strB) {
      const objA = JSON.parse(strA.replace(/'/g, '"'));
      const objB = JSON.parse(strB.replace(/'/g, '"'));
    
      return _deepEq(objA, objB);
    }
    
    function _deepEq(o1, o2) {
      if (o1 === o2) return true;
    
      const flag1 = Array.isArray(o1);
      const flag2 = Array.isArray(o2);
    
      if (flag1 && flag2) {
        return isEqualedArray(o1, o2);
      } else if (
        !flag1 &&
        !flag2 &&
        typeof o1 === "object" &&
        typeof o2 === "object"
      ) {
        const keys1 = Object.keys(o1);
        const keys2 = Object.keys(o2);
        if (keys1.length !== keys2.length) return false;
        for (const key of keys1) {
          if (!(key in o2)) return false;
          if (!_deepEq(o1[key], o2[key])) return false;
        }
        return true;
      } else {
        return o1 == o2;
      }
    }