触宝科技 前端工程师面试题
触宝科技 前端工程师面试题
-
自我介绍
-
项目
-
轮播图实现的原理
-
js基本数据类型
-
null和undefined的区别
-
null == undefined 的值是什么,为什么
-
new 操作符的过程
-
call apply 的区别
-
讲一下闭包
-
闭包打印 1-9
-
splice、filter、join、split 用法
-
数组转成字符串
-
1000个button需要注册点击事件,怎么实现
-
事件代理(委托)优缺点
-
水平居中怎么实现
-
H5 C3 新特性
-
css不兼容的情况有了解吗,怎么解决
-
ES6 的东西知道哪些
-
let const var的区别
-
箭头函数与普通函数的区别
-
手写一个数组去重
-
排序算法,sort的用法解释一下
-
平时怎么学习前端,学了多久了,有实习经历吗
-
学习的过程中有自己做demo吗
-
自我介绍
-
项目介绍
-
轮播图的实现原理
-
知道哪些数组的方法
-
splice 和 slice 的区别
手撕代码
问题一: 实现数组 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}
- 浏览器缓存机制
- 这样禁止缓存
- 项目中有用到缓存吗
- 你对加班怎么看
- 实习时间