八股文对应届生来说是面试的重中之重,它决定了你能否找到一份不错的工作;对于已经工作的人来说,八股文可以对工作中遇到的问题提供解决办法的基础,当然,积累解决问题的经验同样重要。
1. 数组对象有哪些原生方法
pop、push、shift、unshift、slice、splice、concat、reverse、join、toString、split、forEach、every、indexOf
2. object.is() 的作用
用于确定两个值是否相同,它接受两个参数,这两个参数是要比较的值,并返回一个布尔值指示两个参数是否相同
Object.is(value1,value2)
3. Vue是单向数据流还是双向数据流
单向数据流
4. TS 和 JS的区别
- TS引入了”类“的概念
- TS引入了模块概念,可以把声明,数据,函数和类封装在模块中
- JS没有重载概念,TS有重载
- TS增加了接口interface、泛型、类、类的多态、继承等
- JS有的类型:boolean类型、number类型、string类型、array类型、null、undefined
TS新增的类型:tuplpe类型(元素类型)、enum类型(枚举类型)、any类型(任意类型)、void类型、never类型
5. TCP三次握手
第一次握手:建立链接时,客户端发送syn包到服务器,并进入SYN_SEND状态,等待服务器确认
第二次握手:服务器收到SYN包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手
注意:
1)必须要三次握手
2)三次握手未完成不能携带数据
6. 3开头的状态码
3XX 重定向
301:永久移动
302:临时移动
304:未修改
7. 与协商缓存有关的响应头与请求头
- 响应头:Last-Modified(资源的最后修改时间) 请求头:If-Modified-Since
- 响应头:ETag(若服务器资源更新,则ETag也会更新) 请求头:If-None-Match
ETag 和 Last-Modified 的区别:ETag是用hash内容对比判断是否资源发生改变
Last-Modified是通过最后一次修改时间来判断资源是否发生改变
8. ElenentUI命名的根据
根据BEM——前端命名方法论,避免命名冲突
9. 什么是原型链?为什么要使用原型链?
一、什么是原型链
原型链就是实例对象和原型对象之间的链接,每个函数都有一个prototype属性,这个prototype属性就是原型对象,我们拿这个函数通过new构造函数创建出来的实例对象,这个实例对象自己会有一个指针(_proto_)指向它的构造函数的原型对象,这样构造函数和实例对象之间就通过(_proto_)连接在一起形成链子
二、为什么要使用原型链1)为了实现继承,简化代码,实现代码重用
2) 只要是这个链条上的内容,都可以被访问和重用
10. 浏览器事件模型
浏览器事件模型主要分为三个阶段:1)捕获阶段 2)目标阶段 3)冒泡阶段
11. JS执行机制(事件循环)
- 先执行执行栈中的同步任务
- 异步任务(回调函数)放入任务队列中
- 一旦任务栈中所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行
12. JS原型继承的方式
1)原型链继承
2)构造函数继承
3)组合继承
4)原型式继承
5)寄生组合式继承
13. ES6中是怎么实现原型链的
Class类
在ES6中新增类的概念,使用class关键字声明一个类,之后这个类来实例化对象,类抽象了对象的公共部分,它泛指某一大类(class)对象特指某一个,通过类实例化一个对象