先写题目(后续待补充),后期补充答案 若想要看到更全面的面试总结,记得点赞关注呦~~
JS基础
- 数组的方法有哪些?哪些是会改变原数组的?
- 使用map时限reduce
- Promise的实现,Promise.all和Promise.then的实现
- 防抖、节流的实现
- 柯里化函数的实现
- apply、bind、call的实现
- 手写简单的订阅发布
- 手写数组去重的方式
- 一个长度为10000的数组,取第一个和第10000个数的时间是否有区别,为什么
- JS的隐式转换
- 闭包,闭包会导致内存泄漏吗?React中是否有闭包,说说你知道的。
- 原型与原型链
- 作用域和作用域链
- svg vs canvas的区别
- 什么是reauestAnimationFrame?
- JS中常见的设计模式
- Generator,以及async、await的实现原理
- 深拷贝和浅拷贝,哪些方法可以实现深拷贝和浅拷贝
- 浏览器跨域的原因,以及解决跨域的方式有哪些?
- 模块化的意义以及实现模块化的方法
- var、let、const的区别?const定义一个对象后,是否可以更改对象中的内容
- 箭头函数与普通函数的区别,尽可能的多说一些
- 变量提升和函数提升 -什么是内存泄漏?
- 浏览器的垃圾回收策略?
- 简单描述分代回收和标记清除、标记整理、引用计数等策略,在引用计数策略下的循环引用的变量是否会被回收?
- 判断数据类型的方式?如判断数组的方式由哪些?
- 0.1+0.3为什么不等于0.3?
网络
- 浏览器输入网址后,都经历了什么?
- http、http2、http3的特点和区别
- https中的加密处理是怎么进行的
- 浏览器的强缓存和协商缓存
- 说说你知道的状态码
- 请求头和响应头有哪些字段,分别代表什么意思?
- sessionStorage、localStorage、cookie。session的区别
- 三次握手以及为什么要进行三次握手
- 四次挥手
- 浏览器的攻击方式
- UDP和TCP和HTTP的区别
- 事件委托
- 浏览器的事件循环,微任务宏任务
- Set、Map、weakSet、weakMap各自的特点和区别
- 虚拟DOM
VUE
- 1、介绍下如何使用vuex进行状态管理
- 2、vuex中,同步和异步操作分别怎么处理?可以在mutations中进行异步操作么?为什么?
- 3、Vue的双向数据绑定的原理
- 4、Vue diff算法
- 5、改变data中的数据后,立即获取页面上对该数据的引用,得到的是改变前的数据还是改变后的数据?
- 6、Vue中diff算法最终改变的是Dom级别还是组件级别?
- 7、Vue3和Vue2相比有哪些不同?
- 8、使用Proxy对数据进行劫持,如果一个对象中的数据包含多层对象的嵌套,例如:{a:{b:{c:1},d:2},其中c是否被绑定了getter和setter属性?
- Vue中$nextTick的原理介绍
- Vue的生命周期
- Vue中的keep-alive的使用以及原理介绍
- VUE中的hash模式和history的模式的区别和实现的依据(pushState、window.hashChange)
- router的区别
- Vue和React比有哪些不同
- key的作用是什么?
- 组件间传参
React
- react中的setState是同步的还是异步的?
- 对react Hooks了解么,用过哪些?
- 对React的单向数据流怎么理解?
- key的作用是什么?
TypeScript
Webpack
- hash、chunkhash、contenthash的区别
其他杂七杂八
- 1、yarn和npm有什么不同?
- 2、使用yarn重复安装一个已经被安装过的包,会发生什么?
- 3、对menorepo了解多少?
- 4、低代码了解么?
- package.json中引用包的版本号的不同写法有什么不同,例如:1.2.0 ~1.2.0 ^1.2.0
项目相关
- 页面白屏的愿意分析以及问题定位的步骤
- 加速首屏渲染的方式