小米 C++ 一面

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

相关推荐

2025-11-28 01:10
门头沟学院 Java
点赞 评论 收藏
分享
2025-11-28 06:30
门头沟学院 Java
C++: 1.虚函数实现原理2.虚表是一个类有一个还是一个对象有一个?(每个类有一个虚函数表,每个对象有一个虚函数表指针)3.查询虚表的时间复杂度是多少?4.`std::move()` 原理,涉及移动吗5.假设有一个 1KB 的大对象,`move` 能节省拷贝吗6.智能指针原理7.new 和 malloc 有什么区别呢8.用 `new` 生成的对象,可以用 `free` 释放吗?那如果是基础类型呢?9.用 `new` 创建数组时,释放的时候需要写出元素个数吗10.`std::map` 和 B+ tree 有什么区别呢11.红黑树和 B+ Tree 在性能、内存空间占用上的对比12.为什么数据库选择 B+ Tree 而不是红黑树13.在 STL 里,内存池是怎么实现的,有怎样的结构?14.执行 `vector<int> v(4, 100)` 会发生什么,在栈上还是堆上分配?15.那如果是 `new vector<int>(4,100)` 呢16.如何拿到类中私有成员变量的值?17.有一个二维数组里面都有值,想要给每个数都加 100,行遍历和列遍历有什么区别?网络:1.在浏览器中访问一个 http 服务器,这里面会经过哪些协议?2.为什么不直接用 tcp 协议,还需要用 http 协议?算法:1.`1,2,3,4,...,n` 构造二叉树2.合并两个有序数组 a 和 b,两个数组可能是升序/降序(4 种情况),合并后的结果放在 a 中,合并后的顺序按照 a 的顺序来
点赞 评论 收藏
分享
评论
1
6
分享

创作者周榜

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