一、HTTP 协议真题
1. HTTP 和 HTTPS 的区别?
参考答案:
HTTPS 工作流程:
客户端发起请求 服务器返回证书 客户端验证证书 协商对称密钥 使用对称密钥通信
2. HTTP 方法有哪些?
参考答案:
GET:获取资源 POST:创建资源 PUT:更新资源(完整) PATCH:部分更新 DELETE:删除资源 HEAD:获取头部信息 OPTIONS:查询支持的 方法 CONNECT:建立隧道 TRACE:追踪路径
3. GET 和 POST 的区别?
参考答案:
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 -------->| 第三次握手
| |
第一次:客户端发送 SYN=1,确认希望建立连接 第二次:服务器确认并同步(SYN=1, ACK=1) 第三次:客户端确认(ACK=1)
目的:确保双方都能收发数据
二、网络安全真题
6. 什么是四次挥手?
参考答案:
客户端 服务端
| |
|------ FIN = 1 -------->| 第一次挥手
|<----- ACK = 1 ---------| 第二次挥手
|<----- FIN = 1 ---------| 第三次挥手
|------ ACK = 1 -------->| 第四次挥手
| |
第一次:客户端发送 FIN,希望断开连接 第二次:服务器确认(可能还有数据发送) 第三次:服务器完成发送,发送 FIN 第四次:客户端确认,断开连接
7. 什么是 XSS 攻击?
参考答案:
XSS(跨站脚本攻击)注入恶意脚本到页面。
类型:
反射型:URL 参数注入 存储型:存储到数据库 DOM 型:直接操作 DOM
防御:
转义 HTML CSP 内容安全策略 HTTP-only Cookie 验证输入
// 转义
functionescapeHTML(str) {
return str.replace(/[&<>"']/g, char => ({
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
}[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-Control: max-age=3600
Expires: Wed, 21 Oct 2025 07:28:00 GMT
# 协商缓存
Last-Modified: Wed, 21 Oct 2025 07:28:00 GMT
ETag: "33a64df551425fcc55e4d42a1487957799f"
11. HTTP 1.0/1.1/2.0 的区别?
参考答案:
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?
参考答案:
// 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?
参考答案:
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区别、状态码、三次握手、四次挥手、安全防护是高频考点。
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!