某量化1面
-
各种拷打项目,由于和之前实习岗位挺类似的,拷打的很细
-
C++中,unordered_map和普通的map有什么区别?
-
unordered_map什么时候触发扩容(rehash)?解决哈希冲突的算法是什么?
首先明确哈希的本质目标——将键(key)快速映射到存储位置(数组索引)。实现步骤可分为四层: (1)定义键值对结构; (2)设计哈希函数,将key转为非负整数索引; (3)处理哈希冲突(多个key映射到同一索引); (4)当负载因子(load factor = 元素数 / 数组长度)超过阈值(如0.75)时,触发扩容与重哈希(rehashing),保证性能稳定。
重哈希的过程(以链地址法为例)
- 检测:插入新元素后,若
α > max_load_factor,触发重哈希。 - 分配:创建一个新的桶数组,大小一般为当前大小的 2 倍(或下一个质数)。
- 遍历旧桶:对旧桶数组中的每个非空桶,遍历其链表中的每个节点。
- 重新计算:对每个节点,用新数组大小计算新的桶索引:
new_index = hash(key) % new_size。 - 移动:将该节点插入到新桶链表中(注意:可以逐个移动,避免额外拷贝)。
- 释放:删除旧桶数组(内存释放由容器管理)。
- 检测:插入新元素后,若
-
多线程中,互斥锁、自旋锁、原子操作的区别和应用场景?原子变量有什么应用场景?
原子操作是由硬件直接保证的不可中断的指令(如
test-and-set、compare-and-swap、fetch-and-add)。在执行过程中,不会因为线程切换或中断而被分割。 -
讲一讲C++的智能指针。
-
C++的内存管理机制介绍一下。
-
了解过tc_malloc吗?
-
讲讲TCP的拥塞控制。
-
UDP和TCP的差异。
-
你有什么想问我的?
没咋答好,感觉凉了
#发面经攒人品#
查看11道真题和解析