还愿!网易互娱游戏研发,两轮面经整理
offer
啊啊啊啊啊啊啊啊啊啊啊啊爸爸捞我了
我一定好好做人😭
背景
985本SE,校强我菜。英硕CS偏AI,内容过于理论传统不适用当前AI大环境,形势不好最近准备转开发。
十一前一面的,十一月底二面。
一面
真的有点措手不及,以往面试都是按照简历提问,没有想到网易游戏一上来居然是按一块一块知识问的,几乎是靠着本科老本硬生生扛的,有很多问题都答得不好,面完就以为凉了。
- 渲染管线,稍微脑补了流程动笔画了画,应该说得比较全
- 光照模型,提了 phong,讲了三种光的种类以及大致计算方式
- C++ 多态如何体现
- 模版编程
- C++ 虚函数底层实现
- C++ STL 各种容器的底层实现
- 链表和数组的区别
- 哈希表有什么好处
- 二维数组的一些底层操作,有点跪,太久不用原生数组一直vector,导致概念知道但代码写的乱七八糟
- 接着问 vector 类的底层实现
- vector 扩容方式,让写个 push_back
- 堆和栈的区别,如何生长
- vector 放在堆还是栈,答得不好,内部的数据和 vector 本身并不是在同一个地方的
- 智能指针,用的不多,所以就讲了 shared ptr 的概念
- 进程和线程的区别
- 进程间通信方式,追问 pipe 是什么
- 内核态用户态的切换
- 一个场景题,分析调度的效率问题,主要是线程 idle
- TCP 和 UDP 的区别以及使用场景
- 因为我说了包头不一样,追问包头里会有哪些信息
- TCP 三次握手四次挥手
- RPC 了解么,直接说不太了解,凉凉
- 手撕链表反转
- 口述链表快排思想
- 洗牌算法,当时完全不知道这是一个经典算法,纯自己想了,不过好像想出来跟KD洗牌也差不多
- 一个 map<题号,权重> 的题库,要求设计随机抽题算法,要求抽出某题的概率跟权重正相关,好像写了个分桶+二分查找,不太记得了
二面
以为凉了,结果隔了近一个月通知二面,这次把 C++ 和游戏相关的各种知识,图形学啦 Unity 啦都认真复习了一下,但是面试的时候完全没考到 TUT,然后可能过于紧张,做算法题的时候脑子有点木木的,都没能一下想到最优解。
- 问项目,我硕士是数据挖掘机器学习方向的,问了我简历上的数据挖掘项目和深度学习的毕设项目。感觉面试官非常专业,很像 Amazon 的 behavioral 面,聊我是怎么开始项目的,整个过程如何推进的,我用了哪些工具辅助,看了哪些论文获得灵感,自己又有哪些独特的贡献,有哪些收获。我觉得我都讲的蛮全的,就是心很慌因为跟面试岗位联系不大,简历上的游戏项目反而没怎么问。
- 问我对于游戏行业除了课内,还有哪些学习,答自学了图形学,平时也有自己 Unity 做过小游戏,但是好像面试官都不感兴趣
- 1,2,5 三种面额硬币拼 m 块钱,第一反应可以递归类似走楼梯,对方说不好,就用动归,写了递推式就过了
- 乱序数组,写一个查询函数,查找数组 i 和 j 下标范围内存不存在 v。脑子当下空白了,觉得这扫一遍 O(n) 不是挺好么0w0。最后还是面试官给的提示说存不存在 v 和在不在 i 和 j 范围内可以是两个步骤(真的提示得恰到好处),一下子就想通了,是把乱序数组放进 <value, vector<int> index> 的表里就好了</int>
- 一个 log 文件记录函数进出的时间,找到用时最大的瓶颈函数。第一反应括号匹配用 stack,但是面试官提示才发现,必须要减掉子函数的时间,才能看出这个函数真正的耗时。于是就说用额外空间存一下父子结构,面试官说有更好的,但是时间差不多就算了(然后面试结束我刚把题目写下来就马后炮反应过来了,出 stack 的时候改一下顶上的时间戳不就好了么TUT)
- 期望薪资,手头 offer
- 问问题,我问了分组,面试官很热心,顺便把培训情况和大致时间安排都说了
许愿
面下来也确实感觉,自己还是太菜了,C++明明是母语,还是不够了解,各种新特性需要补课,只停留在会用来写作业的程度是不满足的。底层系统知识也需要复习。leetcode和剑指依然药不能停。
不过虽然希望不大,但是真的好希望好希望网易爸爸能捞我上岸啊。手机里寿命最长的三个游戏都是网易的,真的是一种信仰。