[暑期实习] 微信技术架构 后端一面面经
约50分钟
1. 介绍项目;
2. mmap中间发生的io是怎么样的;
3. 有一个人名册,有每个人的名字,用一个数据结构满足以下需求:查找制定前缀的人名集合。 -- 字典树。
如果不是人名,有很多长字符串,字典树有很多指针,能否优化之?答:忽略掉中间不代表任何串的节点,在父节点直接判断并跳转。
4. 有百万千万的单词,用一个数据结构找到前一万出现频率的单词。随便说了个大根堆,显然不是最优解,不过我有点开摆。
5. shared_ptr是否线程安全 – 看情况,里面的裸指针不安全,但是引用计数是atomic的,安全。
6. 模板最后呈现的效果是怎么样的 – 由于每个模板(泛型)特化的类在编译期是确定的,所以由编译器直接生成所有特化类型。
7. C++实现vector,最好为模板类,并带有构造函数。
我最终写了默认构造、拷贝构造、移动构造(没写好)、clear()、push_back()、pop_back()、operator =、析构函数等,其中有扩容处理,具体实现哪些内容不作要求。
8. 协程了解吗。用的不多,反正就是用户态下实现类似多线程的效果。
1. 介绍项目;
2. mmap中间发生的io是怎么样的;
3. 有一个人名册,有每个人的名字,用一个数据结构满足以下需求:查找制定前缀的人名集合。 -- 字典树。
如果不是人名,有很多长字符串,字典树有很多指针,能否优化之?答:忽略掉中间不代表任何串的节点,在父节点直接判断并跳转。
4. 有百万千万的单词,用一个数据结构找到前一万出现频率的单词。随便说了个大根堆,显然不是最优解,不过我有点开摆。
5. shared_ptr是否线程安全 – 看情况,里面的裸指针不安全,但是引用计数是atomic的,安全。
6. 模板最后呈现的效果是怎么样的 – 由于每个模板(泛型)特化的类在编译期是确定的,所以由编译器直接生成所有特化类型。
7. C++实现vector,最好为模板类,并带有构造函数。
我最终写了默认构造、拷贝构造、移动构造(没写好)、clear()、push_back()、pop_back()、operator =、析构函数等,其中有扩容处理,具体实现哪些内容不作要求。
8. 协程了解吗。用的不多,反正就是用户态下实现类似多线程的效果。
全部评论
3是压缩前缀树吗 4用跳表可行吗
相关推荐
点赞 评论 收藏
分享
10-18 12:12
门头沟学院 后端 点赞 评论 收藏
分享