网易互娱03.08/09 游戏研发一二面凉经
更新:03.25流程结束挂了
03.04晚上笔试,第二天约了面试,03.08一面,当天下午约了二面,03.09二面
一面:
笔试题:给定一个整数类型数组,长度最大2*10^4,数组元素大于0,求第k小的子序列的和,子序列是连续非空的子数组。
思路:因为数组长度较大,应以O(nlgn)时间复杂度解决,二分+双指针,二分左右边界为0和数组总和,check函数利用数组元素大于0特性,通过双指针检查。
自我介绍相关:
1.讲一讲对openResty的了解,它在性能上有什么优势
2.既然了解过nginx,为什么选择了多线程而不是多进程开发WebServer
客户端与服务端建立连接,随后通过kill-9 杀死进程:
3.四次挥手流程
4.杀死服务端进程后,重新在该端口建立进程能否成功
5.如何实现端口复用
6.在原本的客户端建立进程,发生错误,可能原因?
7.malloc分配了一个1024*1024的数组,虚拟内存和物理内存如何变化?
8.C++11及以后的特性了解过哪些?知道其原理吗?
撕题:LRU缓存设计
反问环节
二面:
二面没有上来的做题,面试官没有要求自我介绍,直接对着简历问了几个问题,由于楼主简历烂,就没什么好说的了。
智能指针:
1.平时写C++如何管理内存?(手动释放与智能指针)
2.智能指针原理?
3.shared_ptr和weak_ptr同时指向一个对象,shared_ptr进行析构,weak_ptr能否发现对象已析构?
4.weak_ptr如何转换成shared_ptr?
数据结构:
5.map与unordered_map各自应用场景?
6.存储数据量比较大时,map与unordered_map内存效率哪个更优?(不会)
7.map与unordered_map底层数据结构是什么?
8.map为什么不选择平衡二叉树而是选择了红黑树这种复杂的数据结构?(不会)
大概连着两题没答上来,面试官出了个场景题,这部分面试官有提示和讨论:
背景:游戏中有个24点的小游戏,取四张牌通过对四张牌的数字加减乘除(可以添加括号)看能否得到24这个数字,客户端把取到的四张牌发送给服务端,服务端返回true/false
9.如何设计以降低服务端负载?(多线程+将牌型对应结果存储下来)
10.如何存储结果?(存储在内存中效率更高)
11.结果存储用什么数据结构?(true的牌型数量偏少,以哈希表存储较优)
12.key类型与优化(通过状态压缩以int形式存储,先排序以降低重复存储)
13.24点游戏算法思路
撕题:24点游戏算法
反问环节
海康威视公司福利 1137人发布