面试题

VUE

1. MVVM

M:数据模型层,负责数据的修改以及业务逻辑
V:视图层,将数据模型转化为试图展示出来
VM:监听M的数据变化,控制视图层行为,处理用户交互,简单的说就是同步M和V对象,链接M和V

2. 生命周期

从创建到销毁的整个过程。
从创建开始,初始化数据,编译模板,挂载dom,渲染更新-》渲染销毁等一些列的过程。
作用:
有很多生命周期函数,为了更方便的控制整个vue实例的逻辑

3. vue实现双向绑定的原理

采用数据劫持结合发布者-订阅者模式,通过Object.defineProtoperty()劫持各个属性的getter/setter,在数据发生变化时,发布消息给订阅者,触发相应的监听回调。当把一个普通的ji对象传给Vue实例作为他的data选项时,Vue将被遍历他的属性,用O.dP()创建他的getter/setter属性,但是在内部他们让vue追踪依赖。在属性访问和修改时发生变化。
(vue的数据双向绑定 将MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,通过Observer来监听自己的model的数据变化,通过Compile来解析编译模板指令(vue中是用来解析 {{}}),最终利用watcher搭起observer和Compile之间的通信桥梁,达到数据变化 —>视图更新;视图交互变化(input)—>数据model变更双向绑定效果。)

4. VUEX

vuex采用集中式存储管理应用的所有组件状态,实现了多组件数据共享,从而建立一个store的数据管理库,把需要共享的数据放到里面,在需要的地方取出来当作初始数据,也可以在组件内部通过dispatch或者调剂commit的方法来修改原始数据,从而实现数据共享。
vuex内部采用了new Vue 来将Store 内部数据进行[响应式化],所以说vuex是利用vue内部机制的库,与vue高度契合。

5. route和router的区别

route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。
而router是“路由实例”对象包括了路由的跳转方法,钩子函数等

6. Vue 组件data为什么必须是函数

因为每个组件都是vue实例,组件共享data属性,当data值是一个引用类型时,改变一个会影响其他。

js

1. 进程,线程 -》事件循环机制

进程,线程
进程时系统分配的独立资源,是cpu资源分配的基本单位,进程是一个或多个线程组成
线程是进程的执行流,是cpu调度和分配的基本单位,同一个进程之中,多个线程之间是共享进程的资源的。

浏览器是多线程
GUI线程,js线程,事件触发线程,定时器触发线程,http请求线程。

事件循环
分为同步异步任务,首先同步任务放到主线程中,然后把异步任务执行的结果反倒任务队列中,当主线程为空时,也就是主线程任务执行完毕,然后读取任务队列中任务放到主线程执行。每次主线程执行完毕后都会读取任务队列任务,如此反复执行。

宏任务微任务
第一次事件循环中,JavaScript 引擎会把整个 script 代码当成一个宏任务执行,执行完成之后,再检测本次循环中是否寻在微任务,存在的话就依次从微任务的任务队列中读取执行完所有的微任务,再读取宏任务的任务队列中的任务执行,再执行所有的微任务,如此循环。JS 的执行顺序就是每次事件循环中的宏任务-微任务。

2.输入url

  1. 输入url,通过dns解析获取真实ip地址
  2. 客户端打开一个socket与ip,端口建立TCP链接。
  3. 开始布局,计算渲染树在设备视口内确切大小和位置。
  4. 接着绘制,把每个节点转化为屏幕上的实际像素。
  5. 浏览器将各层信息发送给GPU,GPU合成显示在屏幕上面。

3. 闭包

有权访问另一个函数作用域中变量的函数。

特性:

  1. 函数套函数
  2. 内部函数可以引用外层的参数和变量
  3. 参数变量不会被垃圾回收机制回收

看法:
使用闭包主要是为了设计私有的方法和变量。

优点:

  1. 实现封装和缓存,避免全局变量污染。

缺点:

  1. 消耗内存(常驻内存),不正当使用会造成内存泄漏。

webpack

1. 对webpack看法

模块化打包工具,管理模块依赖,并编译出模块所需要的静态文件。
管理html,js,css 高效的开发。
对于不同类型的文件有相应的模块加载器。
模块打包器分析模块之间的依赖,生成优化合并后的静态资源。

2. 打包优化

打包体积:

  • 按需引入
  • 开启代码压缩
  • 优化soure-map
  • 删除不必要的插件,把开发环境和生产环境区分开发

打包时间

  • 采取合适loader,loader过滤不需要的目录
  • 个别的loader开启cache 如babel-laoder
  • 第三方库采用外部引入方式
  • 优化构建时搜索的路径,指明需要构建的目录
  • 提取公共代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值