WXG 微信游戏&小游戏团队 面经
(2025-04-28)
简历:resume-2025-spring.pdf
一面
- 项目拷打(10min)
- C++
std::vector 的 resize 和 reserve 的区别std::unordered_map 和 std::map 的迭代器什么时候失效(unordered_map 扩容时失效,map 不失效)- 介绍多态(静态多态、动态多态)
final 和 override 作用final 为什么能提高代码执行效率
- 计算机基础
- 进程和线程的区别,进程间通信的方式
- 什么是死锁,如何避免死锁
select、epoll 的底层实现- 一个 URL 输入到浏览器里会经历怎样的过程
- TCP 断开连接为什么需要四次
- TLS 握手流程,握手之后为什么要用对称加密通信
- Local DNS 有什么缺点,如何解决
- 算法
- $550$ 个石头,A、B 两人轮流拿,每次只能拿 $7 \sim 11$ 个,谁先拿完谁获胜,问 A 是否有必胜策略
- 手写 LRU
四面(面委面)
- 做题
- 整数划分:对于一个数 $n (n \le 50)$,找出所有不重复的划分方式. 如 $4$ 可被划分为 $1+1+1+1$,$2+1+1$,$3+1$ 等. 分析时间复杂度
- TOP100:给 $n=1e7$ 个数,找出频率最高的 $k=100$ 个数.
- 一开始写了个 $O(n\cdot log(k))$ 的,面试官说可以更优. 回答如果不考虑值域可以用哈希表
- C++
unordered_map 底层实现,底层哈希冲突的解决方法,如何优化,如何扩容priority_queue 底层实现(二叉堆),插入和删除操作是如何实现的priority_queue 是否线程安全?举一个会发生竞争的例子- MySQL 的事务是如何实现的
- 介绍 Raft 算法
epoll 的底层实现,LT 和 ET 的区别和应用场景