C++面试笔记(持续更新...)

1.C++的特性

封装:将数据和具体实现在类中隐藏,对外只留出接口方便调用。

继承:子类继承父类的方法和全部数据,提高软件按复用率

多态:自继承的条件下,继承自同一父类的类的同一的方法对同一个事物具有不同的表现状态。

2.C++中类和结构体的区别

1.默认的访问权限不同:结构体是public,类是private

2.概念上:结构体偏向于数据的集合,类偏向于数据和行为的集合

3.C++重写,重载,重定义,隐藏

重写:父类的函数和子类的函数名字参数返回值都相同,父类的函数是虚函数

重载:在同一作用域内,函数名相同,参数和返回值不同

重定义:在同一作用域内,函数名,参数,返回值都相同

隐藏:在继承的条件下,父类中的函数不是虚函数,子类中定义了父类中的函数

4.C++中有哪些默认的函数 (其中7,8是在C++11中有)

1.构造函数 -- T();

2.析构函数 -- ~T();

3.拷贝构造 -- T(const T&);

4.拷贝赋值运算符 -- T& operator = (const T&);

5.默认的重载取址 -- T* operator & ();

6.const默认的重载取址 -- const T* operator & () const;

7.移动构造函数 -- T(T &&);

8.移动赋值运算符 -- T& operator = (T&&);

5.指针和引用的区别

1.指针可以为空,引用不能为空

2.指针可以有多级指针,引用不能有多级引用

3.引用必须初始化,指针可以不用初始化

4.sizeof的值不同,指针返回的是地址控件所占字节数32位系统4字节.64为系统8字节,引用返回的是引用类型的大小

5.引用是定义了一个变量的别名,指针是存储了变量的地址

6.引用自加1是引用的实体加1,指针自加1是向后偏移一个类型的大小

6.数组和指针的区别

1.数组是一种数据结构,指针是一种变量类型

2.赋值方式不同,指针可以给同类型的指针直接赋值,数组需要一个一个元素赋值

3.求sizeof,指针的大小一直都是系统的字节数32位4字节,64位8字节,数组的大小是sizeof(arr)/sizeof(arr[0])

7.如何通过一个指针去new一个数组

int* p = new arr[10];new一个大小为10类型都是int的数组 -- (数组的名就是首元素的地址)

cpp 复制代码
int** arr = new int*[10];  // 创建一个指向10个整型数组的指针
for (int i = 0; i < 10; i++) {
    arr[i] = new int[5];  // 为每个整型数组分配5个整数
}

8.内存的分区

1.堆区:new 和 malloc申请的空间

2.栈区:变量和指针

3.静态区:变量声明为static类型,全局变量

4.字符常量区:"abc" -- 存放字符

5.代码区:编译后的二进制文件

9.C++std容器中都用过/都知道哪些(挑自己认为绝对不会说错的说)

1.std::list 插入时间复杂度O(n) ,删除时间复杂度O(n),查找时间复杂度O(n)

2.std::vector 尾插如果发生扩容是O(n),未发生扩容是O(1),删除O(n),查找按下标查找O(1),按值查找O(n)

3.std::map 底层是红黑树,插入O(logN),删除O(logN),查找O(logN)

10.std::vector中push_back函数和emplace_back函数都是尾添加元素的函数有什么区别

区别在于emplace_back相较于push_back少了对于元素构造和移动元素的时间,emplace_back是直接在容器中构造元素省时间,push_back函数接受一个值或临时对象,emplace_back接受与将要构造的元素类型相同的参数,push_back在接受一个临时对象时会调用拷贝构造,在接受一个左值会调用移动构造

11.栈和队列的区别

1.栈是先进后出,队列先进后出

2.栈对栈顶的查找删除插入O(1)

3.队列对队头的查找和删除是O(1),对队尾插入是O(1) 其余是O(n)

4.栈多用于递归,队列多用于需要顺序处理的工作如消息队列

12.TCP和UDP有什么区别

1.TCP是字节流,UDP是报文

2.TCP会发生粘包,UDP不会

3.TCP是由连接的UDP是无连接

4.TCP有流量控制,差错控制等,UDP没有

5.TCP是传输的数据有序,UDP传输的数据无序

6.TCP首部20字节,UDP首部8字节

7.TCP可靠,UDP不可靠

8.TCP是一对一,UDP是一对一,一对多,多对多

相关推荐
辰海Coding2 小时前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
晓梦林2 小时前
cp520靶场学习笔记
android·笔记·学习
心中有国也有家3 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
玄米乌龙茶1233 小时前
LLM成长笔记(三):API 开发基础
笔记
Upsy-Daisy3 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
LuminousCPP5 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
一只机电自动化菜鸟6 小时前
一建机电备考笔记(40) 建筑机电施工—排水管道施工(含考频+题型)
经验分享·笔记·学习·职场和发展·课程设计
你干嘛?哎哟6 小时前
4月工作笔记
笔记
tom02186 小时前
软考中级《嵌入式系统设计师》全套备考资料(真题 + 教材 + 笔记)
笔记·嵌入式·软考·自学·电子技术·电子资料·变成
问心无愧05138 小时前
ctf show web入门156
笔记