触宝 前端实习 面经
上海触宝 前端
总共两轮面试,5.9投递,5.19一面技术面,5.21二面leader面。
有没有老哥在触宝实习过,告知一下大体情况,牛客上关于触宝的消息不多。
这里也给自己打个广告,总结了一下前端的一些面试问题,放在我的GitHub中,附上链接:https://github.com/lf2021/Front-End-Interview
一面 2020/5/19 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. 事件代理(委托)优缺点
15. 水平居中怎么实现
16. H5 C3 新特性
17. css不兼容的情况有了解吗,怎么解决
18. ES6 的东西知道哪些
19. let const var的区别
20. 箭头函数与普通函数的区别
21. 手写一个数组去重
22. 排序算法,sort的用法解释一下
23. 平时怎么学习前端,学了多久了,有实习经历吗
24. 学习的过程中有自己做demo吗
二面 2020/5/21 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. 实习时间