后续:状态变为复试了,三面半个小时,面完秒挂开局拷打半小时实习项目, 然后做题, 手撕回溯 (秒了, 后悔做太快了, 后面还有几个题), 两个场景设计题一个非常多 string 的文件求频率最大的 10 个 string, 局限在一个机器上, 先 hash, 然后分别求各个 bucket 里面的 10 个频率最大的 string, 最后合并2. 一个计时器类设计题, 要求实现的功能如下, 要求尽可能效率高 1. 可以插入一个计时器 (包含超时时间)2. 输入当前时间, 将超时的计时器全部删除. 这个类不会主动删除超时的计时器, 需要人为输入当前时间3. 输入某个时间 (不一定是当前时间), 得到还未超时的所有计时器 (不删除)4. 可以更改某个计时器的超时时间我说了两种方式, 不知道是不是最优的,1. B+树2. 一个 list (按照超时时间排序, 每个 node 包含超时时间和一个 vector 保存这个超时时间点所有的计时器) 和一个哈希表 (key 是计时器的 id, value 是 list 的迭代器)还有一个指针题 (没答对), 答案是 2, 5, 有兴趣的可以试一下```C#include int main( void ) { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); return 0;} ```最后问了下八股文进程之间的同步方式, 答了五种虚拟内存LSM 和 B+树的优劣势分析 (这个好多人问了)自旋锁和互斥锁的区别和使用场景总计耗时一个半小时, 希望能过呀