2021年秋高级前端成功上岸的面试总结

309 阅读3分钟

先写题目(后续待补充),后期补充答案 若想要看到更全面的面试总结,记得点赞关注呦~~

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)
  • routeroute和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

项目相关

  • 页面白屏的愿意分析以及问题定位的步骤
  • 加速首屏渲染的方式