网易云音乐-前端实习面经

记网易云音乐前端开发实习生面试。

笔试

考完没有及时记录,只记得部分编程题和简答题

  • 编程题
    • 数列差的最大公约数
    • 并查集
    • 打怪兽,二维数组求每个位置离值为1的元素的最近距离
    • 跳积木,一维数组可从大值向较小值移动,有一次机会向高值移动
  • 简单题
    • PC端网易云音乐的搜索截图(截的图是JJ!!!)
    • 页面性能优化方案

一面

  1. 讲讲BFC

  2. position

  3. position: sticky的降级方案

  4. 浏览器版本判断

  5. 闭包

  6. 看代码

    1
    2
    3
    4
    5
    for (var i = 0; i < 10; i++) {
    btn.addEventListener(function() {
    console.log(i)
    })
    }
  7. 事件代理

  8. Object对象如何判断相等

  9. 数组拍平(降到1维)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const arr = [1, 2, 3, [[4], 5]];
    // 方案1
    arr.flat(Infinity);

    // 方案2 递归
    function myFlat(arr) {
    if(arr.length <= 1 || !(item instanceof Array)) return arr
    const resData = [];
    arr.forEach(item => {
    item instanceof Array ? resData.push(...myFlat(item)) : resData.push(item);
    })
    return resData;
    }
  10. Vue 如何实现依赖收集

  11. 最近在看什么书

  12. Vuex的使用方法

二面

  1. 自我介绍

  2. HTML的form有哪些标签

  3. form表单的单选和多选如何实现的

  4. JSON.stringify 在什么情况不能使用,什么情况下会报错

  5. 讲讲对象的循环引用

  6. 写一个判断对象是否存在循环引用的函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    const s = [];
    function fun(obj){
    if(typeof obj !== 'object'){
    return;
    }
    s.push(obj);
    let flag = false;
    Object.keys(obj).forEach(key => {
    if(typeof obj[key] === 'object') {
    if(s.includes(obj[key])){
    flag = true;
    } else{
    flag = fun(obj[key]);
    }
    }
    });
    s.pop();
    return flag;
    }
  7. 在文字对话框内发了四条消息,如何保证在刷新后加载数据,顺序正确

  8. 设计一下数据库消息表的表结构

  9. 给消息列表加上拖拽移动消息功能,可改变消息顺序(从前端->后端->数据库,重点了前后端传值方案、数据库更新)

二面面试官迟到了半小时。。。也没有任何联系方式和解释(Bad…)

问题整体感觉难度不大,最后问到了后端和数据库相关时让我有些意外(还好都会🍕)后面我也问了一下,网易云C端一般使用React,B端或者效率工具、内部产品都需要全栈开发(Node)。

HR面

  1. 自我介绍
  2. 介绍一下项目自己的项目经历
  3. 详细讲述印象最深的项目
  4. 遇到过比较困难的技术问题,如何解决
  5. 讲讲团队合作的方法,有没有遇到过比较难交流的情况
  6. 未来的职业规划
0%