1.指针和引用的区别
2.C++11中提供了哪些智能指针
shared_ptr,weak_ptr,unique_ptr
3.实践中用过哪些
4.内存泄漏怎么定位/排查
5.GDB打印栈信息
6.GDB怎么切换线程
7.什么是线程安全
多线程对临界资源的访问
8.有遇到过死锁么
9.了解C++11中本身提供的thrad库么
10.auto和decltype的区别
auto针对变量,decltype针对表达式,二者结合可以实现函数类型推导
// C11
template <typename T>
auto func2(T& t) -> decltype(t){ //后置语法
return t;
}
// C14
template <typename T>
decltype(auto) func1(T& t){
return t;
}
11.面向对象的特征
12.多态怎么实现的
重载、虚函数、模板
13.静态多态底层机制是什么,怎么找到不同函数的
对函数进行重新命名,C中函数返回值,形参相同编辑器生成的函数名一致,C++中编辑器生成的函数名则不同,编译时根据形参类型等信息找到其真实函数名
14.C++中vector和list有哪些区别,适用于哪些业务
15.list底层为什么使用双链表
存取方便
16.STL的实现中为什么把数据域和指针域分开,有什么好处
适配迭代器,迭代器只需要指针域,只有找到后才会访问数据域,降低消耗
17.单例模式的基本原理
18.C++中有没有提供其他方式实现类似功能
static
19.单例中的get方法为什么是static的,可不可以作为成员函数
不可以,static函数可以通过类名直接调用,不需要声明对象
单例私有化了构造函数,外部不可以声明对象,因此无法调用成员函数get
20.数据库中常见的索引
21.主键索引和唯一索引区别
22.Redis常用的数据结构
23.跳表的基本原理
按顺序存储,有很多层,每层链式连接,若查找小于当前值则去下一层的上一个结点继续查找
24.三次握手和中间状态
25.TCP的各种状态
26.TCP有多少种状态
[终于搞懂了 TCP 的 11 种状态 ,太不容易了… - 腾讯云开发者社区-腾讯云 (tencent.com)](https://cloud.tencent.com/developer/news/646106#:~:text=TCP 的11种状态分别对应,TCP 三次握手过程的5种状态和TCP四次挥手断开过程中的6种状态。 如上图,就是11种状态,在整个TCP建立连接和断开连接的整个过程)
27.看代码找错(生产者消费者模式的消费函数)不能使用if判断队列为空,用while
void comm() {
m_mutex.lock(); // 加锁,超出作用域解锁
if(que.empty()) { // 错误,应为while
conit.wait(); // wait()会释放锁
}
//TODO
}
28.深入问
多线程在wait()停止时,若有任务进来,会唤醒全部线程,但是只有一个线程真正能拿到任务进行todo,剩余线程不能返回wait()状态,进行todo取出任务时,任务队列为空,程序崩溃。
29.select和epoll区别
30.什么是用户态,什么是内核态
1.TCP和UDP的区别
2.UDP使用场景
3.对音视频有了解么
4.TCP的拥塞和UDP的拥塞在业务层有什么区别
5.怎么达到高性能
6.分发的时候拥塞,线程达到上限怎么办
答:定时器(保底方法);将任务持久化,等线程池负荷小的时候再重写生成任务去执行
(1条消息) 5.队列技术(拥塞管理)_土豆aaa的博客-CSDN博客_队列技术
7.学生信息表,查询多少记录(count)
8.取出成绩合格的学生数量(count)
9.查询每个分数对应的人数
10.在不同局域网怎么实现通讯,原理是什么(NAT协议)
11.公网地址对应好多台电脑,怎么找到是哪一台
12.NAT协议了解么
13.算法了解么
14.AI了解么
#实习##软件开发2023笔面经#