关于相关问题的自我回答

1.TCP和UDP有什么区别,为什么TCP可靠,UDP如何识别可靠呢?

答:tcp传输协议更稳,是有链接的协议,而udp则是无链接,一个要进行三次握手四次挥手一个不需要直接传就可以了,所以一般来说tcp就需要用于一些重要的消息传输比如说你的wechat消息传输,而udp则可以用于一些消息不是那么"重要"的传输,比如说直播画面的传输,这些我们是容忍一些丢包的,TCP可靠的原因源自于它的相关机制,比如说ack,会确定对方是否能收到消息,还有拥塞窗口机制以及流量控制还有超时重传等机制来确保其稳定性,如果想要udp实现这种可靠的识别就需要让udp进行"tcp"化,比如在信息的开头加一些序列号ack确认是否回以及超时重传机制等,我们可以根据需要的场景来客制化udp的传输能力来达到其稳定性

2.进程和线程的区别,它们的上下文切换保存什么信息?进程和线程的上限由什么决定?

答:进程是操作系统调用资源的最小单位,而线程是cpu执行调度的最小单位,进程的切换开销大,但是线程不大,同一个进程内任意一个线程崩溃,整个进程都会被操作系统销毁,所有线程一同退出;不同进程之间相互隔离,一个进程崩溃不影响其他进程。线程保存的是cpu中寄存器,进程则是保存的线程的资源以及修改相关的页表即独立的地址空间等信息,进程的上限数量由pid_max决定的线程也是

3.c++中多态的实现方式,虚函数表是什么,析构函数或者说构造函数可以是虚函数吗?虚函数和纯虚函数的区别,抽象类是什么,菱形继承问题是什么怎么解决?

答:多态首先分为静态和动态多态,其中静态多态的实现方式是编译时就决定了,有函数重载运算符重载和模板,动态多态则需要通过虚函数来实现,在每个虚类对象中都存放的有对应的虚表用于存放相关的虚函数的地址,其中虚表指针初始化后指向其地址,因为vptr即虚表指针需要在构造函数内初始化后才能调用而所以说构造函数不能是虚函数不然vptr不初始化不能调用就不能实现相关的多态,而析构函数则可以,因为一般动态多态的实现要基类对象的的指针或引用指向派生类的对象,也就是说如果delete的话只会delete掉基类对象而派生类不会delete所以我们要加虚函数即virtual关键字这样我们就能delete了,虚函数可以实例化创造对象但是纯虚函数不可以,纯虚函数需要子类重写父类的虚函数但是不是纯虚函数就不需要,只要有一个纯虚函数就是抽象类,菱形问题是指b和c继承了a类但是d继承了b和c类,这时候因为会有两个a类报错,只要我们加上virtual关键字继承就可以了,这样d类可以通过虚表指针来访问a类的相关的地址就不会有二义性导致报错了,但是一般我们不会用因为开销大

相关推荐
倒头就睡的小比特6 天前
算法竞赛C++常用的STL
c++·算法
weilx12346 天前
C++笔记-文件IO-<fcntl.h>
c++
Smileyqp沛沛6 天前
前端?C++ ?较大差异基础罗列
c++·基础·前端转c++
C语言小火车6 天前
C/C++ 为什么需要编译器?
开发语言·c++
旖旎夜光6 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
吞下星星的少年·-·6 天前
C++ 萌新语法入门篇
c++·算法比赛
霍霍的袁6 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
another heaven6 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
程序猿编码6 天前
告别改源码适配模型:纯 C++ 可配置 LLM 推理引擎,全格式全结构兼容
c++·大模型·llm·推理引擎
此生决int6 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++