1. 浏览器的事件模型。事件代理?
2. promise可以中断吗?为什么? 如何模拟promise的阻断?
3. async和await ?实现原理?await后面跟一个什么? 执行出错怎么办?
异步操作,解决回调地狱
4. 导致内存泄漏有哪些情况? 怎么解决内存泄漏?
5. 浏览器和node的事件循环?eventloop
6. 同步任务执行完成之后,微任务和宏任务的执行?你知道微任务有哪些?网络请求是微任务还是宏任务? setTimeout和promise.then是怎么执行的?
7.说一下前端模块化的理解?使用过哪些模块化的规范? common.js是怎么实现?amd和cmd? 模块化怎么实现?
8. webpack 学习过吗? loader和plugin 有什么区别? 常用的有哪些load,
9. webpack的打包机制说一下?
10. http1.0 /http 1.1 /http2.0在并发请求上的区别?
1.0和2.0区别就是:
- HTTP/2采用二进制格式而非文本格式
- HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
- 使用报头压缩,HTTP/2降低了开销
- HTTP/2让服务器可以将响应主动“推送”到客户端缓存中
-
1.HTTP/1.0
每次TCP连接只能发送⼀个请求,当服务器响应后就会关闭这次连接,下⼀个请求需要再次建⽴TCP连接.2. HTTP/1.1
默认采⽤持续连接(TCP连接默认不关闭,可以被多个请求复⽤,不⽤声明Connection: keep-alive).
增加了管道机制,在同⼀个TCP连接⾥,允许多个请求同时发送,增加了并发性,进⼀步改善了HTTP协议的效率,
但是同⼀个TCP连接⾥,所有的数据通信是按次序进⾏的。回应慢,会有许多请求排队,造成”队头堵塞”。3.HTTP/2.0
加了双⼯模式,即不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,解决了队头堵塞的问题。
使⽤了多路复⽤的技术,做到同⼀个连接并发处理多个请求,⽽且并发请求的数量⽐HTTP1.1了好⼏个数量级。
增加服务器推送的功能,不经请求服务端主动向客户端发送数据。HTTP/1.1⻓连接和HTTP/2.0多路复⽤的区别?
HTTP/1.1:同⼀时间⼀个TCP连接只能处理⼀个请求, 采⽤⼀问⼀答的形式, 上⼀个请求响应后才能处理下⼀个请求. 由于浏览器最⼤TCP连接数的限制, 所以有了最⼤并发请求数的限制。
HTTP/2.0:同域名下所有通信都在单个连接上完成,消除了因多个 TCP 连接⽽带来的延时和内存消耗。单个连接上可以并⾏交错的请求和响应,之间互不⼲扰。
11. 网络安全,网络攻击 ?
XSS,即 Cross Site Script,中译是跨站脚本攻击;其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS。
XSS 攻击是指攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式。
攻击者对客户端网页注入的恶意脚本一般包括 JavaScript,有时也会包含 HTML 和 Flash。有很多种方式进行 XSS 攻击,但它们的共同点为:将一些隐私数据像 cookie、session 发送给攻击者,将受害者重定向到一个由攻击者控制的网站,在受害者的机器上进行一些恶意操作。
2.1 HttpOnly 防止劫取 Cookie
HttpOnly 最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的Javascript 访问带有 HttpOnly 属性的Cookie。
上文有说到,攻击者可以通过注入恶意脚本获取用户的 Cookie 信息。通常 Cookie 中都包含了用户的登录凭证信息,攻击者在获取到 Cookie 之后,则可以发起 Cookie 劫持攻击。所以,严格来说,HttpOnly 并非阻止 XSS 攻击,而是能阻止 XSS 攻击后的 Cookie 劫持攻击。
2.2 输入检查
不要相信用户的任何输入。 对于用户的任何输入要进行检查、过滤和转义。建立可信任的字符和 HTML 标签白名单,对于不在白名单之列的字符或者标签进行过滤或编码。
在 XSS 防御中,输入检查一般是检查用户输入的数据中是否包含 <,> 等特殊字符,如果存在,则对特殊字符进行过滤或编码,这种方式也称为 XSS Filter。
而在一些前端框架中,都会有一份 decodingMap, 用于对用户输入所包含的特殊字符或标签进行编码或过滤,
2.3输出检查
用户的输入会存在问题,服务端的输出也会存在问题。一般来说,除富文本的输出外,在变量输出到 HTML 页面时,可以使用编码或转义的方式来防御 XSS 攻击。例如利用 sanitize-html 对输出内容进行有规则的过滤之后再输出到页面中。
.CSRF
CSRF,即 Cross Site Request Forgery,中译是跨站请求伪造,是一种劫持受信任用户向服务器发送非预期请求的攻击方式。
4.CSRF 攻击的防范
当前,对 CSRF 攻击的防范措施主要有如下几种方式。
4.1 验证码
验证码被认为是对抗 CSRF 攻击最简洁而有效的防御方法。
从上述示例中可以看出,CSRF 攻击往往是在用户不知情的情况下构造了网络请求。而验证码会强制用户必须与应用进行交互,才能完成最终请求。因为通常情况下,验证码能够很好地遏制 CSRF 攻击。
但验证码并不是万能的,因为出于用户考虑,不能给网站所有的操作都加上验证码。因此,验证码只能作为防御 CSRF 的一种辅助手段,而不能作为最主要的解决方案。
4.2 Referer Check
根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。通过 Referer Check,可以检查请求是否来自合法的”源”。
12. 跨域问题如何解决?解决跨域请求有哪些方法?浏览器为什么会跨域?
13. vue如何进行组件的通信。