腾讯云智 后端开发-C++ 一面

1. 自我介绍

这个看个人具体情况了

2. 实习中测试业务介绍

在实习期间,我xxxx 巴拉巴拉说一堆, 如果没有也不会问这条的 看个人情况

3. 计算机网络分层介绍

常见的网络分层模型有OSI七层模型与TCP/IP模型。OSI模型自下而上依次为物理层、数据链路层、网络层、传输层、会话层、表示层与应用层;TCP/IP模型通常划分为网络接口层、网络层、传输层及应用层。分层设计降低了系统复杂性,各层独立实现特定功能,方便维护与升级。

4. TCP相较于UDP是可靠的原因

TCP是面向连接的协议,在数据传输前必须建立可靠连接。它通过序列号、确认应答(ACK)、重传机制、流量控制和拥塞控制等手段来保证数据的有序、完整传送,而UDP则没有这些机制,传输过程中可能出现数据丢失及乱序的情况。

5. TCP除了握手还保证数据可靠的机制

TCP通过以下机制确保数据可靠交付:

  • 重传机制:超时未确认的数据包会被重传。
  • 序列号与确认号:确保数据包按正确顺序到达。
  • 滑动窗口:控制未确认数据量,实现流量控制。
  • 拥塞控制:根据网络状况动态调整传输速率。
  • 校验和:检测数据在传输过程中的错误。

6. TCP三次握手机制过程

  1. 客户端发送带SYN标志的数据包,并选择初始序列号,向服务端请求建立连接。
  2. 服务端收到后回复带SYN和ACK标志的数据包,确认客户端请求并发送自己的初始序列号。
  3. 客户端收到后再发送ACK数据包,确认服务端的响应,连接建立成功。

7. 为什么三次握手中需要第三步

第三步保证客户端成功收到服务端的SYN-ACK,确保双方初始序号同步并建立一个稳定、双向确认的连接,从而防止网络延迟或丢包导致的不一致情况。

8. 计算机网络中滑动窗口及其目的

滑动窗口是一种流量控制机制,允许发送方在未收到确认数据前连续发送多个数据包,从而提高数据传输效率,同时防止接收方被过量数据淹没。其目的是在保证传输效率的同时,确保数据传输的可靠性。

9. 算法层面,滑动窗口一般怎么实现

利用环形缓冲区或队列保存未确认数据,维护窗口的起始和结束指针。收到ACK后窗口前移并释放已确认数据,若超时则重传窗口内未确认的数据,同时结合拥塞控制动态调整窗口大小,保证传输效率与可靠性。

10. 判断两个单向链表是否交叉

方法一:计算链表长度法

  1. 分别遍历两个链表计算长度。
  2. 比较两个链表的尾节点,若不同则不相交。
  3. 较长链表先走长度差步数,再同时遍历,比较节点指针是否相同,相同处即为交点。

方法二:双指针法

  1. 定义两个指针分别指向两个链表头。
  2. 当一个指针走到末尾时切换到另一个链表头继续遍历。
  3. 最终两个指针若相遇,则该处即为交点;若均为NULL,则无交点。

下面是C++代码实现示例:

#include <iostream>
using namespace std;

struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(nullptr) { }
};

// 方法一:计算链表长度法
int getLength(ListNode* head) {
    int len = 0;
    while (head) {
  

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++ 常考面试题总结 文章被收录于专栏

本专栏系统梳理C++方向, 大中厂高频高频面试考点 , 内容皆来自真实面试经历,从基础语法、内存管理、STL与设计模式,到操作系统与项目实战,结合真实面试题深度解析,帮助开发者高效查漏补缺,提升技术理解与面试通过率,打造扎实的C++工程能力.

全部评论
已经开了吗
点赞 回复 分享
发布于 02-26 22:17 湖北

相关推荐

评论
5
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务