http相关面试题,拿去吧

 

 https

https是在http与tcp之间增添了一个加密/身份验证层(SSL)

 

http与https区别

  1. http是明文传输信息,而https则是具有安全性的SSL加密传输,比http更安全
  2. http和https连接方式不同,端口也不一样,http是80,https是443

 

http无状态协议是什么?怎么解决

无状态协议是对于事务处理没有记忆能力

使用Cookie来解决无状态

 

常用的HTTP方法

  1. GET、POST
  2. PUT: 传输文件
  3. DELETE:删除文件
  4. OPTIONS:查询相应URI支持的HTTP方法

 

完整HTTP请求所经历的7个步骤

  1. 建立TCP连接
  2. 浏览器向服务器发送请求行
  3. 浏览器发送请求头
  4. 服务器应答
  5. 服务器发送应答头
  6. 服务器向浏览器发送数据
  7. 服务器关闭TCP连接

 

http的keep-alive

TCP连接在发送后将仍然保持打开状态,浏览器可以继续通过相同的连接发送请求,节省了建立连接所需时间和网络带宽

 

Ajax请求过程

  1. 创建XMLHttpRequest对象
  2. 设置回调函数
  3. 与服务器建立链接,open()
  4. 向服务器发送数据,send()
  5. 在回调函数中判断响应状态并处理数据

 

常见HTTP状态码

200:请求成功

301:永久性重定向

302:临时重定向

403:请求的对应资源禁止被访问

404:服务器无法找到对应资源

500:服务器内部错误

503:服务器正忙

 

网页从输入网址到加载完成的过程

  1. 浏览器输入url
  2. 域名解析(DNS解析),解析获取相应IP地址
  3. 浏览器向服务器发起并建立tcp连接
  4. 浏览器向服务器发送http请求
  5. 服务器接收请求,将数据发送浏览器
  6. 浏览器获取文件,解析html源码
  7. 生成Dom树,解析css样式,js交互,完成渲染

 

浏览器同源策略

同源策略是指"协议+域名+端口"三者相同

分为两种,DOM 同源策略,XMLHttpRequest 同源策略

 

跨域方式

  1. 通过jsonp跨域
  2. document.domain + iframe跨域
  3. location.hash + iframe
  4. window.name + iframe跨域
  5. postMessage跨域
  6. nginx代理跨域
  7. nodejs中间件代理跨域
  8. WebSocket协议跨域

 

网站性能优化

  1. 减少HTTP请求
  2. 利用浏览器缓存
  3. 减少DOM操作
  4. 首屏加载和按需加载
  5. 减少浏览器重排和重绘
  6. js和css文件合并压缩
  7. CSS资源放顶部,JS资源放底部
  8. 图片使用png格式

 

虚拟DOM

用js实现DOM树,用diff算法对每一层比较,找出最小变更,然后改变实际DOM,达到性能优化的方案

 

浏览器重排和重绘

重排是DOM元素的几何变化,DOM树结构变化,渲染树需要重新计算
重绘是当页面中的元素样式的改变并不影响它在文档流中的位置,比如改变背景,颜色,字体等等,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观

 

常见浏览器内核

IE浏览器:Trident内核

Chrome浏览器:早期Webkit内核,现为Blink内核

Firefox浏览器:Gecko内核

Safari浏览器:Webkit内核

360浏览器:Trident + Webkit双内核

QQ浏览器:Trident + Webkit双内核

 

常见兼容性问题

  1. 1.   不同浏览器的默认margin、padding不同

解决方案:css里增加通配符*{margin:0;padding:0}

  1. 2.   事件绑定不同

IE浏览器: dom.attachEvent()

其他:dom.addEventListener()

  1. 3.   Ajax略有不同

IE浏览器:ActiveXObject对象

其他:XMLHttpReuest对象

posted @ 2020-04-27 11:24  一杯龙井解千愁  阅读(273)  评论(0编辑  收藏  举报