第十章(HTTP与网络 面试真题)

四季读书网 3 0
第十章(HTTP与网络 面试真题)

一、HTTP 协议真题

1. HTTP 和 HTTPS 的区别?

参考答案:

特性
HTTP
HTTPS
安全性
明文传输
SSL/TLS 加密
端口
80
443
证书
需要 SSL 证书
SEO
一般
更好(排名加分)
速度
稍快
稍慢(握手开销)

HTTPS 工作流程:

  1. 客户端发起请求
  2. 服务器返回证书
  3. 客户端验证证书
  4. 协商对称密钥
  5. 使用对称密钥通信

2. HTTP 方法有哪些?

参考答案:

  • GET:获取资源
  • POST:创建资源
  • PUT:更新资源(完整)
  • PATCH:部分更新
  • DELETE:删除资源
  • HEAD:获取头部信息
  • OPTIONS:查询支持的 方法
  • CONNECT:建立隧道
  • TRACE:追踪路径

3. GET 和 POST 的区别?

参考答案:

特性
GET
POST
用途
获取数据
提交数据
参数位置
URL 查询参数
请求体
长度限制
浏览器限制
无限制
缓存
可缓存
不可缓存
安全性
低(URL 明文)
相对安全
幂等
幂等
非幂等

4. HTTP 状态码有哪些?

参考答案:

1xx:信息响应

  • 100 Continue
  • 101 Switching Protocols

2xx:成功响应

  • 200 OK
  • 201 Created
  • 204 No Content

3xx:重定向

  • 301 Moved Permanently
  • 302 Found
  • 304 Not Modified

4xx:客户端错误

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 405 Method Not Allowed

5xx:服务端错误

  • 500 Internal Server Error
  • 502 Bad Gateway
  • 503 Service Unavailable

5. 什么是三次握手?

参考答案:

客户端                    服务端
  |                        |
  |------ SYN = 1 -------->|  第一次握手
  |<----- SYN = 1, ACK = 1--|  第二次握手  
  |------ ACK = 1 -------->|  第三次握手
  |                        |
  1. 第一次:客户端发送 SYN=1,确认希望建立连接
  2. 第二次:服务器确认并同步(SYN=1, ACK=1)
  3. 第三次:客户端确认(ACK=1)

目的:确保双方都能收发数据


二、网络安全真题

6. 什么是四次挥手?

参考答案:

客户端                    服务端
  |                        |
  |------ FIN = 1 -------->|  第一次挥手
  |<----- ACK = 1 ---------|  第二次挥手
  |<----- FIN = 1 ---------|  第三次挥手
  |------ ACK = 1 -------->|  第四次挥手
  |                        |
  1. 第一次:客户端发送 FIN,希望断开连接
  2. 第二次:服务器确认(可能还有数据发送)
  3. 第三次:服务器完成发送,发送 FIN
  4. 第四次:客户端确认,断开连接

7. 什么是 XSS 攻击?

参考答案:

XSS(跨站脚本攻击)注入恶意脚本到页面。

类型:

  • 反射型:URL 参数注入
  • 存储型:存储到数据库
  • DOM 型:直接操作 DOM

防御:

  • 转义 HTML
  • CSP 内容安全策略
  • HTTP-only Cookie
  • 验证输入
// 转义
functionescapeHTML(str) {
return str.replace(/[&<>"']/gchar => ({
'&''&amp;',
'<''&lt;',
'>''&gt;',
'"''&quot;',
"'"'&#39;'
    }[char]));
}

8. 什么是 CSRF 攻击?

参考答案:

CSRF(跨站请求伪造)利用用户已登录的身份发起恶意请求。

防御:

  • CSRF Token
  • 验证 Referer
  • SameSite Cookie
// 服务端生成 Token
app.get('/form'(req, res) => {
const csrfToken = crypto.randomBytes(32).toString('hex');
    res.cookie('csrf_token', csrfToken);
    res.render('form', { csrfToken });
});

9. 什么是 SQL 注入?

参考答案:

攻击者通过输入恶意 SQL 语句来操作数据库。

// 不安全
const query = `SELECT * FROM users WHERE name = '${username}'`;

// 安全:参数化查询
const query = 'SELECT * FROM users WHERE name = ?';
db.execute(query, [username]);

防御:

  • 参数化查询
  • 输入验证
  • 最小权限原则

10. 浏览器缓存机制?

参考答案:

缓存类型:

  • 强缓存:Expires / Cache-Control
  • 协商缓存:Last-Modified / ETag
# 强缓存
Cache-Controlmax-age=3600
ExpiresWed, 21 Oct 2025 07:28:00 GMT

# 协商缓存
Last-ModifiedWed, 21 Oct 2025 07:28:00 GMT
ETag"33a64df551425fcc55e4d42a1487957799f"

11. HTTP 1.0/1.1/2.0 的区别?

参考答案:

特性
HTTP 1.0
HTTP 1.1
HTTP 2.0
持久连接
不支持
支持
支持
管道化
不支持
支持
支持
多路复用
不支持
不支持
支持
Header压缩
不支持
不支持
支持
Server Push
不支持
不支持
支持
安全
可选
可选
强制 HTTPS

12. HTTP 队头阻塞?

参考答案:

HTTP/1.1 队头阻塞:

  • 同一连接只能串行请求
  • 解决:多域名、CDN

HTTP/2 队头阻塞:

  • TCP 层面的队头阻塞
  • 解决:HTTP/3 使用 QUIC

13. TLS/SSL 握手过程?

参考答案:

1. Client Hello → 服务器支持的安全套件
2. Server Hello ← 选择的加密算法 + 证书
3. 客户端验证证书
4. 客户端发送 Pre-master key(加密)
5. 服务器解密
6. 双方生成会话密钥
7. 加密通信开始

14. CDN 原理?

参考答案:

CDN(内容分发网络)将内容缓存到离用户最近的节点。

用户 → CDN边缘节点 → 源站
         ↓
      缓存命中

优点:

  • 加速访问
  • 减轻源站压力
  • 隐藏源站 IP

15. WebSocket 和 HTTP?

参考答案:

特性
HTTP
WebSocket
通信方式
请求-响应
全双工
header
推送
轮询/长轮询
支持
连接
短连接
长连接
// WebSocket
const ws = newWebSocket('ws://example.com/socket');

ws.onopen = () =>console.log('连接');
ws.onmessage = (e) =>console.log(e.data);
ws.onclose = () =>console.log('关闭');

ws.send('消息');
ws.close();

16. OAuth 2.0 流程?

参考答案:

1. 用户点击"第三方登录"
2. 跳转授权页面
3. 用户授权
4. 回调带 code
5. 后端用 code 换 token
6. 用 token 获取用户信息

17. Token 和 Session?

参考答案:

特性
Token
Session
存储
客户端
服务端
扩展性
安全性
需考虑泄露
相对安全
移动端
友好
复杂

18. CORS 原理?

参考答案:

CORS(跨域资源共享)解决跨域问题。

// 服务端设置
app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin''*');
    res.header('Access-Control-Allow-Methods''GET,POST,PUT,DELETE');
    res.header('Access-Control-Allow-Headers''Content-Type,Authorization');
next();
});

19. DNS 解析过程?

参考答案:

1. 浏览器缓存
2. 本地 hosts 文件
3. 本地 DNS 解析器缓存
4. DNS 服务器(递归查询)
   - 根域名服务器
   - 顶级域名服务器
   - 权威域名服务器

20. CDN 回源?

参考答案:

回源是 CDN 缓存未命中时回源站获取资源。

回源策略:

  • 首次访问必然回源
  • 缓存过期回源
  • 刷新缓存(手动触发)

📌 面试重点:HTTP/HTTPS区别、状态码、三次握手、四次挥手、安全防护是高频考点。

抱歉,评论功能暂时关闭!