前端面试题整理 - javascript
1、如何中断ajax请求?Ajax.abort()超时自动退出2、Target 和 currentTarget 的区别Target:当前被点击的元素currentTarget:当前所绑定事件的元素3、谈一下宏任务和微任务?宏任务:当前调用栈中执行的任务微任务:当前宏任务执行完,在下一个宏任务开始执行之前需要完成的任务是微任务,可以理解为回调时间,Promise.then()nextTick()等宏
1、如何中断ajax请求?
Ajax.abort()
超时自动退出
2、Target 和 currentTarget 的区别
Target:当前被点击的元素
currentTarget:当前所绑定事件的元素
3、谈一下宏任务和微任务?
宏任务:当前调用栈中执行的任务
微任务:当前宏任务执行完,在下一个宏任务开始执行之前需要完成的任务是微任务,可以理解为回调时间,Promise.then() nextTick()等
宏任务的事件是放在callback queue中,由事件触发线程维护,
微任务的事件是放在微任务队列中,由js引擎线程维护
4、说一下继承的几种方式和优缺点?
1、构造函数继承,使用call或apply,将父对象的构造函数绑定到子
2、原型继承 将子对象的prototype指向父对象的一个实例
3、组合继承
缺点:
原型链继承:子类会继承共享父类的所有属性,并且没有办法向父类型的构造函数传递参数
构造函数继承:无法复用
组合继承:原型链继承 加上 构造函数继承
5、说一下闭包?
闭包的实质是函数嵌套而形成的作用域链
函数A 有函数B 函数B能访问函数A的变量,函数B就是闭包函数
6、Export 和 export default 的区别?
Export xxx
Import { xxx } from ‘./’
Export default xxx
Import xxx from ‘./’
7、什么是会话cookie,什么是持久cookie?
Cookie是服务器返回的,有expire date是持久cookie,没有的是会话cookie
8、Get 和 post的区别
1、传参
2、Get 放在url上,做多能传2048。Post没有限制
3、Get后退不会影响,post后退会重新提交
4、Get可以被缓存,post不可以缓存
5、Get只支持url编码,post支持多种编码
6、Get请求的记录会留在历史记录中,post请求不会
7、Get只支持ascii字符,post没有限制
谈谈http协议中的短轮询、长轮询、长连接、短连接?
长短轮询和长短连接的区别?
短轮询:间隔一段时间就调用接口,不论接口是否返回数据
长轮询:服务器接到请求保持连接,直到有消息才返回响应信息并关闭连接
http1.0 默认是短连接 http1.1 默认是长连接
长连接:加上keep-alive
短连接:每进行一次http操作,就建立一次连接,任务结束就中断连接
http 篇
1、Http结构?
请求行,请求头,空行,请求体
请求行包含 http版本号、url、请求方式
响应行包含版本号、状态码,原因
2、http头部都有哪些字段?
请求头:cache-control 是否使用缓存
Connection:keep-alive 与服务器的连接状态
Host 主机域
返回头:cache-control
Etag: 唯一标识,缓存用的
Last-modified:最后修改时间
3、网络osi 七层模型都有哪些?TCP是那一层的?
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP属于传输层
4、http 1.0, http1.1,http2有什么区别?
http0.9只支持get请求
http1.0 添加了post、head、put、option、delete等
http1.1 增加了长链接 keep-alive,增加了host域,节约带宽
http2多路复用,头部压缩、服务器推进
5、localStorage 存满了怎么办?
1、划分域名:各域名下的存储空间由各业务组统一规划使用
2、跨页面传数据,考虑单页应用,采用url传输数据
3、调用别人的存储
6、说一下 Http 缓存策略,有什么区别,分别解决了什么问题?
强缓存:expires cache-control
Expires:服务端和客户端时间存在不一致,可能会出现问题
存在版本问题,到期之前的修改客户端是不可知的
Cache-control:存在版本问题,到期之前的修改客户端是不可知的
协商缓存:etag/if-none-match last-modified/if-modified-since
Last-modified:只要资源发生修改,无论内容是否发生实质性变化,都会将资源返回客户端
以时刻作为标识,无法识别一秒内进行多次修改的情况
某些服务器不能精准的得到文件最后修改时间
如果文件是通过服务器动态生成的,更新时间永远是生成时间
Etag/id-none-match:计算etag需要性能消耗
分布式服务器存储的情况下,计算etag的算法不一样。会导致浏览器间etag不匹配的情况
更多推荐

所有评论(0)