草稿

164 阅读2分钟

一、javascript:

1、 数据类型:引用类型和普通类型

  • 区别:
    普通类型:放在栈里相当于一对一操作;
    引用类型:存放在堆里,栈里放着他的引用值,js不能操作引用类型的
    深拷贝和浅拷贝(深拷贝最简单的方式是JSON.paras,问题是函数、正则。。不能拷贝到)

2、作用域:作用域、作用域链和闭包

  1. 作用域的问题: let、var、const
    区别:

    • let 存在暂时性死区,有自己的作用域,
    • var会有变量提升,
    • const作为常量但是如果是对象,那里面的key的值会发生改变,因为是引用类型)
  2. 闭包:什么是闭包、 闭包的好处:创建私有变量,减少全局变量,防止变量名污染
    闭包的坏处:不会被垃圾回收机制回收造成内存泄漏,
    如何解决闭包的坏处:将用过之后的变量设置null

3、原型链

4、this:this指向、改变this指向

  1. 普通this在函数执行的时候确定,谁调用指向谁,严格模式下指向window
  2. 箭头函数在函数创建的时候确定,一般指向上下文
  • 通过call、apply、bind可以修改this指向
  • call、apply区别是call的参数是字符串,apply是数组 ,
  • bind跟他俩的区别是返回一个函数,需要a.bind(b)()去执行才生效

5、event-loop事件循环:

  1. 微任务(promise、MutationObserver、node中process.nextTick )、
  2. 宏任务(setTimeOut,setInterval,点击事件)

6、事件执行机制:事件委托(事件代理),如何实现委托

JavaScript 事件触发有三个阶段。 1. 捕获阶段 2. 目标阶段 3. 冒泡阶段 事件冒泡和事件捕捉

7、优化:防抖、节流、文档碎片、虚拟列表、高性能API

8、URL渲染过程

9、设计模式:观察者模式和订阅发布模式

二、es6:

箭头函数
解构赋值
new Set,new Map
新增数组、对象方法

三、css:

1、BFC:如何实现BFC

什么是BFC

2、重排重绘:什么是重排重绘、如何减少重排重绘

影响布局变化会引起重排,影响样式的背景颜色之类的会发生重绘
发生重排一定会发生重绘,重绘不一定重排
实现隐藏最好用visibility: hidden;别用display:none因为位置没发生变化只发生了重绘
css优化就是减少重排重绘

3、flex布局

四、HTML:

语义化标签

新增HTML5标签的作用

五、vue:

1、双向绑定

2、传值

六、webpack: