1. malloc 空间连续性(物理地址不连续),底层原理(blk)
new\delet malloc\free 区别 底层原理,混用会出现什么情况
2. STL vector内存特点、扩容机制、扩容时数据的拷贝方式
map、list的数据结构
3.智能指针 哪几种,unique_ptr不支持直接赋值操作 需通过move转交权限,shared_ptr(引用计数) , weak_prt的作用 以及循环引用的情况举例。
多线程智能指针是否安全的,以及引用计数是否安全的。
4.类 多态如何实现的,虚函数、虚函数表、重载
5.设计模式:抽象工厂、观察者模式、单例模式(写代码)
6.gdb常用命令
7.ASAN 的一些配置操作有哪些,比如出错是否停止程序、是否开启内存泄漏检测
多线程智能指针是否安全的,以及引用计数是否安全的。
c++模板中的范式
跨平台移植代码,考虑的因素有哪些
c++11 中的 右值引用,移动构造函数 C++的移动构造和移动赋值运算符 - 知乎
【精选】C++ 移动构造函数详解_吾爱技术圈的博客-CSDN博客
【C++】右值引用(极详细版)_The s.k.y.的博客-CSDN博客
左值引用和右值引用的区别:
在 C++ 中,左值引用(lvalue reference)和右引用(rvalue reference)是引用类型的两种形式。
左值引用是对左值进行引用的类型。左值(lvalue)可以理解为具有身份的对象,它们有名称、地址,可以作为赋值操作的目标或者作为函数的参数。使用左值引用可以实现对象的共享和传递。
右值引用是对右值进行引用的类型。右值(rvalue)是临时的、匿名的、即将被销毁的对象。右值引用可以绑定到右值,通过移动语义(move semantics)可以高效地完成资源的转移或管理。右值引用常用于实现移动语义和完美转发(perfect forwarding)。
下面是一些示例来说明左值引用和右值引用的使用:
- int a = 10; // a 是一个左值
- int& lref = a; // 左值引用 lref 引用左值 a
-
- int b = 20; // b 是一个左值
- int&& rref = b; // 错误!不能将右值引用绑定到左值
-
- int&& rref = 30; // 30 是一个右值
在这个示例中,a 和 b 是左值,因此可以使用左值引用进行引用。lref 是对 a 的引用,可以通过 lref 修改 a 的值。而 rref 是对右值 30 的引用,可以通过 rref 访问右值的内容。
需要注意的是,右值引用的主要用途之一是实现移动语义,通过 std::move 函数可以将左值转换为右值引用,从而实现资源的高效转移或管理:
- std::vector<int> vec1;
- std::vector<int> vec2;
-
- // 使用移动语义将 vec1 中的元素转移到 vec2 中
- vec2 = std::move(vec1);
在这个示例中,std::move 将 vec1 转换为右值引用,以实现将 vec1 中的元素高效地转移到 vec2 中。这避免了不必要的内存复制和分配。
xiaopeng:
1. 线程、进程同步方式,
两个线程,一个低优先级先拿到互斥锁,此时又一个高优先级去拿互斥锁,如何让高优先级先拿到处理任务。
控制线程能拿到更多CPU资源的方式,
两个进程,其中一个进程open获取到一个fd,如何能让另一个进程也能通过这个fd进程操作,
IO复用,slect poll epoll区别
c++多态机理、智能指针、设计模式(单例)、
摄像头开发前期工作如何展开,