范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

常见vue面试题,大厂小厂都一样

  一、谈谈你对MVVM的理解?
  映射关系简化,隐藏controller MVVM在MVC的基础上,把控制层隐藏掉了。
  Vue不是一个MVVM框架,它是一个视图层框架。
  ViewModal是一个桥梁,将数据和视图进行关联。
  二、谈谈你对Vue中响应式数据的理解?
  数组和对象类型的值变化的时候,通过 defineReactive   方法,借助了defineProperty   ,将所有的属性添加了getter   和setter   。用户在取值和设置的时候,可以进行一些操作。
  缺陷:只能监控最外层的属性,如果是多层的,就要进行全量递归。
  get里面会做依赖搜集(dep[watcher, watcher]) set里面会做数据更新(notify,通知watcher更新)
  三、Vue中如何检测数组的变化?
  vue中对数组没有进行defineProperty,而是重写了数组的7个方法。 分别是: push shift pop splice unshift sort reverse
  因为这些方法都会改变数组本身。
  数组里的索引和长度是无法被监控的。
  四、Vue中如何进行依赖收集的?
  Vue初始化的时候,挂载之后会进行编译。生成renderFunction。
  当取值的时候,就会搜集watcher,放到dep里面。
  当用户更改值的时候,就会通知watcher,去更新视图。
  五、如何理解Vue中的模板编译原理?
  这个问题的核心是如何将template转换成render函数。 将template模块转换成ast语法书 - parserHTML 对静态语法做标记(某些节点不改变) 重新生成代码 - codeGen,使用with语法包裹字符串
  六、Vue生命周期钩子是如何实现的?
  Vue的生命周期钩子是回调函数,当创建组件实例的过程中会调用相应的钩子方法。 内部会对钩子进行处理,将钩子函数维护成数组的形式。
  七、Vue组件生命周期有哪些?  beforeCreate 在实例初始化之后,数据观测observer 和event、watcher事件配置之前被调用 created 实例已经创建完成,在这一步,以下配置被完成数据观测属性和方法的运算watch/event时间回调$el尚未生成 beforeMount 在挂载之前被调用,render尚未被调用 mounted el被新创建的vm.$el替换,并挂载到实例上去之后调用 beforeUpdate 数据更新时,被调用,发生在虚拟Dom重新渲染和打补丁之前 update 由于数据更改导致的虚拟Dom重新渲染和打补丁,在这之后调用 beforeDestroy 实例销毁之前调用 destroyed 实例销毁之后调用,调用后Vue实例的所有东西都会被解绑,所有的事件监听会被移除,子实例被销毁,该钩子在服务端渲染期间不被调用 keep-alive(activated & deactivated)
  八、vue.mixin的使用场景和原理?
  Vue的mixin的作用就是抽离公共的业务逻辑,原理类似对象的继承,当组件初始化的时候,会调用mergeOptions方法进行合并,采用策略模式针对不同的属性进行合并。 如果混入的数据和本身组件的数据有冲突,采用本身的数据为准。
  缺点:命名冲突、数据来源不清晰
  九、Vue的组件data为什么必须是一个函数?
  new Vue   是一个单例模式,不会有任何的合并操作,所以根实例不必校验data一定是一个函数。 组件的data必须是一个函数,是为了防止两个组件的数据产生污染。 如果都是对象的话,会在合并的时候,指向同一个地址。 而如果是函数的时候,合并的时候调用,会产生两个空间。
  十、请说明nextTick的原理。
  nextTick是一个微任务。 nextTick中的回调是在下次Dom更新循环结束之后执行的延迟回调 可以用于获取更新后的Dom Vue中的数据更新是异步的,使用nextTick可以保证用户定义的逻辑在更新之后执行
  十一、computed和watch的区别是什么?  computed和watch都基于watcher来实现的。 computed的属性是具备缓存的,依赖的值不发生变化,对其取值时计算属性方法不会重复执行 watch是监控值的变化,当值发生改变的时候,会调用回调函数
  十二、Vue.set方法是如何实现的?  vue给对象和数组本身都增加了dep属性 当给对象新增不存在的属性的时候,就会触发对象依赖的watcher去更新 当修改数组索引的时候,就调用数组本身的splice方法去更新数组
  十三、Vue为什么要用虚拟Dom  虚拟dom就是用js对象来描述真实Dom,是对真实Dom的抽象 由于直接操作Dom性能低,但是js层的操作效率高,可以将Dom操作转化成对象操作。最终通过diff算法比对差异进行更新Dom 虚拟Dom不依赖真实平台环境,可以实现跨平台
  十四、Vue的diff算法原理是什么?
  Vue的diff算法是平级比较,不考虑跨级比较的情况。内部采用深度递归的方式+双指针方式比较 先比较两个节点是不是相同节点 相同节点比较属性,复用老节点 先比较儿子节点,考虑老节点和新节点儿子的情况 优化比较:头头、尾尾、头尾、尾头 比对查找,进行复用
  十五、既然vue通过数据劫持可以精准的探测数据变化,为什么还要进行diff检测差异?  响应式数据变化,Vue确实可以在数据变化的时候,响应式系统可以立刻得知。但是如何每个属性都添加watcher的话,性能会非常的差。 粒度过细,会导致更新不精准
  所以采用watcher + Diff算法来检测差异。
  十六、请说明key的作用和原理  Vue在patch过程中,通过key可以判断两个虚拟节点是否是相同节点。 没有key会导致更新的时候出问题 尽量不要采用索引作为key
  十七、谈谈对组件的理解  组件化开发能大幅提高应用开发效率、测试性、复用性 常用的组件化技术:属性、自定义事件、插槽 降低更新范围,值重新渲染变化的组件 高内聚、低耦合、单向数据流
  十八、请描述组件的渲染流程
  产生组件虚拟节点 -> 创建组件的真实节点 -> 插入到页面
  十九、请描述组件的更新流程
  属性更新会触发patchVnode方法,组件的虚拟节点会调用prepatch钩子,然后更新属性,更新组件。
  二十、异步组件原理
  先渲染异步占位符节点 -> 组件加载完毕后调用forceUpdate强制更新。
  二十一、函数组件的优势和原理  函数式组件的特性:无状态、无生命周期、无this。因此性能会高一点。
  正常的一个组件是一个类继承了Vue。
  函数式组件,就是一个普通的函数。
  二十二、组件的传值方式有哪些?  props和emit: 父组件向子组件传递数据,通过prop传递。子组件传递数据给父组件是通过 emit :父组件向子组件传递数据,通过 prop 传递。子组件传递数据给父组件是通过emit事件 parent, parent ,children获取当前组件的父组件和当前组件的子组件 attrs和 attrs 和listeners 。 父组件通过provide提供,子组件通过inject注入变量 $ref获取实例 eventBus平级组件数据传递 Vuex
  二十三、$attrs是为了解决什么问题出现的?
  主要作用是为了实现批量传递数据。
  provide/inject更适合应用在插件中,主要实现跨级数据传递。
  二十四、v-for和v-if哪个优先级更高?
  首先,v-for和v-if 不能在同一个标签中使用。
  先处理v-for,再处理v-if。
  如果同时遇到的时候,应该考虑先用计算属性处理数据,在进行v-for,可以减少循环次数。
  二十五、v-mode是如何实现的?
  在组件上用的v-model,是model和callback
  在普通元素上用v-model,会生成指令,还可能因为不同的元素: 生成value和input 生成change和radio 生成change和checked
  指令在什么时候会调用?
  源码:
  二十六、Vue的普通Slot以及作用域Slot的区别
  普通插槽
  普通插槽是渲染后做替换的工作。父组件渲染完毕后,替换子组件的内容。
  在模板编译的时候,处理组件中的子节点和slot标签
  在创建元素的时候,用_t()方法方法来替换_v()的内容。
  作用域插槽
  作用域插槽可以拿到子组件里面的属性。在子组件中传入属性然后渲染。
  作用域插槽的编译结果:
  二十八、Vue.use是干什么的?
  Vue.use   是用来使用插件的。我们可以在插件中扩展全局组件、指令、原型方法等。 会调用install   方法将Vue的构建函数默认传入,在插件中可以使用vue,无需依赖vue库
  二十九、组件写name有啥好处?  增加name属性,会在components属性中增加组件本身,实现组件的递归调用。 可以表示组件的具体名称,方便调试和查找对应的组件。
  三十、vue的修饰符有哪些?  .stop .prevent .capture .self .once .passive .right .center .middle .alt
  三十一、如何理解自定义指令?  在生成ast语法树时,遇到指令会给当前元素添加directives属性 通过genDirectives生成指令代码 在patch前,将指令的钩子提取到cbs中,在patch过程中调用对应的钩子 当执行cbs对应的钩子时,调用对应指令定义方法
  三十二、keep-alive平时在哪里使用?原理是什么?  使用keep-alive包裹动态组件时,会对组件进行缓存,避免组件重新创建
  使用有两个场景,一个是动态组件,一个是router-view
  这里创建了一个白名单和一个黑名单。表明哪些需要需要做缓存,哪些不需要做缓存。以及最大的缓存个数。
  缓存的是组件的实例,用key和value对象保存。
  加载的时候,监控include和exclude。
  如果不需要缓存,直接返回虚拟节点。
  如果需要缓存,就用组件的id和标签名,生成一个key,把当前vnode的instance作为value,存成一个对象。这就是缓存列表
  如果设置了最大的缓存数,就删除第0个缓存。新增最新的缓存。
  并且给组件添加一个keepAlive变量为true,当组件初始化的时候,不再初始化。
  三十三、vue-router有几种钩子函数?执行流程如何?
  钩子函数有三种: 全局守卫 路由守卫 组件守卫
  三十四、vuerouter的两种模式的区别  vue-router中有三种模式,分别是hash、history、abstract abstract在不支持浏览器的API换景使用 hash模式兼容性好,但是不美观,不利于SEO history美观,historyAPI+popState,但是刷新会出现404
  三十五、谈谈Vue的性能优化有哪些?  数据层级不要过深,合理的设置响应式数据 使用数据时,缓存值的结果,不频繁取值 合理设置key v-show(频繁切换性能高)和v-if的合理使用 控制组件的粒度 -> Vue采用组件级别更新 采用函数式组件 -> 函数式组价开销低 采用异步组件 -> 借助webpack的分包策略 使用keep-alive来缓存组件 虚拟滚动、时间分片等策略 打包优化
  三十六、谈谈你对Vuex的理解?
  Vuex是专门为vue提供的全局状态管理系统,用于多个组件中的数据共享、数据缓存。
  问题:无法持久化。
  mutation 主要修改状态,同步执行 action 执行业务代码,方便复用,逻辑可以为异步。不能直接修改状态。
  三十七、vue中使用了哪些设计模式?  单例模式:new多次,只有一个实例
  工场模式:传入参数就可以创建实例(虚拟节点的创建) 发布订阅模式:eventBus 观察者模式:watch和dep 代理模式:_data属性、proxy、防抖、节流 中介者模式:vuex 策略模式 外观模式

有多少人的心理需要健康释放和就诊心理医生健康热力计划现代化经济建设人人参与,为了生活的更好为了美好生活勤劳的中国人民都在勤奋的劳动。现代化的进程脚步似乎不是一般人可以跟的上的,就像人们的心理变化跟不上社会进步与社会进步背聚焦声音营销,品牌爆火的另类创意(点击上方头像关注集成侠)你爱我,我爱你,蜜雪冰城甜蜜蜜。你再也不能用正常的语调念出这几个字了。6月3日,蜜雪冰城官方号在B站上传了蜜雪冰城主题曲MV及蜜雪冰城主题曲MV中英双语版人人对大数据嗤之以鼻,算法有原罪吗?JiChengXia科技改变生活,创新引领未来。,这句人人听过随处可见的slogan并没有向世人展示科技如何改变生活引领未来,却以切肤之殇让时代体验到科技发展带来的甜蜜与阵痛。英剧某大城市大学生部分为什么留学硅谷就没有然后了部分外国人和部分企业一把手说国家培养的的人才就是为美国培养的,有2W名北大清华大学生在硅谷奋斗。硅谷中国当然不缺人才,孩子也一点都不比国外的孩子笨,中国每年毕业的理科生有500万之笔记本容易发烫的原因是什么?笔记本容易发热时如何散热笔记本的散热能力远不如台式计算机,因此购买笔记本时通常使用匹配的散热器。对于没有散热器的用户,笔记本电脑容易发热的原因是什么?如何散热?让我们看一下。由于笔记本电脑的内部空间有限,计算机正常关闭,显示器已关闭,但无法关闭主机,这是什么原因?计算机通常处于关闭状态62616964757a686964616fe59b9ee7ad94338,显示器处于关闭状态,并且无法关闭主机。原因和解决方法1可能是BIOS设置不正确。打宽带网络速度慢的原因是什么?如何解决宽带网络速度慢的问题在许多网络问题中,最麻烦的是网络速度慢的问题。因为网速慢不仅会影响我们的心情,还会大大降低我们的工作效率。那么宽带网络速度慢的原因是什么呢?让我们看看解决网络速度慢的解决方案!一宽笔记本电脑无缘无故关机蓝屏可能还有几个原因笔记本电脑无缘无故关机蓝屏可能还有下面几个原因,分析下解决方法吧。1。cpu未散热,导致蓝屏。cpu风扇散热效果不佳,会导致系统及其他软件进入黑屏,蓝屏注意观察电脑风扇转起来的图案手机连不上WiFi是什么原因一般来说出现密码正确却连不上WiFi的原因有三个分别是IP冲突身份认证问题和路由器宽带问题。1。IP冲突之前一直可以正常连接WiFi,但是突然就连不上某个WiFi,但是别人的手机却WIFI满格但网速很慢是什么原因?路由器网络问题路由器硬件损坏或陷入死循环,其他设备虽然能连接到WIFI信号,但是连上也没有办法上网,排除其它问题的条件下可以打运营商电话报修检查路由器。设备被禁用或者限速出门在外难家庭如何组网高效率使用路由器家用的WiFi信号发射受电磁波传递特性的限制,穿透能力比较差,墙壁门家具都可能对WiFi信号有较强的削弱作用。穿过的障碍物越多,这种削弱作用越明显。如何操作才能尽可能解决这样的问题
苹果再丢一城,ProMotion技术也被国产厂商反超,苹果还有何优势不得不说,在之前很长一段时间里,苹果手机在各项技术方面的确是领先全球其他手机厂商不少。特别是对于我们的国产手机来说,苹果手机更是之前一直都迈不过去的一道坎。无论是在手机的外观设计方苹果再挤牙膏!iPhone14或将芯片混用,标准本无缘A16芯片iPhone13系列发布之后深受消费者的喜爱,还帮助苹果坐上了今年10月11月国内第一厂商的宝座,而随着2022年即将到来,不少人也在开始期待明年的iPhone14系列。但从近日一苹果ios15。2更新内容可查看手机零件是否正品苹果官方公布了iOS15。2版本的一些更新细节,称其解决了在使用第三方屏幕的iPhone13系列机型上禁用FaceID的问题,还能查看iPhone维修零部件是否是正品。在此之前,如滴滴司机肺腑之言年轻人最好不要入行,没有后悔药网约车平台的出现改变了人们的生活方式,以前出行的时候只能乘坐公交车和出租车,现在有了网约车,动一动手机就能叫车上门,生活半径缩小了不少。有些年轻人看上了滴滴司机这个工作,认为滴滴司鸿蒙HarmonyOS上线控制中心小白条功能,使用更方便自今年6月份鸿蒙系统2。0正式发布之后,经过短短半年的时间,现在升级到鸿蒙系统的用户量已经超过1。3亿,可见用户对于鸿蒙系统的期待和认可值都是非常高的。最近鸿蒙系统官方又对2。0版谷歌正开发Panlingual功能Android13支持为单个App指定语言IT之家12月24日消息,据AndroidPolice报道,谷歌正在为Android13开发一个名为Panlingual的功能,该功能允许用户为单个应用指定语言和相关设置,例如在社印度半导体百亿补贴进展成熟制程优先23年内首批产能落地财联社(上海,编辑史正丞)讯,当地时间周三,印度铁道通信电子和信息技术部部长AshwiniVaishnaw接受媒体采访,进一步向外界披露了该国政府旨在从零开始建立本土半导体产业的计台积电预计将于2022年末量产3nm芯片,早于首批M3A17芯片IT之家12月24日消息,DigiTimes援引消息人士的话称,台积电计划在2022年第四季度开始商业化生产基于其3nm工艺的芯片。完整的报告尚未发布,因此目前无法提供更多详细信息折叠屏手机加速渗透,供应链深度受益事件OPPO推出首款折叠屏手机OPPOFindN。屏幕方面,该机采用5。49英寸外屏(60Hz刷新率)7。1英寸内屏(自适应刷新率1Hz120Hz)。其采用12层复合屏幕结构,搭载中国穷与我何干?电池大王钟馨稼向美捐7千万后,口出狂言引众怒宁德时代是国人引以为傲的一家企业,成立于2011年的它,在短短十年内将新能源电池领域做到了天花板,与比亚迪书写中国新能源的篇章。宁德时代曾毓群凭借着宁德时代,曾毓群还在今年以345在新能源汽车产业变革中把握投资机遇本报记者万宇在造车新势力威马汽车D1轮融资投资者名单中,广发信德位列其中。广发信德智能制造与高科技投资部总经理杨立忠在接受中国证券报记者专访时表示,新能源汽车的变革是一个前所未有的