网易游戏雷火防御工程师(测开)实习面经 | 掘金技术征文

杭州双非渣硕。前段时间师兄内推雷火,没有笔试直接打电话约我去面试了,地点在网易大厦。早上不到七点起床,晚上七点多才回到宿舍,能够说是很疲惫了。
原本面试现场投影上写的上午三轮交叉面,若是经过的话下午一轮总监面一轮hr面。 结果我上午三面完了以后,下午又给我来了四轮面试,没有总监面和hr面,因此一共7轮技术面(第一次参加面试就这场面,吃不消吃不消),还好都是1v1的形式。
由于对第一轮面试印象深入一点,就单独说一下,其余六轮题目我可能搞混,索性后边直接一块儿列出来了。

一面:面试官很年轻,看样子就比我大几岁,感受技术很强,有种邻家大哥哥的感受。。。

  1. 一开始让自我介绍;(有没有问我项目记不清了,反正后边几面也有问到)。
  2. 而后给我一张纸,让我把知道的排序方法都写下来,(我写了六七种吧记不清了,主流的都写了,包括希尔排序 桶排序),而后让我把他们的实现方法都介绍一下,而后时间复杂度 空间复杂度都写一下,把他们是否稳定都写一下;
  3. 你了解的最复杂的数据结构是什么?(我一开始说的散列表,问我有没有更复杂的,我说各类树,红黑树,B+树,B树,平衡树等等)问我这些可能都是本科时候学的,如今还记得起来么?(能记得大概,具体的左旋右旋可能细节想不起来);ps:其实我仍是能说出来一点的,可是当时怂了怕让写出来就gg了;
  4. 两个平衡二叉树合并怎么作?(一开始觉得就是简单的比较大小+递归,后来发现好像还得知足高度的特性,就先说了平衡二叉树的特色,而后想了一小会,面试官说不会也不要紧,恩不会);

(4.9日修改:今天才发现平衡二叉树其实只要求高度差不大于1,并不要求左子树比根小,右子树比根大... 有这种要求的是红黑树。我记错了! 这样的话 合并两颗平衡二叉树其实就是层序遍历吧,唉当时要是没记错就能够撸出来 了。。。)前端


  1. 如今有100W个帐户密码,要存起来,要求查找时速度尽量快,你选择什么数据结构?(B+树);
    为何?(我简单扯了扯B+树的特性);
    说一下要往里插入、删除、查找帐户密码的复杂度。(我不太肯定,瞎猜的:nlogn,nlogn,logn);
  2. 对图论算法了解多少?(BFS,DFS,最短路径,最小生成树,最小割最大流...)日常有用过吗?(项目里用过DFS BFS);
  3. 好,如今给你道题,一个二维坐标系,给你n个点的坐标,画一条直线把他们分红两份(任意直线),要求数量尽可能等分,复杂度不能过高。
    (刚说完图就出这道题,我下意识以为考察我图论,想了一下感受不是的,而后给他讲了讲个人思路:假设按照y坐标分,那么遍历n个坐标,用一个最大堆来保存,而后从顶部弹出n/2次,若是当前顶部的数和最后弹出的数不同,就能够在中间画一条线);
    他说若是全部点纵坐标都同样呢?若是有点重合的呢?
    (我有点蒙蔽了,以为我这思路是错的,又想了几分钟其余的方法,又情不自禁往图论上想,最后仍是没想起来。其实貌似再一样作法对横坐标处理一次应该能够避免他说的问题吧),最后问他怎么作,他说用二分的思想,而后对横纵坐标求中位数、众数什么的,我也没太听懂,装模做样点了点头;
  4. 玩过哪些游戏?(说了一大堆)对哪一个比较熟?(LOL) 如今让我对亚索的e作测试,怎么测?(我吧啦吧啦一大堆把能想到的都说的,ps:这里以前问过师兄经验,要有条理,用树状图来测,先分红几大类,再慢慢细分之类的)。但最后面试官又提醒我e技能带不带普通攻击,会不会触发装备特效?(这点确实没想到,但也是提醒了我,后边几轮面试也有问测技能的,我就把这一点都说上去了)。
  5. 问我亚索的e在一小段时间内是不能对同一目标使用的,怎么测?(简单说了一下) 你以为不能对一个目标释放e的判断是怎么实现的(我一开始说面向对象,对每一个单位对象设置时间标记之类的。后来他说不是面向对象,提醒我是buff仍是什么,我说是buff);
  6. 在e的瞬间敌方回城了你以为应该被带到泉水吗?(不该该)。
    那dota里白牛的大招会不会?(会。ps:由于我也玩过dota);
    你以为是为何?(可能在代码实现上白牛的大招是在大招释放完毕后出如今目标的身后); 那亚索怎么避免这样?(能够在释放技能时根据目标和本身的位置关系计算出技能释放后的位置,而不是以释放后的目标位置为参照物);
    你以为这样能够解决吗?(能够);
  7. 讨论bug和外挂的问题:
  • 面试官小声嘀咕+心算“你如今研二...dota高中玩的....恩应该是6.72版本”。
    (我心里:???卧槽! 这都能算出来)。
  • 说一下你当时玩dota的时候发现的bug。
    (我心里:???dota作得这么好,哪里有bug啊。 想了一会说 确实没发现);
  • 当时某种状况下蝙蝠开大招的时候能够A本身的塔,是最出名的bug。
    (我心里:??? 还有这种事? 我怎么不知道)
  • 说一下dota 的外挂吧。
    (??还有外挂? 哦对 开图挂)
  • 那你知道原理是什么吗?
    (我心里:???卧槽 我说我不知道开图的效果是怎样的,因此很差说原理,是整个地图战争迷雾都没了吗?仍是只对英雄有记号?)
  • 显然面试小哥也没开过全图不知道效果 那你说说LOL的外挂吧。
    (??lol还有外挂? 我赶快扯开 我还玩过穿越火线,那个外挂特别多)
  • 都有什么你说说看。
    (显示幽灵,透视,穿墙,自动瞄准,飞天 入地。。。)
  • 那你知道原理吗?
    (我心里:??卧槽 到底仍是没躲过 我说曾经幽灵模式刚出来的时候,能够经过删除安装目录下的一个文件,来使幽灵的刀子显形,并且我也确实试过是能够的)
  • 面试官点点头 算是混过去了;
  1. 可能还有暂时想不起来了...
  2. 有什么要问个人么?(问了一下我理解的防御就是测开,须要对作抵御外挂的工做吗?) 也要作的,这个东西不想作也避免不了。 结束。

其他六面:

  • 除了最后一面面试官以为我已经比较累了,其他的都要自我介绍;
  • 项目被问了好几回,包括具体实现,项目主要解决的问题,从项目中学到的最好的技术,项目经验对作咱们这个岗位的好处(由于个人项目就是可靠性自动化测试) 等等;
  • 不少测试场景题,包括测技能,测英雄,登陆窗口等等,问你怎么测;

几率题:

两盒火柴每盒n根,每次随机从任意盒取出一根, 求当一个盒子被取完时,另外一个盒子恰好还剩r根的几率。
(有点紧张有点懵逼,最后答错了,但仍是讲了一下思路写了一下个人公式虽然多是错的但总归没放弃抵抗~) ;java

智力题:

  1. 两个盲人各买了一白一黑两双袜子,不当心弄混了,问他们本身怎么分红恰好每人一白一黑。
    (以前见到过,稍微想了一下就答上来了。可是先入为主是我理解的那样了,面试官问我为何以为袜子都是同样大的,不能够用手区分开?固然实际上我问的话 她确定说是同样大的 只凭手感摸不出来~);
  2. 一个圆桌,两我的往上放硬币,只能平铺不能重合,最后一个放的人胜利(接下来硬币无处可放了),问先放的赢仍是后放的赢。
    (初中就见过的题,直接跟他说这题我作过,而后讲了一下秒杀之);

测试知识题:

  1. 说一下了解的测试方法;
  2. 性能测试有哪些指标;好比对一个登陆功能作性能测试,有哪些指标?(响应时间,可同时处理的最大请求数量...) 怎么测出可同时处理的最大请求数量? (秒答 二分)面试官会心一笑 “恩 二分 没问题” ;
  3. 用什么作的单元测试(junit);
  4. 有没有作过压力测试(没有);
  5. 面试官看到个人项目里有提到流程图,因而问了如下题目:
  • 任务流程图,是串行的,好比跟一个个NPC对话,可是有可能有的玩家提早跟某个NPC对话,致使后边的任务出不来了,这种状况下怎么测?(把串行的全部任务全排列)。
  • 若是当任务太多了会怎样?(那测试用例数量要爆炸了)
  • 怎么优化?(想了一会想不出来,硬憋一下 问能不能用 堆排序的思想,先两两颠倒顺序测试,把已测试过的当成一组再两两测,这样测试用例应该减小不少)。
  • 面试官还不太满意,让从游戏的角度来讲,(我实在不太会,又说根据重要程度,好比正常的流程确定是最重要的,而后根据日志,玩家走得比较多的流程 来排序,重要度高的分配更多测试资源)。
  • 最后面试官说他们如今就遇到了这个问题,而后讲了下他的思路;
  1. 还有不少,一时想不起来了;

java基础:

  1. protected,public,private的区别(面试官说我protected说的不太对);
  2. 抽象类和接口的区别;
  3. static的做用;
  4. List和ArrayList的区别;
  5. int和Integer的区别;
  6. 全局变量,临时变量,静态变量分别存在哪里;
  7. c++和java 的区别;
  8. java内存里有什么(结构);
  9. 说说垃圾回收机制(忘得差很少了,加上知道本身已经忘得差很少了更加紧张, 就把能想起来的随便说了说);
  10. 怎么判断哪些对象是能够删除的? 可达是什么意思?
  11. 接口有什么限制;
  12. 可能还有一些,暂时想起来这么多;

数据结构:

  1. 讲一下你知道的数据结构;
  2. 有一些数,每次能够插入,或者取出第1/4大的数,用什么数据结构?
    (我回答:维护当前数据量1/4大小的 最小堆,插入时被挤出来的数用最大堆保存,取操做从最小堆顶部取,而后把最大堆顶部取出插入最小堆。 瞎说的不知道对不对 不过看面试官当时的态度反馈 应该还算满意);
  3. 数组和链表的区别;
  4. BST的特色;
  5. 应该还有,记不清了;

算法题:

  1. 求a和b的最大公约数;
    (讲思路,一开始想的是用最小的数往下递减,每次判断另外一个数能不能被整除;刚说完就优化了一下,改为不是每次递减,而是用除以2,除以3...这样找。 我知道好像有公式仍是什么的...但我真的想不起来了);
  2. 字符串转int类型,要求不能用已有的方法,也不能强转。
    问了下其余的要求,好比+-号之类的,还有不是数字的字符返回error等。还问了若是超过int最大值怎么办,他问int最大值是多少(214..什么的,具体不知道..我日常都直接用的Integer.MAX_VALUE),好吧 这样也行算你过了。
    (ok,纸上手撕,用的 str.charAt(index)- '0'作的,但最后仍是16进制标记0x没有考虑到);
  3. 求x的n次方,已知能够用n*(n-1)!来作,但有没有更好的方法。
    (ok,纸上手撕,前两天恰好看到了, 先对x,n判断是不是负数,0之类的, 而后把n转成2进制,经过&1和右移来作);
  4. 给一个二叉树,怎么获得这颗树的镜像。(简单题目, 讲了下思路,递归,左右对称就行了);
  5. 01背包
    (ok,纸上手撕,dp,好久没写了对这个不太熟,一开始用的一维来写的发现错了,后来改为二维写出来了);
  6. 给一颗树,判断是否是BST。
    (ok,纸上手撕,用的递归,方法里有max和min两个约束,不符合直接返回false,初始是Integer.MAX_VALUE和Integer.MIN_VALUE往左递归时更新max,往右递归时更新min。)
    面试官本身在纸上画了画,表示第一次见到我这种方法,但好像也没啥毛病,恩没毛病~;
  7. 说两个nlogn复杂度的排序方法,衡量算法的三个维度?快排是稳定的吗?快排基准点怎么选择?
    (这已是第六面了,我一直觉得稳定是指复杂度的稳定,结果经面试官提醒才知道理解错了... 这样想起来一面时候让写的稳不稳定怕是也错了);
  8. 印象中还有让讲思路的题目,但实在想不起来题目了。

算法总结:

纸上手写仍是跟日常本身作的时候感受不同的,本身太急了,没仔细想好就开始写,致使写错的要划掉很难看,还有写完了没有检查代码,一些特殊状况也没太多考虑。 主要是面试官在旁边,很差意思让他一直等着,就老想赶快写完得了。还好面试官挺好的,不是很苛刻,否则小细节能怼死我。c++

其余题目:(想到哪说哪,彻底乱序的)

  1. 其余语言会吗?(几乎不会)
  2. 项目是Windows的是吗?不是网页的(对);
  3. 写过web项目吗?(最近写了一点,用的spring boot);
  4. 项目规模(两到三人);
  5. 有人专门负责前端是吗(对);
  6. 数据库是用的MySQL吗?(是的)那日常数据库的语句都是怎么写的?(用啥网上查啥)join做用(不会)想删除一行怎么作(delete);
  7. 游戏手感是什么?能不能用数据来描述?
  8. FPS啥意思?(帧) 帧是什么?(画面)你真的理解FPS是什么吗?(我想了几秒,恩...FPS是越高越好,是每秒的帧数,当足够大的时候,肉眼看起来就像是连贯的) 说到这里面试官终于点了点头;
  9. 读过什么源码吗?(只读过java的一些源码)好比什么(HashMap,我想你赶忙问问我好吹一波,结果面试官可能对这个不太熟 就没继续问下去);
  10. 还有不少想不起来了。

恩总之仍是很不错的一次体验,网易伙食也很棒,就是吃饭的位子感受有点挤。还有昨天有点降温,就穿了件衬衫的我瑟瑟发抖.....

相关文章
相关标签/搜索