记网易云音乐前端开发实习生面试。
笔试
考完没有及时记录,只记得部分编程题和简答题
- 编程题- 数列差的最大公约数
- 并查集
- 打怪兽,二维数组求每个位置离值为1的元素的最近距离
- 跳积木,一维数组可从大值向较小值移动,有一次机会向高值移动
 
- 简单题- PC端网易云音乐的搜索截图(截的图是JJ!!!)
- 页面性能优化方案
 
一面
- 讲讲BFC 
- position 
- position: sticky的降级方案 
- 浏览器版本判断 
- 闭包 
- 看代码 - 1 
 2
 3
 4
 5- for (var i = 0; i < 10; i++) { 
 btn.addEventListener(function() {
 console.log(i)
 })
 }
- 事件代理 
- Object对象如何判断相等 
- 数组拍平(降到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;
 }
- Vue 如何实现依赖收集 
- 最近在看什么书 
- Vuex的使用方法 
二面
- 自我介绍 
- HTML的form有哪些标签 
- form表单的单选和多选如何实现的 
- JSON.stringify 在什么情况不能使用,什么情况下会报错 
- 讲讲对象的循环引用 
- 写一个判断对象是否存在循环引用的函数 - 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;
 }
- 在文字对话框内发了四条消息,如何保证在刷新后加载数据,顺序正确 
- 设计一下数据库消息表的表结构 
- 给消息列表加上拖拽移动消息功能,可改变消息顺序(从前端->后端->数据库,重点了前后端传值方案、数据库更新) 
二面面试官迟到了半小时。。。也没有任何联系方式和解释(Bad…)
问题整体感觉难度不大,最后问到了后端和数据库相关时让我有些意外(还好都会🍕)后面我也问了一下,网易云C端一般使用React,B端或者效率工具、内部产品都需要全栈开发(Node)。
HR面
- 自我介绍
- 介绍一下项目自己的项目经历
- 详细讲述印象最深的项目
- 遇到过比较困难的技术问题,如何解决
- 讲讲团队合作的方法,有没有遇到过比较难交流的情况
- 未来的职业规划