宏景科技 - 前端面试

面试时间:2023-04-03

公司全称:宏景科技股份有限公司

公司位置:广州黄浦区创意大厦B27楼

面试题

老同事了,技术面尬聊。

笔试题

v-show 和 v-if 的区别?v-show 和 keep-alive 的区别?
查看答案

v-show 通过 CSS 属性 display 控制元素显隐。

v-if 通过元素创建和销毁控制元素显隐。

keep-alive 是 vue 框架层级进行的 JS 对象渲染。


为何 v-for 要用 key?
查看答案

使用 key 作为唯一标识,为了高效的更新虚拟 DOM。


简述Vue组件生命周期(有子组件的情况)
查看答案

一、加载渲染过程

父 beforeCreate -> 父 created -> 父 beforeMount -> 子 beforeCreate -> 子 created -> 子 beforeMount -> 子 mounted -> 父 mounted.

二、子组件更新过程

父 beforeUpdate -> 子 beforeUpdate -> 子 updated -> 父 updated

三、父组件更新过程

父 beforeUpdate -> 父 updated

四、销毁过程

父 beforeDestroy -> 子 beforeDestroy -> 子 destroyed -> 父 destroyed


描述组件渲染和更新过程
查看答案

渲染过程:

  1. 解析模板为 render 函数;

  2. 触发响应式,监听 data 属性 getter,setter;

  3. 执行 render 函数,生成 vnode, patch(elem, vnode)。

更新过程:

  1. 修改 data,触发 setter;

  2. 重新执行 render 函数,生成 newVnode;

  3. patch(vnode, newVnode)。


双向数据绑定 v-model 的实现原理
查看答案
  1. v-bind 绑定一个 value 属性;

  2. v-on 给当前元素绑定 input 事件,使用 $event.target.value 给变量重新赋值。


computed 有何特点,computed 和 watch 的区别,computed 和 methods 的区别
查看答案

computed 计算属性基于 data 中声明过或 props 传递过来的数据通过计算得到一个新值,新值会根据已知值得变化而变化,且 computed 具有缓存功能,多次使用同一个 computed 计算得属性值,只会执行一次 computed 内定义的 function,直到依赖项改变才会重新计算。

computed 和 watch 的区别:对于多个监听对象要进行同一操作,watch 需要监听多次,而 computed 只需要执行一次。在执行异步或开销比较大的操作时,watch 方式更合适。

computed 和 methods 的区别:computed 只有依赖项改变才会重新计算,methods 每次调用都会执行。


Vue 组件之间的通信方式
查看答案
  1. 通过 props 传递

  2. 通过 $emit 触发自定义事件传递

  3. 使用 ref

  4. EventBus

  5. $parent 或者 $root

  6. v-bind="$attrs"v-on="$listeners"

  7. Provide 和 Inject

  8. Vuex 或 Pinia


何时需要使用 keep-alive?
查看答案

进行组件缓存,优化性能时。


何时需要使用 beforeDestroy?
查看答案
  1. 清除定时器

  2. 解绑 $on

  3. 接触事件绑定


Vue 如何监听数组变化?
查看答案

Vue是怎样监听数组的变化的?open in new window

通过重写数组方法实现。步骤如下:

  1. 先获取原生 Array 的原型方法,因为拦截后还是需要原生的方法帮我们实现数组的变化。

  2. 对 Array 的原型方法使用 Object.defineProperty 做一些拦截操作。

  3. 把需要被拦截的 Array 类型的数据原型指向改造后原型。


Vue 常见性能优化
查看答案

加载性能。1. 按需记载 2. 可视加载 3. 图片懒加载

SEO优化。1. 服务端渲染 SSR

打包优化。1. CDN 加速 2. chunk 抽取

缓存和压缩:1. 客户端缓存 2. Gzip 压缩


描述一下 Vuex
查看答案

“Vuex 是一个状态管理库,实现对数据的集中式管理,方便其他组件存取数据。


uni-app 页面的生命周期执行过程
查看答案

beforeCreate -> onLoad -> onShow -> created -> beforeMount -> onReady -> mounted


uni-app 中的跳转方式有哪些?
查看答案

共 6 种跳转方式。

  1. uni.navigateTo:保留当前页面,跳转到应用内的某个页面。

  2. uni.redirectTo:关闭当前页面,跳转到应用内的某个页面。

  3. uni.reLaunch:关闭所有页面,打开到应用内的某个页面。

  4. uni.switchTab:跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

  5. uni.navigateBack:关闭当前页面,返回上一页面或多级页面。

  6. uni.preloadPage:预加载页面,是一种性能优化技术。被预加载的页面,在打开时速度更快。


uni-app 的传参方式有哪些?
查看答案
  1. <navigator> 标签传参

  2. uni.navigateTo 跳转传参

  3. uni.emit()uni.on()


Contributors: tanqin