金三银四软件开发面试,提前一天临时抱佛脚?这20题背完,网络部分稳了。
说在前面
计算机网络是后端、全栈面试的必考模块。不管你面的是哪个方向,HTTP、TCP/IP、DNS这些考点几乎每家公司都会问。
下面整理了出现频率最高的20道题,答案力求简洁准确,适合背诵和理解。
HTTP 相关(6题)
Q1:HTTP 和 HTTPS 的区别?
答:
HTTP是明文传输,HTTPS在HTTP基础上加了TLS/SSL加密层
HTTPS默认端口443,HTTP是80
HTTPS需要SSL证书,数据传输是加密的,能防止中间人攻击
HTTPS握手有额外开销,但现代硬件加速后性能影响很小
Q2:HTTP 1.0、1.1、2.0 的主要区别?
答:
| 版本 | 核心特性 |
|---|---|
| HTTP/1.0 | 短连接,每次请求都要建立新TCP连接 |
| HTTP/1.1 | 持久连接(Keep-Alive)、管道化、Host头必须 |
| HTTP/2.0 | 多路复用、头部压缩(HPACK)、服务器推送、二进制分帧 |
Q3:GET 和 POST 的区别?
答:
语义:GET用于获取资源,POST用于提交数据
参数位置:GET参数在URL,POST参数在请求体
安全性:GET参数暴露在URL,不适合传敏感数据
幂等性:GET是幂等的(多次请求结果相同),POST不是
缓存:GET可被缓存,POST一般不会
Q4:HTTP 状态码,常见的有哪些?
答:
1xx:信息性(100 Continue)
2xx:成功(200 OK、201 Created、204 No Content)
3xx:重定向(301 永久、302 临时、304 未修改)
4xx:客户端错误(400 Bad Request、401 未认证、403 禁止、404 未找到)
5xx:服务端错误(500 服务器内部错误、502 Bad Gateway、503 服务不可用)
Q5:什么是 Cookie 和 Session?有什么区别?
答:
Cookie:存在客户端(浏览器),由服务端Set-Cookie返回,随请求自动携带,有大小限制(约4KB)
Session:存在服务端,通过SessionID关联用户,SessionID通常存在Cookie里
主要区别:Cookie存在客户端安全性相对低,Session存在服务端更安全,但增加服务器内存压力。
Q6:什么是跨域?如何解决?
答:
跨域指浏览器的同源策略限制:协议、域名、端口任一不同即为跨域。
常见解决方案:
CORS(最常用):后端在响应头加
Access-Control-Allow-OriginNginx代理:前端请求打到同源Nginx,Nginx转发到后端
JSONP(已过时,仅支持GET)
iframe + postMessage(适合特殊场景)
TCP/UDP 相关(6题)
Q7:TCP 和 UDP 的区别?
答:
| 特性 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠,有重传机制 | 不可靠,可能丢包 |
| 顺序 | 有序 | 无序 |
| 速度 | 较慢 | 快 |
| 应用场景 | HTTP、FTP、邮件 | 视频直播、DNS、游戏 |
Q8:TCP 三次握手过程是什么?
答:
客户端 → 服务端:发送SYN包(SYN=1,seq=x),进入SYN_SENT状态
服务端 → 客户端:发送SYN+ACK包(SYN=1,ACK=1,seq=y,ack=x+1),进入SYN_RCVD状态
客户端 → 服务端:发送ACK包(ACK=1,seq=x+1,ack=y+1),连接建立
为什么是三次? 两次握手无法确认客户端的接收能力;四次多余,三次刚好能确认双方的收发能力。
Q9:TCP 四次挥手过程是什么?
答:
客户端 → 服务端:FIN包,表示客户端不再发数据
服务端 → 客户端:ACK包,确认收到(此时服务端可能还有数据要发)
服务端 → 客户端:FIN包,服务端数据发完,请求关闭
客户端 → 服务端:ACK包,客户端等待2MSL后关闭
为什么四次? 因为TCP是全双工的,每个方向都需要单独关闭。
Q10:TCP 如何保证可靠传输?
答:
序列号+确认应答:每个数据包都有序列号,接收方发ACK确认
超时重传:超过一定时间未收到ACK,重新发送
流量控制:滑动窗口机制,避免发太快把接收方压垮
拥塞控制:慢启动、拥塞避免、快重传、快恢复
校验和:验证数据完整性
Q11:什么是 TIME_WAIT 状态?为什么要等 2MSL?
答:
主动关闭连接的一方(通常是客户端)在发出最后一个ACK后,会进入TIME_WAIT状态,等待2个MSL(最大报文生存时间)。
原因:
确保最后的ACK能到达对端(如果ACK丢失,对端会重发FIN,需要重新ACK)
让这条连接上旧的数据包在网络中消亡,防止被新连接误收
Q12:TCP 粘包是什么?怎么解决?
答:
TCP是字节流协议,没有消息边界。多个小数据包可能被合并发送,或者一个大数据包被拆分——接收方无法区分边界,这就是"粘包"。
解决方案:
固定长度:每条消息固定大小
分隔符:消息末尾加特殊字符(如换行符)
消息头+消息体:消息头包含消息体的长度
DNS 和网络基础(5题)
Q13:DNS 解析过程是什么?
答:
浏览器检查本地DNS缓存
查询系统Hosts文件
查询本地DNS服务器(通常是路由器或运营商)
本地DNS服务器递归查询:根DNS → 顶级域DNS(.com)→ 权威DNS
返回IP地址,本地DNS缓存结果
Q14:什么是 CDN?工作原理是什么?
答:
CDN(内容分发网络)是将内容缓存在各地节点服务器上,用户请求时就近获取,减少延迟。
工作原理:
用户请求 example.com/image.jpg
DNS解析返回最近CDN节点的IP
CDN节点有缓存直接返回;没有则回源(向源服务器获取)并缓存
Q15:输入URL到页面显示,发生了什么?
答:(高频大题,答要点)
DNS解析:域名 → IP地址
TCP连接:三次握手建立连接
发送HTTP请求:浏览器发送GET请求
服务器处理并返回:响应HTML内容
浏览器解析HTML:构建DOM树
加载CSS:构建CSSOM树
合并渲染树:DOM + CSSOM → Render Tree
布局(Layout):计算每个节点的位置和大小
绘制(Paint):像素渲染到屏幕
执行JavaScript:可能修改DOM,触发重排重绘
Q16:什么是 WebSocket?和 HTTP 的区别?
答:
WebSocket是一种在单个TCP连接上进行全双工通信的协议。
区别:
HTTP是单向的(请求-响应),WebSocket建立后双方可以随时互发数据
WebSocket基于HTTP握手升级(101 Switching Protocols)
适合实时场景:聊天、游戏、行情推送
Q17:什么是 OSI 七层模型?各层作用?
答:
| 层次 | 名称 | 代表协议 |
|---|---|---|
| 7 | 应用层 | HTTP、FTP、DNS、SMTP |
| 6 | 表示层 | SSL/TLS |
| 5 | 会话层 | NetBIOS |
| 4 | 传输层 | TCP、UDP |
| 3 | 网络层 | IP、ICMP |
| 2 | 数据链路层 | Ethernet、ARP |
| 1 | 物理层 | 物理介质、比特流 |
安全相关(3题)
Q18:什么是 SQL 注入?如何防御?
答:
SQL注入是攻击者通过构造恶意SQL片段插入查询,绕过认证或窃取数据。
防御:
参数化查询/预编译语句(最有效)
对用户输入进行校验和转义
最小权限原则(数据库账号只有必要权限)
Q19:什么是 XSS 攻击?如何防御?
答:
XSS(跨站脚本攻击):攻击者向网页注入恶意脚本,其他用户访问时被执行。
类型:存储型、反射型、DOM型。
防御:
对输出内容进行HTML转义(
<转为<)设置CSP(Content Security Policy)
Cookie设置HttpOnly防止JS读取
Q20:什么是 CSRF 攻击?如何防御?
答:
CSRF(跨站请求伪造):攻击者诱导已登录用户访问恶意网站,利用用户Cookie向目标网站发起请求。
防御:
CSRF Token:每次请求带上服务端生成的随机Token
验证Referer/Origin请求头
SameSite Cookie属性(Strict或Lax)
最后说一句
这20题背不下来的话,至少要理解原理——面试官追问的时候,死记硬背的答案很容易露馅,但真正理解的东西会融化在你的回答里。
你面试还遇到过的网络面试题?评论区分享下

夜雨聆风