【面试题】近期前端面试记录

109 阅读2分钟

鉴于自己比较社恐,面试的时候会表达不清晰,特意把面试的内容整理下,用自己的话术总结,避免下次的语无伦次,欢迎指正!

  1. 深拷贝和浅拷贝
    • 深拷贝和浅拷贝对于基本数据类型都是进行值传递,对于引用数据类型,浅拷贝是将引用类型的引用地址进行传递,深拷贝是创建一个新的对象,用递归的方式,将对象的内从进行复制;
  2. 堆内存和栈内存
    • 栈内存主要储存基本数据类型和引用数据类型的引用地址;
    • 堆内存主要储存引用数据类型
    • 函数会储存在堆内存中,函数执行会在栈内存中进行;
    • 堆内存是动态分配的内存,空间是需要主动申请和释放的,容量允许的情况下可以一直申请,一直分配;
    • 栈内存是编译器进行操作的内存,比堆内存容量小,储存局部变量,函数在栈内存中执行结束后,会将该函数占用的内存空间进行释放,速度快;
  3. Promise 的理解,Promise 的出现解决了什么问题
    • Promise 是异步编程的一种解决方案;Promise 对象是一个构造函数;他提供了有序性、可预测性和可靠性;
    • new Promise 的时候会传入一个立即执行函数(executor),该函数有两个回调函数,reslove 和 reject,他们都是只接受一个参数;
    • Promise 有三种状态,pending、fulfilled、rejected,状态最多只可修改一次;
    • 调用 resolve 方法会回调 Promise 对象的 .then 方法的第一个回调函数,状态 pending 变为 fulfilled;调用 reject 方法会回调 Promise 对象的 .catch 方法 ,或者 .then 方法的第二个回调函数,状态从 pending 变为rejected;
    • Promise 方法增强了阅读性,和可扩展性;
    • 对于同时需要多个接口返回值的情况 可使用 Promise.all 方法减少回调地狱的出现,他有一个问题是如果出现一个 rejected 状态,会直接返回;所以后面新出一个 allSettled,不管是成功还是失败都会返回
  4. vue 虚拟dom
  5. redux 如何使用
  6. 纯函数怎么理解
  7. 原型和原型链
  8. Vuex 的作用是什么
  9. 为什么使用 vuex 不是本地缓存
  10. vue 中 watch 和 computeds 的区别是什么
  11. 闭包是什么,以及优点是什么
  12. 微信授权登录
  13. 箭头函数中的this指向
  14. 开发过程中做了哪些性能优化
  15. 为什么要进行组件化开发,一个页面为什么要拆成多个小组件
  16. 为什么会有跨域问题,有哪些解决方式
  17. 为什么nginx 可以解决跨域问题