WXG 微信游戏&小游戏团队 面经

简历:resume-2025-spring.pdf

一面

  • 项目拷打(10min)
  • C++
    • std::vectorresizereserve 的区别
    • std::unordered_mapstd::map 的迭代器什么时候失效(unordered_map 扩容时失效,map 不失效)
    • 介绍多态(静态多态、动态多态)
    • finaloverride 作用
    • final 为什么能提高代码执行效率
  • 计算机基础
    • 进程和线程的区别,进程间通信的方式
    • 什么是死锁,如何避免死锁
    • selectepoll 的底层实现
    • 一个 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 的底层实现,LTET 的区别和应用场景