字节C++抖音直播一面-面经总结
1、Python和C++的区别,Python的程序执行过程是怎样的?C和C++呢?
解释型-编译型
不用分号-用分号
自动垃圾回收-delete
相对较慢-执行速度快
丰富的库-标注模板库
.py-解释器-字节码-PVM-输出结果
c-c with class
malloc-new
标准库-STL
不重载-函数重载和运算符重载
没有命名空间-支持命名空间
不支持模板-支持模板
2、操作系统的内存管理方式?
1.连续内存分布
2.分页 划分为固定大小的页面
3.分段 划分成不同大小的段
4.虚拟内存 可以用大于物理内存的大小
5.内存交换
5.内存保护
3、排序算法,按照时间复杂度分类
插入排序
冒泡排序
归并排序
桶排序
计数排序
基排序(以上三个喜欢加减乘除 前两个n+k 后一个n*k
以上-稳定(具有相同排序值的元素的相对顺序不会改变)
平均时间复杂度:选帽插 n2 n长老慌了(方2)
快归队nlogn (n老 nlogn)
4、TCP和UDP的区别,以及使用场景?
连靠刘墉露营(这个我就简写了 可以看之前的面经里有解释)
TCP:FTP\SFTP\HTTP\HTTPS\SSH+自己的理解
UDP:在线游戏 实时直播+自己的理解
5、C++中vector的介绍?
大小可以动态改变,自动分配更多的内存。(但是建议reserve 因为有复制)
可以存储基本类型 自定义类型 还可以存放对象
可以对元素随机访问,支持下标直接访问
自动处理内存分配和释放
6、哈希表如何实现?哈希冲突?
哈希表是一种用于存储键值对的数据结构,它通过哈希函数将键映射到特定的索引位置,从而实现快速的查找、插入和删除操作。
哈希冲突是指不同的键通过哈希函数映射到同一个索引的位置。这种情况是不可避免的,尤其是在键的数量大于数组的大小时。处理哈希冲突的常见方法有两种:链式法和开放地址法。
链式法:发生冲突就加到这个元素的链表
开放地址法:线性探测-二次探测-双重哈希
7、索引怎么实现?B+树的优势?
索引是数据库和数据结构中用于快速查找数据的机制。常见的索引结构包括哈希索引、B+树索引等。
B+树:1.多个子节点 矮胖 搜索更加快
2.数据节点只有叶子节点
3.叶子节点之间还有指针连接,范围查找