【秋招】C&C++-八股文

【秋招】
秋招中的c和c++主要考察三部分:

  1. 对于基础知识点的熟练程度
  2. 对于代码的熟悉程度
  3. 对于代码编写的熟悉程度
    本文主要对于基础知识点的熟练程度进行解析。

哈希冲突

哈希冲突指的是在使用哈希表进行数据存储和查找时,不同的键通过哈希函数计算得到了相同的哈希值,导致这些键被映射到了哈希表的同一个位置。

解决哈希冲突

解决哈希冲突常见的方法有以下几种:

  1. 开放寻址法:当发生冲突时,按照某种探查方式(如线性探查、二次探查、双重哈希等)在哈希表中寻找下一个空闲的位置来存储冲突的元素。
  2. 链地址法:在哈希表的每个桶(存储位置)中存储一个链表,所有哈希值相同的元素都存储在对应的链表中。
  3. 再哈希法:当发生冲突时,使用另一个哈希函数重新计算哈希值,直到找到空闲的位置。
  4. 建立公共溢出区:将发生冲突的元素都存储到一个公共的溢出区域中。
  5. 负载因子控制:通过调整哈希表中元素的数量与桶数量的比例(即负载因子),在一定程度上减少冲突的发生。当负载因子超过某个阈值时,对哈希表进行扩容,增加桶的数量。

这些方法各有优缺点,实际应用中通常会根据具体情况选择合适的方法来解决哈希冲突。

什么是平衡二叉树

平衡二叉树是一种特殊的二叉搜索树,它具有以下特点:

  1. 左右子树的高度差绝对值不超过 1。
  2. 左右子树也是平衡二叉树。

平衡二叉树的目的是在保证二叉搜索树的有序性的同时,通过自动调整节点的位置来保持树的平衡,从而使得树的查找、插入和删除操作的时间复杂度始终保持在 O (log n),其中 n 是树中节点的数量。常见的平衡二叉树实现有 AVL 树、红黑树等。

常见容器

  1. vector(向量):动态数组,可以高效地在尾部进行元素的添加和删除操作。
  2. list(链表):元素在内存中不连续存储,适合频繁的插入和删除操作,特别是在中间位置。
  3. deque(双端队列):可以在两端高效地进行插入和删除操作。
  4. stack(栈):遵循后进先出(LIFO)原则。
  5. queue(队列):遵循先进先出(FIFO)原则。
  6. priority_queue(优先队列):元素按照优先级顺序出队。
  7. set(集合):元素唯一且自动排序。
  8. multiset(多重集合):元素可重复且自动排序。
  9. map(映射):存储键值对,键唯一且自动排序。
  10. multimap(多重映射):键可重复且自动排序。
  11. unordered_set(无序集合):元素唯一但不排序,基于哈希表实现。
  12. unordered_map(无序映射):键唯一但不排序,基于哈希表实现。
  13. unordered_multiset(无序多重集合):元素可重复且不排序,基于哈希表实现。
  14. unordered_multimap(无序多重映射):键可重复且不排序,基于哈希表实现。

有malloc为什么引入new

引入 new 操作符相对于 malloc 主要有以下几个优

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MBHB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值