小米 C++ 一面

- 自我介绍
- 项目拷打
- 实习拷打
- 场景题:我们这边是做 P2P 的,需要在 UDP 上传输数据,偶尔会发生网络丢包,让你设计一个 SDK 来保证网络的可靠传输,怎么做?
- 场景题:传数据的问题解决了,我们再来解决一下安全的问题,借鉴 HTTP 即 TLS/SSL 的握手机制,设计一套端对端的密钥。
- 手撕题缓存聚合:假设你有一个高并发的键值存储系统,底层使用了非易失性内存。由于 NVM 的特性,我们希望将对键的随机插入操作,转换为批量、顺序的写入。insert 函数在并发环境下必须是线程安全的,但不能使用全局锁,因为这会成为瓶颈。flush 函数应该能够高效地将多个线程插入的数据,一次性地、按序地刷写。请先简述你的设计思路,包括如何保证线程安全、如何实现无锁或细粒度锁的插入,以及 flush 函数如何高效地执行,然后并实现代码。
全部评论
请问手撕是要求可运行的吗还是说给个伪码能提供大概思路就行呢
点赞 回复 分享
发布于 10-30 23:31 天津
手撕是根据简历内容出的吗?
点赞 回复 分享
发布于 10-30 11:36 重庆

相关推荐

10-30 19:05
门头沟学院 C++
1、挑一个项目介绍一下2、实习项目中spdlog库的使用方法3、如何借助spdlog库,实现自己的sink4、sink是线程安全的吗,如何保证5、日志压缩如何实现的,说一下这个过程中的竞争问题6、日志压缩异步任务的资源竞争问题,什么情况下notify,谁负责notify7、如果通知线程先通知了,异步任务线程才开始wait,那么这个线程还能处理任务队列中的任务吗8、static_cast和reinterpret_cast有什么区别9、一个类的成员函数中有一个lamda表达式,可以访问这个类的私有成员吗,如何访问,如何传参10、lamda表达式可以拷贝吗11、如果一个lamda表达式有一个按值捕获的变量a,再拷贝了这个lamda表达式是什么结果12、threadlocal了解吗,作用是什么,什么时候创建呢13、如果一个线程创建了一个threadlocal变量a,它可以让另一个线程访问吗,如果硬要传可以吗14、什么场景下用list比vector好呢15、vector里有10个成员,迭代器指向第3个元素,现在删除第4个元素,那么这个迭代器会失效吗16、unordered_map也是有很多元素,如果插入一个元素,原本的迭代器会失效吗,什么情况下会失效17、移动语义move一般在什么情况下用18、什么场景下用move可以获得不错的性能增益,什么情况下不能19、一个结构体里有一个1000size的数组,一个实例在move之后,那这个数组发生什么变化20、原子操作和互斥锁一般用在什么场景21、如果我给三个变量赋值,那我用三个原子变量可以吗22、父进程open了一个文件描述符,fork了一个子进程,那子进程可以访问这个文件描述符吗23、如果子进程close了这个文件描述符,父进程还可以访问吗24、父进程读文件读到第10个字节,如何fork了一个子进程,子进程读的话,是从第几个字节开始读
查看24道真题和解析
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务