网易互娱上海 游戏研发 面经
8.26现场面 收到offer意向书了 来还愿了
现场笔试:手撕代码实现size_t strlcpy(char* dst, const char* src,size_t size)
一面:
项目相关,因人而异
1.C++虚函数
(1) 函数调用
(2) 虚函数表什么时候创建,工作原理
(3) 为什么析构函数要设置成虚函数
2.列表和数组的区别 vector底层实现是什么?数据存放太多会怎么样?push_back底层实现是怎么做的?
3.网络 为什么TCP要三次握手,两次有什么问题
4.哈希冲突怎么解决 开放寻址法中删除元素该如何操作? 拉链法中链表太长了应该如何解决
5.操作系统 CPU缓存是如何读取数据的?缓存替换算法?(LRU) LRU一般使用什么实现的?(双向链表+hash)
C++二维数组在内存中如何存放? 不同的读取数组方式会有什么影响?
6.算法 手撕代码
(1)如何选取N个不重复的随机数?复杂度要低
(2)N个节点,给出M条边,无向图,求图中连通集的个数 (disjoint set)
二面:
1.项目相关,问到了我项目中牵扯到的一个问题,给定一个字符串数组A,再给一个字符串数组B,如何用最少的数据记录A和B之间的差距
(跟数据压缩有关,我觉得不会问)
2.手撕代码 vector的push_back操作
3.算法 算术表达式转后缀表达式
比如a+(b-c)*d 转化成abc-d*+
4.有什么想问的