面试时间: 2020年12月14日上午10.30点-11.30点
面试形式: 技术面试 + 技术面试(介绍公司项目) + hr面试(介绍公司福利)
-
自我介绍
参考模板:
你好,我是XX,毕业于XX大学。现就职于XX公司,有X年开发经验,公司主要使用技术栈为React+AntDesign+Redux进行开发 -
组件封装注意事项(抽离组件注意事项)
可扩展性强:如果不能扩展,失去代码灵活性
文档详细清楚:适当的注释
颗粒度合适,适度抽象:尽量保证一个组件完成的功能是单一的,不是多个功能的结合体
留一个slot:组件完成80%的功能,剩余20%让父组件通过slot完成
异常处理:可疑区增加try catch;全局监控js异常window.onerror;React的componentDidCatch -
vue和react不同
区别 | vue | react |
---|---|---|
数据是否可变 | 响应式,数据可变(性能优化自动的) | 单向数据流,数据不可变(性能优化手动做) |
通过js还是自行处理 | html js css组合在一起,用各自处理方式 | all in js(js生成html为jsx, js操作css) |
内置还是社区做 | 很多东西内置 | 做的少,交给社区 |
扩展组件 | minin | 高阶组件 |
- vue生命周期
beforeCreate
created
beforeMount:此时还没有生成html到页面上
mounted: 挂载完成,模板中html渲染到html页面上,可以做ajax操作,只执行一次
beforeUpdate
updated
beforeDestory
destoryed
- 场景题:[1,2,3,[3,4,[3,4]]]数组扁平化和数组去重方法
数组扁平化:递归, toString(元素是数字),reduce,rest
数组去重:Set , 双层循环, indexof, include, sort,
// 数组扁平化:递归
function flatten(arr){
var result = []
for(var i=0; i<arr.length; i++){
if(Array.isArray(arr[i])){
result = result.concat(flatten(arr[i]))
} else{
result.push(arr[i])
}
}
return result
}
// 数组扁平化:toString