前端常见面试题(二)

1. v-if与v-show的区别? 

v-if 控制的是元素的加载和销毁 v-show 控制的是元素的display属性 【频繁切换时应使用v-show】

2. vue的生命周期有哪些?

【第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子】【beforeCreate:加loading事件】【created :结束loading,初始化完成时的事件,异步请求】【mounted:挂载元素,获取到DOM节点,DOM 渲染在 mounted 中就已经完成了】【updated :对数据统一处理的相关函数】【beforeDestroy:停止事件,清除定时器】【nextTick:更新数据后立即操作dom】

  • 创建阶段(第一次页面加载执行) 1.beforeCreate 2.created

  • 挂载阶段(第一次页面加载执行) 1.beforeMount 2.mounted(页面打开后,发起请求)

  • 更新阶段(data 或者 props 修改时触发) 1.beforeUpdate 2.updated

  • 销毁阶段 1.beforeDestroy(清除全局数据,比如定时器等) 2.destroyed

3. vue路由传参:

  • query:在地址栏用类似于 get 请求方式去传参,没有限制。

  • params:隐式和显示。显示就是动态路由,隐式是使用 params 传递一个任意的数据,并且该数据在页面刷新后会丢失。

  • router-link路由导航,调用$router.push实现路由传参

4. vue路由守卫都有哪些?

  • 全局的前端路由守卫:beforeEach

  • 组件内的路由守卫:

    • 离开前:beforeRouterLeave

    • 更新:beforeRouterUpdate

    • 当前路由被激活:beforeEnter

5. vuex工作流程:

  • 使用:使用new Vuex.Store({})配置 store,最后引入到全局的main.js挂载到根实例上。

  • 工作流程: 1.客户端操作事件,dispatch 调用一个 action 2.对应的 action 处理参数,commit 一个 type 类型 3.mutation 接收一个 type 类型触发对应的函数,修改 state 值 4.state 更改后重新渲染

6. react类组件与函数组件的区别:

类组件(状态组件),函数组件(无状态组件,hook 组件)                             
类组件拥有 react 的全部特性,函数组件没有;类组件的 props 通过继承,函数组件的 props 通过传参;类组件的 state 状态只能通过 setState 改值;函数组件没有生命周期,类组件有;类组件 render 渲染,函数组件 return 渲染
hook:const [val,setVal]=useState();this.setState 是合并,setVal 直接替换

7. redux的工作流程:

  • view在redux中会派发action方法

  • action通过store的dispatch方法会派发给store

  • store接收action,连同之前的state,一起传递给reducer

  • reducer返回新的数据给store

  • store去改变自己的state

8. 什么是虚拟dom: 用 js 通过算法计算出来的 dom 对象,叫虚拟 dom

9. 循环渲染为什么加key?

由于循环渲染遍历出来的是通过js算法得到的虚拟dom,当需要修改其中某个元素的时候,如果不加key,每次变动,都要重新循环计算生成,对性能开销大。key就是每一个虚拟dom的身份证,表示元素的唯一标识,这样在修改的时候,通过key可以只对该元素修改。

10. MySQL与mongodb对比:

  • mysql的适用场景: 1.有事务要求,强一致性要求较高,涉及到金钱的时候 2.逻辑复杂,有较多join的需求

  • mongodb的适用场景: 1.数据结构不确定,可能发生改动的场景 2.事务安全性要求不高,数据扩展要求较高的时候

11. nodejs特性与优势:

  • 特性: 1.它是一个Javascript运行环境 2.依赖于Chrome V8引擎进行代码解释 3.异步事件驱动 4.非阻塞I/O 5.轻量、可伸缩,适于实时数据交互应用 6.单进程,单线程(这里指主线程) 7.性能出众

  • 优势: 1.Nodejs语法完全是js语法 2.NodeJs超强的高并发能力 3.实现高性能服务器 4.开发周期短、开发成本低、学习成本低

12.  节流与防抖:

  • 节流:当持续触发事件时,保证一定时间段内调用一次事件处理函数。(固定时间内执行一次)

  • 防抖:当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的事件到来之前,又一次触发了事件,就重新开始延时。防抖的含义就是让某个事件期限内,事件处理函数只执行一次。(用户不在触发,停止输入的时候执行)

13. BFC是什么?

  • BFC(Block Formatting Context,块格式化上下文) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

  • 特性: 1、属于同一个BFC的两个相邻容器的上下margin会重叠(重点) 2、计算BFC高度时浮动元素也参于计算(重点) 3、BFC的区域不会与浮动容器发生重叠(重点) 4、BFC内的容器在垂直方向依次排列 5、元素的margin-left与其包含块的border-left相接触 6、BFC是独立容器,容器内部元素不会影响容器外部元素

14. async、await和promise的联系?

async、await和promise不存在谁代替谁的说法,因为async、await是寄生于promise Generater的语法糖

15. 重绘与回流:

  • 重绘:一些元素需要更新属性,而这些属性只是影响元素外观风格,不会影响布局的。

  • 回流:元素的规模尺寸、布局、隐藏等改变而需要重新构建。

  • 什么是回流 当render tree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建,这就称为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候,这时候是一定会发生回流的,因为要构建render tree。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构造这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程称为重绘。

  • 什么是重绘 当render tree中的一些元素需要更新属性,而这些属性只是影响元素的外观,风格,而不会影响布局的,比如background-color,则就称为重绘。

  • 区别: 回流必将引起重绘,而重绘不一定会引起回流。 比如:只有颜色改变的时候就只会发生重绘而不会引起回流 当页面布局和几何属性改变时就需要回流。 比如:添加或者删除可见的DOM元素,元素位置改变,元素尺寸改变——边距、填充、边框、宽度和高度,内容改变时都需要回流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值