【知识点详解】
1. **手写 C 语言版 `strcpy` 实现**
在 C 语言中,`strcpy` 函数用于复制一个字符串到另一个字符串。实现时,我们需要考虑目标字符串有足够的空间容纳源字符串,并且要加上结束符 '\0'。
2. **判断两链表是否相交及求首次相交结点**
题目要求找到两个链表的交点,如果存在,返回交点的指针;不存在则返回空。可以使用双指针法,让两个指针分别从头开始,一个每次移动一步,另一个每次移动两步,当它们相遇时,即为交点。
3. **虚函数类的大小**
一个含有虚函数的类会在每个实例中存储一个虚函数表(vtable)的指针,因此它的大小至少会增加一个指针的大小,通常是 4 或 8 字节,具体取决于平台。
4. **虚函数表的存放**
虚函数表通常被存储在类的实例中,它包含了类中所有虚函数的地址。在 C++ 中,这个表由编译器自动创建和管理。
5. **字典树(Trie)**
字典树是一种用于快速查找字符串的数据结构,每个节点代表一个前缀,从根节点到叶节点的路径表示一个字符串,便于高效地进行字符串匹配。
6. **Bloom Filter**
Bloom Filter 是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会误报,但不会漏报。
7. **TCP 三次握手和四次挥手**
TCP 的连接建立需要三次握手,断开连接需要四次挥手。握手确保双方都有能力接收和发送数据,挥手则确保双方都确认关闭连接。
8. **C++的四种类型转换**
包括静态类型转换(static_cast),动态类型转换(dynamic_cast),const_cast 和 reinterpret_cast,它们分别用于不同类型的转换场景。
9. **深拷贝与浅拷贝**
深拷贝会创建一个新的对象,包括其内部的所有资源;而浅拷贝只是简单复制指针,指向同一块内存区域,可能导致意外的共享和修改。
10. **红黑树的五个特点**
红黑树是一种自平衡二叉查找树,其特点包括:每个节点是红色或黑色,根节点是黑色,所有叶子节点是黑色,每个红色节点的两个子节点都是黑色(或者为空),从任一节点到其每个叶子的所有简单路径都包含相同数量的黑色节点。
11. **AVL 树的插入操作**
AVL 树是一种自平衡二叉搜索树,插入操作可能导致树的不平衡,需要通过旋转来重新平衡。
12. **STL(Standard Template Library)**
STL 是 C++ 标准库的一部分,提供了一组模板容器(如 vector、list、map 等)、算法和迭代器。
13. **动态数组 vector 的实现**
C++ 的 `std::vector` 是一种动态数组,它会根据需要自动调整大小,背后通常使用连续的内存空间。
14. **进程与线程的区别**
进程是资源分配的基本单位,线程是执行的基本单位。进程之间资源独立,线程共享进程资源,线程间的切换成本低。
15. **数据库索引使用 B 树的原因**
B 树是一种自平衡的多路搜索树,适合用于数据库索引,因为它允许高效地查找、插入和删除记录。
16. **阻塞、非阻塞、同步、异步**
阻塞和非阻塞是指系统调用对调用者的影响,同步和异步是关于多个操作顺序和结果的控制方式。
17. **TCP 的流量控制和拥塞控制**
流量控制避免接收端被淹没,使用滑动窗口机制;拥塞控制则是防止过多的数据充斥在网络中,采用慢启动、拥塞避免、快速重传和快速恢复策略。
以上只是部分知识点的简述,每个点都涉及复杂的理论和技术,深入学习需要进一步研究相关概念和实现细节。
评论0