记网易云音乐前端开发实习生面试。
笔试
考完没有及时记录,只记得部分编程题和简答题
- 编程题
- 数列差的最大公约数
- 并查集
- 打怪兽,二维数组求每个位置离值为1的元素的最近距离
- 跳积木,一维数组可从大值向较小值移动,有一次机会向高值移动
- 简单题
- PC端网易云音乐的搜索截图(截的图是JJ!!!)
- 页面性能优化方案
一面
讲讲BFC
position
position: sticky的降级方案
浏览器版本判断
闭包
看代码
1
2
3
4
5for (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
13const 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
19const 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面
- 自我介绍
- 介绍一下项目自己的项目经历
- 详细讲述印象最深的项目
- 遇到过比较困难的技术问题,如何解决
- 讲讲团队合作的方法,有没有遇到过比较难交流的情况
- 未来的职业规划