上海面试题总结(二)持续更新中。。。

跨域

1. 何为跨域?

同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

2. 如何解决跨域?

  1. CORS
  2. JSONP
  3. Nginx反向代理
  4. Node中间件代理
  5. postMessage

3. 请求发出去了么?

跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。

4. vue项目中proxyTable反向代理原理

浏览器是禁止跨域的,但是服务端不禁止,在本地运行npm run dev等命令时实际上是用node运行了一个服务器,因此proxyTable实际上是将请求发给自己的服务器,再由服务器转发给后台服务器,做了一层代理,因为不会出现跨域问题。
vue-cli的proxyTable用的是http-proxy-middleware中间件

九种跨域方式实现原理(完整版)

浏览器缓存

  1. 浏览器发送请求前,根据请求头的expires和cache-control判断是否命中(包括是否过期)强缓存策略,如果命中,直接从缓存获取资源,并不会发送请求。如果没有命中,则进入下一步。
  2. 没有命中强缓存规则,浏览器会发送请求,根据请求头的last-modified和etag判断是否命中协商缓存,如果命中,直接从缓存获取资源。如果没有命中,则进入下一步。
  3. 如果前两步都没有命中,则直接从服务端获取资源。

强缓存:

不会向服务器发送请求,直接从缓存中读取资源。强缓存需要服务端设置expires和cache-control。

协商缓存:

协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。

缓存位置

状态 类型 说明
200 form memory cache 不请求网络资源,资源在内存当中,一般脚本、字体、图片会存在内存当中
200 from disk cache 不请求网络资源,在磁盘当中,一般非脚本会存在内存当中,如css等
200 资源大小数值 请求服务器下载最新资源
304 报文大小 请求服务端发现资源没有更新,使用本地资源

在这里插入图片描述

浏览器缓存

DNS 解析

DNS解析的目的就是找ip地址。
当用户在浏览器输入www.baidu.com并按下回车键后,DNS域名解析过程:
浏览器缓存->系统缓存->路由器缓存->ISP DNS 缓存->递归搜索

写给前端工程师的DNS基础知识

闭包

何为闭包?

闭包作用?

闭包缺点

设计模式

设计模式: 重用代码,更易理解,代码工程化;

观察者模式 Observer Pattern

Observer模式也叫观察者模式、订阅/发布模式,是由GoF提出的23种软件设计模式的一种。
Vue2.0使用的该模式
核心思想:观察者只要订阅了被观察者的事件,那么当被观察者的状态改变时,被观察者会主动去通知观察者,而无需关心观察者得到事件后要去做什么,实际程序中可能是执行订阅者的回调函数。
观察者模式包含两种角色:

  • 观察者(订阅者)
  • 被观察者(发布者)

中介者模式

代理模式

Vue3.0的Proxy使用的改模式

单例模式

工厂模式

装饰者模式

JavaScript 常见设计模式解析

Vuex,state和getters区别,mutation和action区别

性能优化

虚拟DOM

diff算法

Vue中key的作用

圣杯布局&&双飞翼布局

css垂直居中

Vue双向绑定原理(2.0和3.0)

nextTick的原理

keep-alive组件,原理

权限控制

addRouters

vue-router的两种模式

  • hash
  • history:需要服务器端支持

渲染大量数据

虚拟列表优化

单页面应用SPA()

猜你喜欢

转载自blog.csdn.net/qq_42816550/article/details/114267556