一、基础概念类问题
1. TCP 和 UDP 的区别是什么?
回答示例:
TCP:面向连接、可靠传输(通过三次握手建立连接,丢包重传)、保证数据顺序(如文件传输、网页访问)。
UDP:无连接、不可靠传输(不保证数据到达或顺序)、低延迟(如视频通话、实时游戏)。
加分点:补充实际应用场景(如 HTTP/3 基于 UDP 优化性能)。
2. HTTP 和 HTTPS 的区别?
核心区别:
HTTP:明文传输,端口 80,无安全性。
HTTPS:通过 SSL/TLS 加密传输,端口 443,需证书验证。
加分点:提到 HTTPS 的加密流程(非对称加密交换密钥 + 对称加密传输数据)。
3. 什么是三次握手和四次挥手?
三次握手(建立 TCP 连接):
客户端发送 SYN(同步请求)。
服务端返回 SYN-ACK(确认 + 同步)。
客户端发送 ACK(最终确认)。
四次挥手(断开连接):
客户端发送 FIN(终止请求)。
服务端返回 ACK(确认收到)。
服务端发送 FIN(自身终止请求)。
客户端返回 ACK(最终确认)。
加分点:解释为什么需要四次挥手(双方需独立确认关闭)。
二、应用场景类问题
4. 输入 URL 到页面显示的全过程?
回答流程:
DNS 解析域名成 IP 地址。
建立 TCP 连接(三次握手)。
发送 HTTP/HTTPS 请求。
服务器处理请求并返回响应。
浏览器解析 HTML/CSS/JS 并渲染页面。
关闭 TCP 连接(四次挥手)。
加分点:提到 CDN 加速、缓存机制(如强缓存/协商缓存)。
5. Cookie 和 Session 的区别?
Cookie:客户端存储(浏览器),有大小限制(约 4KB),可能被篡改。
Session:服务端存储(服务器内存/数据库),依赖 Session ID(通常通过 Cookie 传递)。
加分点:说明如何解决分布式 Session 共享问题(如 Redis 集中存储)。
三、问题排查类问题
6. 如何判断网络请求失败的原因?
排查步骤:
检查 HTTP 状态码(如 404 资源不存在、500 服务器错误)。
查看浏览器控制台或抓包工具(如 Wireshark、Chrome DevTools)。
验证 DNS 解析是否正确(
nslookup
或dig
)。测试网络连通性(
ping
、telnet
检查端口)。
加分点:举例实际调试经验(如跨域问题导致请求失败)。
7. 什么是跨域问题(CORS)?如何解决?
原因:浏览器同源策略禁止跨域请求(协议/域名/端口不同)。
解决方案:
服务端设置响应头:
Access-Control-Allow-Origin: *
。代理服务器转发请求(开发环境常用)。
JSONP(仅限 GET 请求,已逐渐淘汰)。
加分点:提到预检请求(Preflight Request)的作用。
四、开放性问题
8. 如何设计一个高并发的网络服务?
关键点:
负载均衡(如 Nginx 分发请求)。
无状态服务设计(方便横向扩展)。
异步处理(消息队列削峰填谷)。
缓存优化(Redis 减少数据库压力)。
加分点:结合具体技术栈(如微服务 + Kubernetes)。
9. 你对 HTTP/2 和 HTTP/3 有哪些了解?
HTTP/2:多路复用、头部压缩、服务器推送(基于 TCP)。
HTTP/3:基于 QUIC 协议(UDP 实现可靠传输),解决队头阻塞,更快连接建立。
加分点:对比传统 HTTP/1.1 的性能瓶颈。
五、HR 可能关注的软技能问题
10. 你在团队项目中如何解决网络相关的技术难点?
回答框架:
描述具体问题(如接口响应慢)。
分析原因(如数据库查询未优化、网络带宽不足)。
采取的解决方案(如引入缓存、压缩传输数据)。
最终效果(如延迟降低 50%)。
示例:在开发在线协作工具时,通过 WebSocket 替代轮询优化实时通信。