1.什么是哈希冲突?

不同关键字通过相同哈希计算出相同的哈希地址,该种现象称为哈希冲突或哈希碰撞。

2.处理哈希冲突的方法有哪些?优缺点分别是什么?

解决哈希冲突两种常见的方法是:闭散列和开散列

3.哈希表的增删查改的时间复杂度是多少?开放定制法哈希冲突很严重怎么办?哈希桶哈希冲突很严重怎么办?

查找索引当然会很快,不过只有无冲突的hash table复杂度才是O(1),一般是O©,c为哈希关键字冲突时查找的平均长度。
二次探测

4.海量数据处理的面试题?

位图,布隆过滤器,刷几道题就知道了

5.unordered_map和map的区别是什么?哪个更好一些?

unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序,

他们在以下的几个方面有区别:

  1. 内部实现

  2. 内存使用

  3. 时间复杂度

内部实现

  1. std::map将元素存储在一个平衡二叉树中,所以元素是有序存储的。

  2. std::unordered_map使用哈希表来存储元素,元素并不是有序存储。

内存使用

  1. unordered_map比ordered_map更占用内存,因为需要额外的内存来存储哈希表。

查找时间复杂度

  1. std::map的查找时间复杂度是O(log n)。

  2. std::unordered_map最佳的查找时间复杂度是O(1),如果哈希函数不是很好的话,最糟糕的复杂度会是O(n)。

什么时候选择map:

  1. 当你需要低内存占用率

  2. 当你希望序列是有序的

  3. 当你需要稳定的表现

什么时候选择unordered_map

  1. 当你有一个很好的哈希函数和对内存占用率没有限制时