美团
一面
1.实现 hasProperty(o,’x.y.z’) 方法,可以判断 o.x.y.z 路径是否存在对应属性
const o = {x:{y:{z:0}}}
hasProperty(o,’x.y.z’) // true
hasProperty(o,’x.w’) // false
function hasProperty (o, k) {
if (o === null || typeof o !== 'object') return false;
let a = k.split('.');
let i = 0;
while(i < a.length){
if (a[i] in o) {
o = o[a[i]];
i++
} else {
return false
}
}
return true;
}
const o = {x:{y:{z:0}}}
console.log(hasProperty(o,'x.w'))
2.给定任意二维数组,输出所有的顺序排列组合项。
比如 [[‘A’,’B’], [‘a’,’b’], [1, 2]],输出 [‘Aa1’,’Aa2’,’Ab1’,’Ab2’,’Ba1’,’Ba2’,’Bb1’,’Bb2’]
function combine (arr) {
let a = [];
for(let i = 0; i < arr.length; i++){
let k = arr[i];
for (let j = 0; j < k.length; j++) {
}
}
return a;
}
3.给定数组 [‘1a’,’2b’,’13c’,’5a’] ,输出出现次数最多的字母前数字之和 6。
function sum (arr) {
let m = {};
let q = {};
for (let i = 0; i < arr.length; i++) {
let k = arr[i].slice(-1);
let n = +arr[i].slice(0, arr[i].length - 1);
if (k in m) {
let c = m[k];
let d = q[k];
m[k] = c++;
q[k] = d + n;
} else {
m[k] = 1;
q[k] = n;
}
}
let max = 0;
let maxKey;
for (let key in m){
let val = m[key];
if (val > max) {
maxKey = key;
}
}
return q[maxKey];
}
let arr = ['1a','2b','13c','5a'];
sum(arr)
4.Promise.resolve().then(()=>{
return new Promise(res => res(new Promise(res => res(123))))
})
.then( data => console.log(data))
5.vue里面 data () {
return {
a: [1, {b: 2 }, 3]
}
}
a[0]= 4;
a[1].b = 5;
a.push(6);
watch 监听情况
6.箭头函数和普通函数的区别
7.304 状态码意思 服务端什么时候会返回304
8.js 外链脚本是否一定会执行
新浪
一面
1.手写instanceof
2.数据类型有哪些以及怎么判断
3.ES6有哪些新特性,列举一下
4.sleep
5.手机号中间四位替换成****
6.flat实现
7.闭包是怎么导致的
8.继承及各自优缺点
9文件分片上传,断点续传,秒传(简历写的),安全问题
10.对职位的期待
11.怎么培养新人及增强团队凝聚力
12.团队没有项目做的时候怎么办
比较基础