乐于分享
好东西不私藏

金三银四软件开发面试必背:计算机网络高频 20 题

金三银四软件开发面试必背:计算机网络高频 20 题

金三银四软件开发面试,提前一天临时抱佛脚?这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:什么是跨域?如何解决?

答:

跨域指浏览器的同源策略限制:协议、域名、端口任一不同即为跨域。

常见解决方案:

  1. CORS(最常用):后端在响应头加 Access-Control-Allow-Origin

  2. Nginx代理:前端请求打到同源Nginx,Nginx转发到后端

  3. JSONP(已过时,仅支持GET)

  4. iframe + postMessage(适合特殊场景)

TCP/UDP 相关(6题)

Q7:TCP 和 UDP 的区别?

答:

特性TCPUDP
连接面向连接无连接
可靠性可靠,有重传机制不可靠,可能丢包
顺序有序无序
速度较慢
应用场景HTTP、FTP、邮件视频直播、DNS、游戏

Q8:TCP 三次握手过程是什么?

答:

  1. 客户端 → 服务端:发送SYN包(SYN=1,seq=x),进入SYN_SENT状态

  2. 服务端 → 客户端:发送SYN+ACK包(SYN=1,ACK=1,seq=y,ack=x+1),进入SYN_RCVD状态

  3. 客户端 → 服务端:发送ACK包(ACK=1,seq=x+1,ack=y+1),连接建立

为什么是三次? 两次握手无法确认客户端的接收能力;四次多余,三次刚好能确认双方的收发能力。

Q9:TCP 四次挥手过程是什么?

答:

  1. 客户端 → 服务端:FIN包,表示客户端不再发数据

  2. 服务端 → 客户端:ACK包,确认收到(此时服务端可能还有数据要发)

  3. 服务端 → 客户端:FIN包,服务端数据发完,请求关闭

  4. 客户端 → 服务端:ACK包,客户端等待2MSL后关闭

为什么四次? 因为TCP是全双工的,每个方向都需要单独关闭。

Q10:TCP 如何保证可靠传输?

答:

  • 序列号+确认应答:每个数据包都有序列号,接收方发ACK确认

  • 超时重传:超过一定时间未收到ACK,重新发送

  • 流量控制:滑动窗口机制,避免发太快把接收方压垮

  • 拥塞控制:慢启动、拥塞避免、快重传、快恢复

  • 校验和:验证数据完整性

Q11:什么是 TIME_WAIT 状态?为什么要等 2MSL?

答:

主动关闭连接的一方(通常是客户端)在发出最后一个ACK后,会进入TIME_WAIT状态,等待2个MSL(最大报文生存时间)

原因:

  1. 确保最后的ACK能到达对端(如果ACK丢失,对端会重发FIN,需要重新ACK)

  2. 让这条连接上旧的数据包在网络中消亡,防止被新连接误收

Q12:TCP 粘包是什么?怎么解决?

答:

TCP是字节流协议,没有消息边界。多个小数据包可能被合并发送,或者一个大数据包被拆分——接收方无法区分边界,这就是"粘包"。

解决方案:

  1. 固定长度:每条消息固定大小

  2. 分隔符:消息末尾加特殊字符(如换行符)

  3. 消息头+消息体:消息头包含消息体的长度

DNS 和网络基础(5题)

Q13:DNS 解析过程是什么?

答:

  1. 浏览器检查本地DNS缓存

  2. 查询系统Hosts文件

  3. 查询本地DNS服务器(通常是路由器或运营商)

  4. 本地DNS服务器递归查询:根DNS → 顶级域DNS(.com)→ 权威DNS

  5. 返回IP地址,本地DNS缓存结果

Q14:什么是 CDN?工作原理是什么?

答:

CDN(内容分发网络)是将内容缓存在各地节点服务器上,用户请求时就近获取,减少延迟。

工作原理:

  1. 用户请求 example.com/image.jpg

  2. DNS解析返回最近CDN节点的IP

  3. CDN节点有缓存直接返回;没有则回源(向源服务器获取)并缓存

Q15:输入URL到页面显示,发生了什么?

答:(高频大题,答要点)

  1. DNS解析:域名 → IP地址

  2. TCP连接:三次握手建立连接

  3. 发送HTTP请求:浏览器发送GET请求

  4. 服务器处理并返回:响应HTML内容

  5. 浏览器解析HTML:构建DOM树

  6. 加载CSS:构建CSSOM树

  7. 合并渲染树:DOM + CSSOM → Render Tree

  8. 布局(Layout):计算每个节点的位置和大小

  9. 绘制(Paint):像素渲染到屏幕

  10. 执行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片段插入查询,绕过认证或窃取数据。

防御:

  1. 参数化查询/预编译语句(最有效)

  2. 对用户输入进行校验和转义

  3. 最小权限原则(数据库账号只有必要权限)

Q19:什么是 XSS 攻击?如何防御?

答:

XSS(跨站脚本攻击):攻击者向网页注入恶意脚本,其他用户访问时被执行。

类型:存储型、反射型、DOM型。

防御:

  1. 对输出内容进行HTML转义(<转为&lt;

  2. 设置CSP(Content Security Policy)

  3. Cookie设置HttpOnly防止JS读取

Q20:什么是 CSRF 攻击?如何防御?

答:

CSRF(跨站请求伪造):攻击者诱导已登录用户访问恶意网站,利用用户Cookie向目标网站发起请求。

防御:

  1. CSRF Token:每次请求带上服务端生成的随机Token

  2. 验证Referer/Origin请求头

  3. SameSite Cookie属性(Strict或Lax)

最后说一句

这20题背不下来的话,至少要理解原理——面试官追问的时候,死记硬背的答案很容易露馅,但真正理解的东西会融化在你的回答里。

你面试还遇到过的网络面试题?评论区分享下