2022-09-18大厂面经00
请注意,本文编写于 600 天前,最后修改于 600 天前,其中某些信息可能已经过时。

触宝 上海 offer

一面(50min)

  1. 自我介绍

  2. 讲讲项目

  3. 轮播图实现的原理

  4. js 基本数据类型

  5. null 和 undefined 的区别

  6. null == undefined 的值是什么,为什么

  7. new 操作符的过程

  8. call apply 的区别

  9. 讲一下闭包

  10. 闭包打印 1-9

  11. splice、filter、join、split 用法

  12. 数组转成字符串

  13. 1000 个 button 需要注册点击事件,怎么实现

  14. 事件代理(委托)优缺点

    优点: 1.可以大量节省内存占用,减少事件注册。比如 ul 上代理所有 li 的 click 事件就很不错。 2.可以实现当新增子对象时,无需再对其进行事件绑定,对于动态内容部分尤为合适 缺点:事件代理的常用应用应该仅限于上述需求,如果把所有事件都用事件代理,可能会出现事件误判。即本不该被触发的事件被绑定上了事件。

  15. 水平居中怎么实现

  16. HTML5 CSS3 新特性

  17. css 不兼容的情况有了解吗,怎么解决

    浏览器兼容性问题解决方案~总结 浏览器 CSS 兼容前缀

    -o-transform: rotate(7deg); // Opera
    
    -ms-transform: rotate(7deg); // IE
    
    -moz-transform: rotate(7deg); // Firefox
    
    -webkit-transform: rotate(7deg); // Chrome
    
    transform: rotate(7deg); // 统一标识语句
  18. ES6 的东西知道哪些

  19. let const var 的区别

  20. 箭头函数与普通函数的区别

  21. 手写一个数组去重

  22. 排序算法,sort 的用法解释一下

  23. 平时怎么学习前端,学了多久了,有实习经历吗

  24. 学习的过程中有自己做 demo 吗

二面(45min)

  1. 自我介绍

  2. 项目介绍

  3. 轮播图的实现原理

  4. 知道哪些数组的方法

  5. splice 和 slice 的区别

  6. 手撕代码

    问题一: 实现数组 arr 根据 id 来排序

    var arr = [
      { id: 2, name: 'test', score: 50 },
      { id: 3, name: 'test', score: 60 },
      { id: 5, name: 'test1', score: 70 },
    ];
    
    function solution(arr) {
      return arr.sort((a, b) => a['id'] - b['id']);
    }

    问题二:将 name 值相等的 score 加起来,例如问题一的 arr,返回 {test: 110, test1: 70}

    var arr = [
      { id: 2, name: 'test', age: 15, score: 60 },
      { id: 2, name: 'test', age: 25, score: 60 },
      { id: 3, name: 'test1', age: 25, score: 60 },
      { id: 5, name: 'test2', age: 35, score: 60 },
    ];
    
    function solution(arr, attr) {
      var obj = {};
      for (let i = 0; i < arr.length; i++) {
        var key = arr[i][attr];
        if (!obj[key]) {
          obj[key] = arr[i]['score'];
        } else {
          obj[key] += arr[i]['score'];
        }
      }
      return obj;
    }
    console.log(solution(arr, 'name')); // {test: 120, test1: 60, test2: 60}

    问题三:函数的第二个参数是个数组,比如 attr = ['id'] 就是将 id 的相同的 score 相加 attr = ['id', 'name'] 就是将 id 和 name 相同的 score 相加 attr = ['id', 'name', 'age'] 就是将 id、name 和 age 都相同的 score 相加

    // 此问关键在于确定一个唯一的key
    var arr = [
      { id: 2, name: 'test', age: 15, score: 60 },
      { id: 2, name: 'test', age: 25, score: 60 },
      { id: 3, name: 'test1', age: 25, score: 60 },
      { id: 5, name: 'test2', age: 35, score: 60 },
    ];
    
    function solution(arr, attr) {
      var obj = {};
      var str = attr.join('_'); // 2_test
    
      for (let i = 0; i < arr.length; i++) {
        var curr = arr[i];
        var a = [];
        attr.forEach(ele => {
          a.push(curr[ele]);
        });
        var key = a.join('_');
        if (obj[key]) {
          obj[key] += curr['score'];
        } else {
          obj[key] = curr['score'];
        }
      }
      return obj;
    }
    console.log(solution(arr, ['id', 'name'])); // {2_test: 120, 3_test1: 60, 5_test2: 60}
  7. 浏览器缓存机制

  8. 怎样禁止缓存

  9. 项目中有用到缓存吗

  10. 你对加班怎么看

  11. 实习时间

  12. 反问

本文作者:毛超颖

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!