接上篇面试总结,本文主要作为查漏补缺记录面试review list。
JS基础
- null和undefined区别
- 字符编码(ASCII,Unicode,UTF*8,Base64)
- 闭包(定义、作用)
- 运算符 对象相加过程
- 介绍下原型链(解决的是继承问题吗)
- 标准库toString()、Object.getOwnPropertyDescriptor(obj, ‘a’)、Object.defineproperty()
- 数组
- push,pop,unshift,shift,reverse,splice,sort
- contact,slice,map,forEach,every,some,reduce
- 数组复制
- 类数组转化为数组(延伸:类数组对象有哪些?nodelist和htmlcollection有哪些区别)
- 面向对象
- new(实现过程)
- 不加new后果?如何避免?
- Object.create()的理解
- this的实质?javascript为什么要设计this?
- apply、call、bind手写代码
- 对象的拷贝
- 严格模式,用处
- setTimeout和setInterval运行机制
- js实现类的继承
- 如何实现深拷贝:1、JSON.parse(JSON.stringify(arr)) 、2、jquery的extends({}, {a:1}) 3、自己用递归实现
- 6种跨域方法
- 正则
- 零宽断言(?=pattern)、负前瞻(?!pattern)
- 捕获和非捕获(?:)((?
abc)组名为xlj) - 贪婪和非贪婪(默认都是贪婪的,后面加?就是非贪婪。+?、*?、{2,5}?尽可能的少)
- 反向引用 ‘aabbccddee’.match(/(\w)\1/g)
- 反义
[^aeiou]、\W \S \D \B
- 常见设计模式7种。工厂模式、单例、策略、装饰者、适配器模式、代理模式、中介者模式、发布/订阅和观察者模式区别在哪,各自用在哪里。
- es6
- 手写promise、手写Promise.all(),手写Promise.race()
- promise、async、Generator有什么区别
- 对async、await的理解,内部原理
- ES6中的map和原生的对象有什么区别
- 缓存
- service worker离线缓存应用解决方案
- 了解pwa原理
- 事件代理原理?如何自己实现?优缺点?