前端面试题(HTTP)相关

1.http和https的区别

HTTP
  • 是一种用于在万维网上传输数据的基本协议。
  • 不提供数据加密,信息以明文形式传输,存在一定安全风险。
  • 相对来说传输效率较高。
HTTPS
  • 在 HTTP 的基础上加入了 SSL/TLS 加密协议。
  • 对传输的数据进行加密,保障了数据的安全性和完整性。
  • 能有效防止数据在传输过程中被窃取、篡改等。
  • 由于加密过程,在一定程度上会影响传输效率,但能提供更高的安全性。

HTTPS 已逐渐成为网站的主流配置,尤其是对于涉及敏感信息(如用户登录、支付等)的网站,以保障用户的信息安全和隐私。

2.一句话概括* TCP三次握手

TCP 三次握手是这样一个过程:首先,客户端向服务器发送一个带有 SYN(同步序列编号)标志的数据包,表示请求建立连接;服务器收到后,会回传一个带有 SYN 和 ACK(确认)标志的数据包,表示同意建立连接并确认收到客户端请求;最后,客户端再回传一个带有 ACK 标志的数据包,确认收到服务器的回应,至此完成三次握手,双方建立起可靠的 TCP 连接。

概括:TCP 三次握手是客户端与服务器在建立 TCP 连接时进行的三次信息交互过程,用于确保双方通信的准备就绪和连接的可靠建立。

3.* Cookie、session        Storage、localStorage 

区别:

Cookie

  • 大小有限制,通常为 4KB 左右。
  • 会随 HTTP 请求一起发送到服务器,可用于服务器端识别用户状态等。
  • 可以设置过期时间,若不设置则在浏览器关闭后失效。

sessionStorage

  • 存储容量一般比 Cookie 大。
  • 数据仅在当前会话(当前页面及其打开的子页面)有效,关闭浏览器窗口后数据会被清除。
  • 不会随 HTTP 请求发送到服务器。

localStorage

  • 存储容量较大。
  • 数据持久化存储,除非手动删除,否则一直存在。
  • 也不会随 HTTP 请求发送到服务器。
作用:

Cookie:用于在客户端和服务器之间传递少量的状态信息,帮助服务器识别用户和维持会话,可用于实现一些个性化设置的跨页面传递。

sessionStorage:主要用于在当前浏览器会话期间保存临时数据,在同一会话的不同页面间共享数据,比如保存一些临时的表单状态等。

localStorage:用于长期存储数据,即使浏览器关闭或重新打开,数据依然存在,可用于保存用户偏好设置、离线数据等。

4.对 HTML 语义化标签的理解

例如,<header> 表示头部,<nav> 表示导航,<main> 表示主要内容区域,<article> 表示独立的文章内容,<footer> 表示底部等。这些语义化标签使得网页的结构更加清晰、合理,提升了整体的质量和可用性。

HTML 语义化涉及多种元素,以下是一些常见的语义化元素:

  • <header>:表示页面或章节的头部。
  • <nav>:用于导航部分。
  • <main>:页面主要内容区域。
  • <article>:表示一篇独立的文章。
  • <section>:章节或区域。
  • <aside>:侧边栏内容。
  • <footer>:页面或章节的底部。

5. click 在 ios 上有 300ms 延迟,原因及如何解决?

  • 禁用缩放:通过设置<meta name="viewport" content="width=device-width, user-scalable=no">禁用页面缩放,这样就不会有双击缩放的操作,从而避免了 300ms 的延迟。
  • 使用 FastClick:FastClick 是一个专门用于解决移动端浏览器 300ms 点击延迟问题的库。它的原理是在检测到touchend事件后,立即触发一个模拟的click事件,并阻止浏览器在 300ms 之后真正触发的click事件。
  • 使用 touch-action 属性:将 touch-action 属性设置为none,可以禁用浏览器的默认触摸行为,从而避免 300ms 的延迟。

6.介绍知道的 http 返回的状态码

  • 200 OK:表示请求成功。
  • 201 Created:表示资源成功创建。
  • 204 No Content:表示请求成功处理,但没有返回内容。
  • 301 Moved Permanently:表示资源已永久移动到新位置。
  • 302 Found / Moved Temporarily:表示资源临时移动。
  • 304 Not Modified:表示资源未被修改,可使用缓存内容。
  • 400 Bad Request:表示请求存在语法错误或无法被服务器理解。
  • 401 Unauthorized:表示未经授权,需要认证。
  • 403 Forbidden:表示禁止访问,通常是权限问题。
  • 404 Not Found:表示请求的资源未找到。
  • 500 Internal Server Error:表示服务器内部错误。
  • 502 Bad Gateway:表示网关错误。
  • 503 Service Unavailable:表示服务不可用。
  • 504 Gateway Timeout:表示网关超时。

7.前端优化

  • 减少 HTTP 请求:合并文件、使用雪碧图等。
  • 压缩资源:对 CSS、JavaScript、HTML 等进行压缩。
  • 优化图片:使用合适的图片格式,压缩图片大小。
  • 使用 CDN(内容分发网络):加速资源加载。
  • 缓存策略:合理设置浏览器缓存。
  • 代码优化:减少不必要的代码,优化 JavaScript 算法等。
  • 懒加载:如图片懒加载、异步模块懒加载。
  • 预加载:提前加载重要资源。
  • 优化页面渲染:避免阻塞式的 JavaScript 执行,合理使用 CSS 动画和过渡。
  • 减少 DOM 操作:降低频繁操作 DOM 带来的性能开销。
  • 提升首屏加载速度:优先加载关键资源。
  • 优化字体加载:避免字体加载导致页面闪烁等问题。

8.GET 和 POST 的区别

  • 请求目的:GET 用于从服务器获取数据,POST 用于向服务器提交数据。
  • 参数传递:GET 请求的参数通常通过 URL 进行传递,以?作为分隔符,参数以键值对的形式附加在 URL 后面;POST 请求的参数则放在请求体中。
  • 数据可见性:GET 请求的参数在 URL 中可见,可能会被浏览器缓存、记录在历史记录中,并且可以被收藏为书签;POST 请求的参数不会显示在 URL 中,相对更加安全。
  • 数据长度限制:GET 请求的 URL 长度有限制,一般不超过 2048 个字符;POST 请求可以传输较大的数据量,具体限制取决于服务器的配置。
  • 数据类型支持:GET 请求只接受 ASCII 字符,而 POST 请求没有限制,可以支持多种编码方式。
  • 安全性:GET 请求的参数直接暴露在 URL 中,不太适合传输敏感信息;POST 请求的参数相对更加安全。
  • 幂等性:GET 请求是幂等的,即多次重复请求不会产生额外的副作用;POST 请求不是幂等的,多次提交可能会产生不同的结果。
  • 缓存处理:GET 请求可以被浏览器缓存,而 POST 请求默认不会被缓存。
  • TCP 数据包:GET 请求产生一个 TCP 数据包;POST 请求产生两个 TCP 数据包。

在实际应用中,应根据具体的需求和场景选择合适的请求方法。如果需要获取数据,通常使用 GET 请求;如果需要提交数据或进行数据修改,通常使用 POST 请求。同时,还需要考虑安全性、数据量、缓存等因素,以确保请求的正确和高效执行。

9.在地址栏里输入一个 URL,到这个页面呈现出来,中间会发生什么?(完整版)

  1. DNS 解析:将域名解析为对应的 IP 地址。
  2. 建立 TCP 连接:客户端与服务器通过三次握手建立可靠的连接。
  3. 发送 HTTP 请求:客户端向服务器发送包含请求方法、请求头和请求体等信息的请求。
  4. 服务器处理请求:服务器接收到请求后,进行相应的处理,如查询数据库、执行逻辑代码等。
  5. 服务器返回响应:服务器将处理结果以 HTTP 响应的形式返回给客户端,包括响应状态码、响应头和响应体等。
  6. 浏览器接收响应:客户端的浏览器接收响应,并进行相应的处理。
  7. 解析 HTML:浏览器解析 HTML 文档,构建文档对象模型(DOM)。
  8. 加载资源:如 CSS 文件、JavaScript 文件、图片等,可能会继续发起请求获取。
  9. 执行 JavaScript 代码:如果有 JavaScript 代码,会按顺序执行。
  10. 页面渲染:根据 DOM 和 CSS 样式等进行页面的最终渲染呈现。

10.输入 URL 到页面加载显示完成发生了什么?(精简版)

  1. DNS 解析获取 IP 地址。
  2. 建立 TCP 连接。
  3. 发送 HTTP 请求。
  4. 服务器处理并返回响应。
  5. 浏览器接收响应,解析 HTML 构建 DOM,加载资源,执行 JavaScript,最后完成页面渲染。

11.描述一下 XSS 和 CRSF 攻击?防御方法?

XSS(跨站脚本攻击):攻击者在目标网站上注入恶意脚本代码,当其他用户访问该页面时,恶意代码会被执行,可能导致用户信息被盗取、会话被劫持等。

防御 XSS 的方法

  • 对用户输入进行严格的验证和过滤。
  • 对输出到页面的数据进行编码处理。

CSRF(跨站请求伪造):攻击者诱导用户在已登录的其他网站上执行恶意操作,利用用户的合法身份进行非法请求。

防御 CSRF 的方法

  • 使用验证码。
  • 验证请求来源。
  • 为关键请求添加令牌。

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值