之前面试遗漏的答不上来的问题

220 阅读1分钟

1. 懒加载原理,我当时是认为通过判断scrolltop判断是否加载的 面试官也顺便问我scrolltop会不会触发重排重绘(会触发的!!!又一次意识到我是个菜狗) 方法其实有三个

  • 这个是通过元素位置懒加载(元素距顶部的高度 - 页面被卷去的高度 <= 浏览器可视区的高度)= 、、offsetTop >= scrollTop + innerHeight
  • getBoundingClientRect() 就一个函数api 获取图片相对于浏览器视窗的位置
  • IntersectionObserver 又一个api 有点复杂,简单来说就是作用检测一个元素是否可见,以及元素什么时候进入或者离开浏览器视口

2.vue组件通信 基本每次都会问 但每次我都只答三个 有一次被往深里问bus 被问炸了 所以记录一下

  • 最常用的 父组件通过props的方式向子组件传递数据,而通过$emit 子组件可以向父组件通信
  • $children / $parent 就是可以直接拿到父子组件的实例
  • Vuex 这个不必多说
  • ref / refs 写在子组件上 通过this.$refs可以获取实例
  • eventBus 事件总线 就是创造一个公有中心 所有组件可以通过中心发送 每个组件都会接收到 new vue然后把他赋到vue的property上
  • provideinject简略版的emit和on 可以摆脱props的局限 直接把变量注入

3.快排优化问题吧 我回答的时候是新建left和right数组 但浪费空间

  • 优化是递归传参传左右索引,然后在各自索引范围内选取中间值找右边比他小的和左边比他大的对换 然后再把中间值两边递归 暂时想起来这么多吧 还有补充的话 会更新的