当前位置: 首页 > news >正文

【C++上岸】C++常见面试题目--网络篇(第二十一期)

📡 C++网络面试题精讲:从Socket到HTTP协议,一篇搞定!

面试官最爱问的网络八股文,看完直接拿offer! 💪
文末附赠 「网络协议速查表」 🎁


文章目录

      • 📡 C++网络面试题精讲:从Socket到HTTP协议,一篇搞定!
      • 🖥️ 一、Socket编程核心函数
        • **服务端流程**
        • **客户端流程**
      • 🌐 二、URI vs URL
      • ⏳ 三、TIME_WAIT与2MSL
      • 🛌 四、服务端监听状态
      • 🔐 五、数字证书详解
        • **是什么?**
        • **包含内容**:
      • 📬 六、GET vs POST
      • 🎫 七、Session机制
        • **是什么?**
        • **工作流程**:
      • 🍪 八、Session vs Cookie
      • 📡 九、IP地址 vs MAC地址
        • **IP地址**
        • **MAC地址**
      • 💎 附:网络协议速查表


🖥️ 一、Socket编程核心函数

服务端流程
  1. socket():创建套接字(int socket(int domain, int type, int protocol);
    • 例:int server_fd = socket(AF_INET, SOCK_STREAM, 0);
  2. bind():绑定IP和端口
    sockaddr_in address{};  
    address.sin_family = AF_INET;  
    address.sin_addr.s_addr = INADDR_ANY;  
    address.sin_port = htons(8080);  
    bind(server_fd, (sockaddr*)&address, sizeof(address));  
    
  3. listen():监听连接请求(listen(server_fd, backlog);
  4. accept():接受客户端连接(返回新socket)
    int client_socket = accept(server_fd, nullptr, nullptr);  
    
客户端流程
  1. connect():连接服务器
    connect(client_fd, (sockaddr*)&server_addr, sizeof(server_addr));  
    
  2. send()/recv():收发数据(TCP)
    • send(socket, buffer, size, flags);
    • recv(socket, buffer, size, flags);

💡 函数详解

  • accept():阻塞直到有新连接,返回专属通信socket
  • send() 可能只发送部分数据,需循环调用!
  • recv() 返回0表示连接关闭

🌐 二、URI vs URL

URIURL
统一资源标识符统一资源定位符
包含URL和URNURL的子集
ISBN:978-7-04-052324https://www.example.com/img/logo.png

核心区别:URL强调资源位置,URI强调资源身份。所有URL都是URI,反之不成立!


⏳ 三、TIME_WAIT与2MSL

为什么客户端关闭后要等待2MSL?

  1. 确保最后一个ACK到达(防止服务端重发FIN)
  2. 让旧连接的报文在网络中消失(避免新连接收到脏数据)
  3. MSL(Maximum Segment Lifetime):报文最大生存时间(通常30s-2min)

⚠️ 公式TIME_WAIT=2×MSL\text{TIME\_WAIT} = 2 \times \text{MSL} TIME_WAIT=2×MSL
面试考点:若服务器主动关闭连接,也会进入TIME_WAIT状态!


🛌 四、服务端监听状态

listen()后无客户端连接时:

  • 进程状态阻塞(默认行为)
  • 底层机制:内核将进程放入等待队列,直到SYN到达
  • 优化方案:可通过fcntl()设置非阻塞模式

📌 关键命令netstat -tuln | grep 8080 查看端口状态


🔐 五、数字证书详解

是什么?

由CA(证书颁发机构)签发的电子身份证,用于验证服务器身份。

包含内容
  1. 公钥
  2. 持有者信息(域名、组织等)
  3. 证书有效期
  4. CA的数字签名
  5. 签名算法(如SHA256-RSA)

🔒 HTTPS流程
客户端用CA公钥验证证书签名 → 验证通过后取出服务器公钥加密数据


📬 六、GET vs POST

特性GETPOST
数据位置URL中(明文)请求体(可加密)
安全性低(浏览器缓存)较高
数据长度受URL长度限制无限制
幂等性✅(多次请求结果相同)
典型场景搜索、翻页登录、支付

🎫 七、Session机制

是什么?

服务端存储的用户状态信息(如登录状态、购物车数据)。

工作流程
  1. 客户端登录 → 服务端创建Session(存储于内存/Redis)
  2. 返回SessionID(通常通过Cookie传递)
  3. 后续请求携带SessionID → 服务端检索对应数据

⚠️ 面试坑点:Session默认存储在服务器,Cookie存储在客户端!


🍪 八、Session vs Cookie

特性SessionCookie
存储位置服务端客户端
安全性高(数据不传输)低(可能被窃取)
生命周期会话结束/过期可设置长期有效
存储大小无限制(理论上)≤4KB

💡 经典方案:将SessionID存入Cookie,敏感数据存Session!


📡 九、IP地址 vs MAC地址

IP地址
  • 作用:网络层寻址(跨网络通信)
  • 特性
    • 逻辑地址(可配置)
    • 标识整个网络中的设备
    • 例:192.168.1.100
MAC地址
  • 作用:数据链路层寻址(同一局域网内通信)
  • 特性
    • 物理地址(烧录在网卡)
    • 标识局域网内唯一设备
    • 例:00-B0-D0-63-C2-26

🌟 核心公式
数据包=IP头部+MAC头部+Payload\text{数据包} = \text{IP头部} + \text{MAC头部} + \text{Payload} 数据包=IP头部+MAC头部+Payload


💎 附:网络协议速查表

TCP三次握手:SYN → SYN+ACK → ACK  
TCP四次挥手:FIN → ACK → FIN → ACK  
HTTP状态码:  200 OK      401 Unauthorized   404 Not Found  500 Internal Server Error  

🚀 终极提示:面试时遇到协议问题,先画流程图!掌握TCP状态转换图稳赢!


恭喜你坚持到这里!👏 本期我们覆盖了计算机网络中的基本原理,并实战解决了九个高频面试题。记住:理解其中的实现思想比硬背八股更重要,多练习才能在面试中游刃有余。😊 如果有疑问,欢迎评论区讨论~ 下期见!🚀

http://www.xdnf.cn/news/1489843.html

相关文章:

  • 蓓韵安禧DHA高含量好吸收特性深度解析
  • tomcat下载
  • 性能优化——首屏优化
  • rabbitmq 重试机制
  • Windows netstat 命令使用说明
  • ZSet
  • 5G NR PDCCH之信号调制
  • 【redis 基础】redis 的常用数据结构及其核心操作
  • GD32自学笔记:5.定时器中断
  • 3D 版接雨水
  • 【系统架构设计(20)】构件与中间件技术
  • 写程序or打游戏(组合计数)
  • 美股市场股票数据API对接文档
  • compute_class_weight函数介绍
  • 独角数卡对接蓝鲸支付平台实现个人
  • 26考研——内存管理_内存管理策略(3)
  • 解锁服务器网络配置新姿势:Wisdom SSH 助力之旅
  • (RDFS)随机深度特征选择方法解释:简而言之,RDFS主要针对的是恶意的服务器,它建立在客户端是诚实的前提下。
  • 【PS2025全网最新版】稳定版PS2025保姆级下载安装详细图文教程(附安装包)(Adobe Photoshop)
  • 深入理解OpenHarmony中的BUILD.gn:从语法到模块化构建
  • Java Modbus通信实战(四):Modbus通信测试与故障排查
  • 深入理解 X25519 与 Ed25519:密钥交换与签名验签全流程解析
  • kafka特性和原理
  • 系统架构性能优化与容灾设计深度解析
  • Spring的容器扩展机制三大基石
  • Spark mapreduce 的一个用法
  • SQLite的基本操作
  • 使用 nginx-module-vts 进行 Nginx 流量监控
  • 【多模态学习】QA3:FFN的作用?Embedding生成方法的BERT和Word2Vec?非线性引入的作用?
  • 单片机的bin、exe、elf、hex文件差异