8月面试总结

83 阅读4分钟

1.父子组件传值,兄弟组件传值

  1. 首先引用子组件,然后components中定义,父组件中引用该组件,父组件通过v-bind传值。然后子组件中定义props变量。子组件向父组件中传值使用this.$emit()方法传递方法名与变量。
  2. 兄弟组件传值。 兄弟组件说明有共同的父组件,兄组件通过this.emit()传参到父组件,然后子组件在父组件中用ref标记,this.$refs赋值参数.

2.介绍一下vuex

vuex是公用状态管理的框架。 vuex包括state,mutations,actions,getters. 需要在state中定义共享的对象。mutation中定义改变对象的方法,action中通过调用mutation改变,action不能直接改变。 多个组件同时调用一个数据的时候使用,为什么不用local storage或者其他?因为vuex会双向绑定,数据更改视图,视图也更改数据。

3.vue可以怎样优化

  1. v-for绑定key,绑定key后可以提高DOM更新效率。
  2. 多组件调用数据时使用vuex
  3. 使用keep-alive缓存数据
  4. 引用组件按需引入element ui
  5. v-if,v-show区分条件
  6. computed,watch区分使用场景
  7. computed是计算属性,依赖于其他数据,使用computed,可以利用它缓存性质。
  8. watch观察作用,某些数据的监听回调,每次监听的数据变化时都会执行后续操作。
  9. 图片懒加载使用v-lazy
  10. 路由懒加载

介绍一下什么是闭包?

闭包就是函数内包含一个函数的情况,函数内可以引用函数变量,使某个变量不被回收,闭包可以解决for循环问题。 闭包中使用自执行函数。

请说出一件工作中比较困难的事情

合同分期付款中有一个bug,就是它有时候会置为0,有时候不置为0。这个原因比较复杂,因为有个watch属性,会根据输入的金额进行赋值,有很多判断条件,需要一层层去找。

虚拟DOM介绍

什么是虚拟DOM,对浏览器真实DOM的模拟。生成的步骤: 构建DOM树-生成样式表-构建render树-确定节点坐标-绘制页面 为什么选择用虚拟DOM?因为JS操作真实DOM的代价比较高,会从头解析一边DOM结构,用虚拟DOM时,10次更新可以一次全部更新上去。速度更快。

DIFF算法

ES6新特性

  1. let const let,const的作用域只在语句块之内 const定义常量
  2. 箭头函数 箭头函数方便阅读,清晰明了。 箭头函数可以省略参数。
  3. promise promise是生成结果后就不会再改变的函数,包括promise.all() promise.race()函数
  4. 结构解析 数组结构解析
  5. 函数默认参数
  6. set map
  7. symbol
  8. rest参数 ...函数中传参的时候可以用到 rest参数用到的时候需注意它后面不能加其他参数。
  9. aysnc await await相当于promise.then()
  10. 链判断符 student?.age ,null判断符号 student??
  11. proxy代理: proxyTable: { // 这里的‘/api’就指向了127.0.0.1:3000 "/api": { target: "http://127.0.0.1:3000", // 接口域名 secure: false, // 如果是https接口,需要配置这个参数 changeOrigin: true, //是否跨域 // pathRewrite: { // "^/api": "" //需要rewrite的, // } } } 15.象的扩展:扩展运算符 扩展运算符相当于rest参数的逆运算,将一个数组转为用逗号分隔的参数序列,主要用于函数调用。 function a(...arr) 16.aray.from() 将类似数组的对象转为真正的数组 17.组的find()和findIndex() find()函数返回符合条件的元素 findIndex返回符合条件的元素的索引。找不到返回-1 数组的fill方法返回一个定值 inclueds返回一个值,表示某个数组是否包含给定的值

axios封装 定义baseUrl,根据环境变量判断。 可以拦截请求,根据res code判断,比如操作时候以及被退出了。

事件委托 子级元素委托父级元素

原生JS中函数继承如何做?

image.png

settimeout异步的原因是什么? 在指定时间后等JS引擎空闲的时候进行运行

map ,foreach区别是?

map会return ,foreach不会

项目中登录权限是如何做的呢?

首先在需要登录才能访问的页面中定义一个字段requireAuth,然后在导航钩子里面进行拦截,用vuex存储token,如果有token,就跳转到应该跳转的页面,如果没有token,就跳转登录页面。

前端如何学习的,自学加公司经验。 DIV CSS,H5,CANVAS,JS再学框架。

HTTP状态码

301 永久重定向 302临时重定向 304 not modifiy 请求的网页未修改过 400 bad request 报文存在语法错误 401 请求没有权限 403 forbidden 禁止访问 404 服务器找不到资源 500服务器错误 503 服务器暂时无法处理请求

1XX 信息性状态码 接受的请求正在处理 2XX Success 成功状态码 请求正常处理完毕 3xx Redirection 重定向状态码 需要进行附加操作以完成请求 4XX 客户端错误状态码 5XX 服务器错误状态码 服务器请求出错