- 时长:66min
- 讲讲你认为HTML中重要的知识,讲了html语义化标签和块级元素行内元素
- 讲讲你认为CSS中重要的知识,讲了CSS选择器的优先级,CSS盒子模型,BFC
- 讲讲你认为JS中重要的知识,讲了深浅拷贝,事件机制,事件循环,原型和原型链
- 讲讲http和https,把http0.9-3,https作用,加密过程,对称非对称加密一起讲了,问了什么是队头阻塞
- 讲讲http缓存,强制/协商缓存,共享/私有缓存都讲了一遍,顺带着讲了浏览器渲染
- 讲讲浏览器输入url后发生了什么,回流和重绘
- 讲讲vue2和vue3的区别,顺带着详细讲了vue的响应式原理和发布订阅
- 讲讲对webpack的了解
- 手撕题,把下图一转化为下图2,难点是数组那块的处理
let res = {};
let question1 = (obj,path) => {
// 这里一般是数组里面的数字,如果传进来的是基本数据类型的数,就取路径直接加进结果
if(!(obj instanceof Object)){
res[path.slice().join('')] = obj;
}
// 遍历对象的键和值
Object.entries(obj).forEach(([key,value]) => {
// 如果值是数组
if(value instanceof Array){
path.push(key);
// 遍历数组
value.forEach((item,index) => {
// 把索引加入路径
path.push(`[${index}]`);
// 如果是非数字,要加上.
if(item instanceof Object){
path.push('.');
}
// 递归调用
question1(item,path)
path.pop()
})
// 如果是对象,加上key和.后继续递归回溯
} else if(value instanceof Object){
path.push(key + '.');
question1(value,path);
path.pop()
} else {
// 基本数据类型直接加入结果数组
path.push(key);
res[path.slice().join('')] = value;
}
path.pop()
})
return res
}
console.log(question1(obj,[]))
- 总结:为什么说是kpi面呢,因为面试官只让我自己输出,他却不提出问题,并且途中时不时还接电话,以及开部门的小组会议,我就知道是kpi面没跑了,果然面完两周多都没回应了,索性就发出来吧