面试问题我分为这么几大块:
1 基础 html、css、js
2 浏览器HTTP相关
3 框架/构建相关 (vue、react、node、webpack...)
4 手写代码 (常见算法、其他编程题)
5 性能优化
下面列举一些常见面试提问思路
CSS
盒模型
flex:1 含义 → 适用场景
响应式布局实现 → rem/em 区别、媒体查询 → 其他常见布局实现 → 居中
BFC原理 → 如何创建 → 应用场景
移动端像素知识与viewport知识
sass/less特性、区别 → 怎么自己封装样式库 → css-loader/style-loader区别
JS
作用域、原型链、闭包、继承、类型判断、V8 GC
基础API、ES6/7/8新特性 → babel原理
函数式编程、高阶函数、柯里化、递归、模块化
DOM操作、事件流、事件方法
PS: 异步单独拿出来列一下
异步
promise解决了什么问题、实现原理、使用场景
promise.all 概念、 怎么实现 → 用promise实现请求并发个数限制 → 希望即使前一个异步操作失败,也不要中断后面的异步操作,应该怎么做
说说async/await、generator → co.js 实现 → 三者对比,什么情况一定要用promise
说说JS异步编程 → JS事件循环、宏任务/微任务 → 说说react的setState → 说说node.js里的同步异步
Vue
vue2的数据响应式原理 → vue2的缺陷、业务代码里面怎么处理、$set原理、怎么重写数组方法的、vue3怎么实现的、proxy优缺点、怎么处理vue3不支持IE → vue3了解哪些API → vue3做了哪些优化
生命周期 → 使用场景
组件data为什么是一个函数 → 工厂函数 → 构造函数 → new一个对象发生了什么
vue组件通信 → vuex原理
路由模式、实现原理 → 导航守卫 → 权限控制怎么做(页面和接口)→ 鉴权token
$nextTick 作用、实现原理 → 宏任务/微任务、 JS事件循环
key的作用 → diff算法思路、和react的区别
computed、watch 实现原理、区别、使用场景 → 说出三种watcher的区别
keep-alive 原理、使用场景
scoped 原理 → 如何改变第三方组件样式
组件封装有哪些思考
Webpack
构建流程、实现原理 → loader、plugin用到了哪些及其作用 → webpack5新特性 → 与vite的区别
tree-shaking 原理、做过哪些相关优化
热更新原理
打包速度和体积分别做过哪些优化
浏览器
说说浏览器页面加载过程 → 浏览器缓存 → 服务端渲染 → 跨域问题 → axios/fetch区别、做过哪些二次封装 → HTTP方法、状态码、HTTP1/HTTP2/HTTP3/HTTPS区别
xss/csrf原理、如何防御
做过哪些性能优化
像一些手写代码/算法题就不列举了,主要是提供一个大概的思路,可以按这个方向把自己的知识过一遍。