c++八股3

  1. 多态:在C++中,如果类B继承自A,并且定义了虚函数f(), 类C又继承自B但没有重写f(),那么当你执行如下代码:

    Cpp
    C *c = new C();
    c->f();

调用的将是B类中实现的f()方法,因为C没有提供自己的覆盖版本。若要调用A类(基类)的方法,可以使用显式调用父类的成员函数语法,例如在C类中:

复制代码
Cpp
class C : public B {
public:
    void f() override {
        B::f(); // 显式调用B类中的f()方法
        // 或者执行C类自己的逻辑
    }
};
  1. 二叉树、平衡二叉树(如AVL树或红黑树)、B+树和红黑树访问一个元素的时间复杂度分析:
    ● 二叉树:最坏情况下(即树退化为链表时),时间复杂度为O(n)。
    ● 平衡二叉树:如AVL树或红黑树,其高度保持在logN级别,所以访问一个元素的时间复杂度为O(logN)。
    ● B+树:在数据库索引等场景常见,通常用于磁盘存储,内部节点不存储数据,所有叶子节点在同一层,因此查找任意键值的时间复杂度也是O(logN)。
    ● 红黑树:一种自平衡二叉查找树,同样保证了查找、插入、删除操作的时间复杂度为O(logN)。
  2. 堆和栈的区别:
    ○ 栈(Stack):由编译器自动分配和释放;空间较小但快速,常用于存储局部变量、函数参数和返回地址等。栈内存分配是连续的、后进先出(LIFO)原则。
    ○ 堆(Heap):由程序员手动申请和释放(通过new和delete关键字);空间较大但分配和回收相对慢,用于动态创建对象和数组等,大小可变。
  3. 注意:在C++中,new关键字是在堆上实例化对象的,而不是栈上。栈上的对象通常是直接声明和初始化的,生命周期与所在作用域相关联。
  4. 四次挥手:这是TCP连接断开的过程,包括FIN(结束)、ACK(确认)、FIN+ACK、ACK四个阶段,确保双方都已知晓连接关闭并释放资源。半连接:通常指的是TCP的"半开连接",即三次握手过程中服务器收到SYN报文并发送了SYN+ACK回应,但客户端没有回复ACK,此时服务器端会维持一个半连接状态。TCP与UDP区别:
    ○ TCP提供面向连接、可靠传输的服务,有流量控制、拥塞控制和错误校验机制,无消息长度限制,但存在一定的延迟和额外开销。
    ○ UDP则是无连接的,不保证消息的顺序和可靠性,但是传输效率高,适用于实时应用如音视频流传输。UDP的数据包有一个最大长度限制,由MTU(最大传输单元)决定,通常在IP层会有大约65535字节的限制,但实际上由于头部开销,有效负载会更小。
  5. 进程和线程的区别:
    ○ 进程是操作系统资源分配的基本单位,每个进程拥有独立的内存空间、文件描述符集和其他系统资源,互不影响;
    ○ 线程是CPU调度和执行的基本单位,同一进程内的多个线程共享进程的内存空间和全局变量,切换代价小,通信便捷。
  6. 程序从硬盘到CPU执行过程:
    ○ 首先,操作系统加载器将硬盘上的可执行文件读入内存,这个过程包括读取程序的代码段、数据段以及必要的资源;
    ○ 操作系统为该程序创建一个新的进程,并为其分配相应的内存空间;
    ○ 控制权转移到新进程,CPU开始执行程序的第一条指令;
    ○ 程序运行过程中,根据需要创建线程,线程在进程中并发执行,共享进程资源;
    ○ CPU通过分时复用的方式在不同线程间切换,使得多任务能够同时进行。
相关推荐
梓䈑3 小时前
【算法题攻略】BFS 解决FloodFill 算法、最短路问题、多源BFS 和 拓扑排序
c++·算法·宽度优先
程序喵大人7 小时前
【C++进阶】STL容器与迭代器 - 01 STL 容器先解决元素放在哪里
开发语言·c++·stl
野生风长12 小时前
C++入门基础:从命名空间到引用与指针的全面解析
开发语言·c++
Escalating_xu13 小时前
C++可变参数模板与引用折叠精讲
开发语言·c++
云泽80813 小时前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio
fqbqrr14 小时前
2607d,C++细节比不上d
c++·d
^yi14 小时前
【C++】继承的那些事儿~
c++·继承·菱形继承·隐藏·final·继承原理·多继承的指针偏移
ShineWinsu16 小时前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket
hold?fish:palm17 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
啦啦啦啦啦zzzz18 小时前
算法:回溯算法
c++·算法·leetcode