一面● 手写(水平垂直居中、正方形变三角形,数组扁平化)● 对上述扁平化后的数组去重● 数组的方法● for each和map的区别● 类型判断的方法● 基本类型和数据类型的区别● 深拷贝方法,如何实现● 什么时候用JSON.stringify()● 如何实现递归(.call()),数组扁平化中的递归的缺陷● this指向● == 和 === 的区别● 原型、原型链,应用场景● 创建对象方法● promise,async、await● 模块化(CommonJS、AMD、CMD、UMD、ES6 Module)● 事件循环,哪些是宏任务微任务● 定位● 隐藏元素的方法● BFC,实现方法● get、post区别● 状态码 401,301,302● 浏览器缓存机制,强缓存、协商缓存区别● 同源策略,跨域解决方法● React中 useState() 是同步还是异步● Vue生命周期● v-if和v-show● v-for为什么要有key● 反问二面● 自我介绍● 为什么学前端● 你认为前端的主要工作是什么● 项目● 算法(二分)● 你的优势● 反问