面试复盘 | 网易互娱 正式批 面试

本来对于网易的游戏岗位,我最先投递是的网易雷火事业群,后来看见别人推送网易互娱的一个免笔试的活动,恰好符合条件就投递了,后来由于雷火进程太慢了,在邀请面试时,放弃了,就保留了互娱这一个岗位,谁知面完进了互娱的池子....

下面来复盘一下两次面试的内容,欢迎大家一起交流学习~

一面(90mins)


自我介绍

  • 基本情况介绍

手撕代码

  • 动态规划类型

    一开始写了一个暴力遍历的解法,面试官问还可以怎么优化,想了一下说可以通过动态规划来解决,介绍了一下解法思路,面试官说可以,也没让代码实现。..... 面试完了再回顾这道题,竟然发现当初和面试官讲的思路行不通.....哈哈哈哈看来面试官被忽悠住了😝

项目介绍

  • C++ 项目介绍,展开问题:
    1. C++ 多态介绍下?

      分别回答了编译时多态和运行时多态,进而面试官追问到虚函数、虚函数原理....

    2. C++11 标准用了哪些?

      自动类型推断、匿名函数、移动语义和完美转发,function 类模型和智能指针。

    3. 介绍下智能指针怎么实现的?

      主要对 shared_ptr 和 weak_ptr 进行了提问,包括之间的区别,在底层上是怎么实现的,基本上算是把 shared_ptr 手撸了一遍,这里提供一个参考版本:

      template<class T>
      class smart_pointer {
      private:
          T* _ptr; 
          int* _count;
      
      public:
          smart_pointer (T* ptr = nullptr) : _ptr(ptr) {
              if(_ptr) _count = new int(1);
              else _count = new int(0);
          }
      
          smart_pointer(const smart_pointer* ptr) { 
              if(this != &ptr) {
                  this->_ptr = ptr._ptr;
                  this->_count = ptr._count;
                  (*this->_count)++;
              }
          }
      
          smart_pointer& operator=(const smart_pointer& ptr) {
              if(this->ptr == ptr._ptr) return *this;
      
              if(this->_ptr) {
                  (*this->_count)--;
                  if(*this->count == 0) {
                      delete this->_ptr;
                      delete this->_count;
                  }
              }
      
              this->_ptr = ptr._ptr;
              this->_count = ptr._count;
              (*this->_count)++;
              return *this;
          }
      
          T& operator*() { return *(this->_ptr); } 
          T* operator->() { return this->_ptr; }
      
          ~smart_pointer() {
              (*this->_count)--;
              if(*this->_count == 0) {
                  delete this->_ptr;
                  delete this->_count;
              }
          }
      
          int use_count() { return *this->_count; }
      }
    4. 使用了什么 STL 容器,底层怎么实现的?怎么扩增容量的?

      主要回答了 vector 容器,讲了一下 vector 的实现原理,相比于其他容器的特性和缺点,对它的大小和容量面试官也提问了一些。另外面试问能不能自己实现一个容器,来回墨迹半天搞不懂面试官到底是要干什么,也就放弃了...

    5. 项目中缓存区怎么实现的?怎么实现自动紧凑和增长的?

      介绍了下实现原理,因为是基于 vector 来实现的,面试官问会存在什么问题,还可以怎么优化,简单回答了下性能方面的优化思路。

    6. select 、poll 和 epoll 的区别?

      从结构、功能、性能、可移植方面进行了回答,这问题太常见了所以准备的相当充分,面试官看我回答的比较全面也就没再追问了。

    7. 介绍下操作系统的进程管理是怎样的?我们用的操作系统使用了那种调度策略?

      从进程状态和页面调度两个方面进行了回答...

情景题

游戏中假如有一个炸弹,这个炸弹的伤害范围是一个圆形区域,同时在地图里有很多人物,问怎么设计逻辑判断这个炸弹对哪些人物造成了伤害?

  • 答:可通过勾股定理计算每个人物与炸弹坐标的距离;
  • 问:计算距离涉及到根号计算,复杂度较高,如果了成千上万的人物在地图里,怎么优化?
  • 答:对于比较远的人物,可以直接比较单个坐标值,人物某个坐标值与炸弹对应坐标值的超过了伤害范围可直接判断无伤害。
这一个问题和面试官周旋了好久,get 不到面试官的点,最后我用草稿纸画了下示意图,将每个坐标分别在 X 轴和 Y 轴上进行投影,根据在两个轴上单个维度的距离可计算的快一些,避免更复杂的开根号计算。

二面(50mins)


自我介绍

项目介绍

  • 介绍一下两个版本实现之间的区别;

    第二个版本是第一个版本的优化版本,着重介绍了改进的点,以及采用的 C++11 新特性;

  • 同步 IO 与异步 IO 的区别?

  • 阻塞 IO 与非阻塞 IO 的区别?

  • 同步日志和异步日志是怎么实现的?生产者-消费者模型是怎么实现的?

  • 定时器是怎么实现的?

  • GET 和 POST 的区别?在解析时需要注意什么?

手撕代码

  • LeetCode 爬楼梯
  • 输出所有可能的方案不是方案数量——回溯法。

情景题

  • 在二维地图中,有一些补给点,还有很多角色,对于每个角色返回距离他最近的补给坐标,要怎么设计?需要注意,补给点是固定的,角色是在地图中运动的。

    设计要点:对固定的补给点来设计而不是运动的角色,例如对补给点来设计一种排序,给定一个坐标返回距离这个坐标最近的补给点。

  • 情景题:设计一个排行榜,每个角色有一个分数,这个分数是动态变化的,你怎么设计这个排行榜?

    这个题目面试官好像是想考察数据结构的,当时回答时主要想设计一个可以动态地、高效地排序的数据结构,需要注意的是除了前十名,后面的角色分数也是要维护,因为可能后面的角色获得一定分数后可能进入前十名。这一题答的不太好,面试官说回去可以再好好研究一下。

总结


因为是投递的游戏岗位,所以网易互娱的面试还是比较有偏向性、专业性的,很多问题都是从游戏开发的角度来进行提问,没有相关经验的话感觉不太好 get 到面试官的点。整体来说,还是有一些难度的,考察的八股等基础知识主要穿查在项目中考察,对代码能力和情景问题的分析比较看重吧。

另外,网易互娱的面试流程真的是太慢了,两次面试间隔了一周,二面完现在过去一个多月了还是没有消息😡

#面试复盘##面经##网易互娱##秋招##C++工程师##游戏研发工程师#
全部评论
排行榜那题,是不是可以前十名用链表来维护,后面的用大根堆来维护
1 回复
分享
发布于 2021-11-23 11:23
加油
点赞 回复
分享
发布于 2021-10-22 17:52
联想
校招火热招聘中
官网直投
楼主的项目是高性能服务器吧
点赞 回复
分享
发布于 2021-10-24 10:21
还没消息吗 楼主
点赞 回复
分享
发布于 2021-10-24 15:12
请问现在怎么样了
点赞 回复
分享
发布于 2021-11-01 11:22
lz,研发的就两面技术面嘛? 我一个小测试为啥有三面😥
点赞 回复
分享
发布于 2021-11-01 17:05
那个爬楼梯用动态规划最快
点赞 回复
分享
发布于 2021-11-07 11:07
情景题是不是不要开根号也能比大小,,,
点赞 回复
分享
发布于 2022-02-08 22:47
第一题怎么用动态规划解决呢 一面情景题那个可以把距离平方和爆炸半径平方比较吗?
点赞 回复
分享
发布于 2022-04-02 19:14

相关推荐

🕒岗位/面试时间前端开发工程师/4.9&nbsp;10:00面试时长:30min👥面试流程1、面试官介绍部门信息2、自我介绍项目/聊天:3、讲一下让你最有成就感的项目以及为此学习的技术4、除了react还掌握什么其他的前端框架?5、你认为vue2、vue3、react比较起来各自有什么特点?基础:6、了解闭包吗?7、有用过闭包吗?有用闭包的特性封装过什么?(封装过一个防抖的hook)8、闭包形成的原理是怎么样的?(大概知道,但讲不太清楚)9、谈谈你对前端缓存的理解(讲了强制缓存和协商缓存)10、请求头和响应头有哪些跟缓存相关的字段?11、谈谈对敏捷开发的理解12、什么场景适用于计划开发?什么场景适用于敏捷开发?算法:13、二分查找反问:技术栈:react、node、vue(为主)这么快就结束么?偷偷说了一句隔壁鹅面了快两个小时():面试官表示半个小时还挺正常的(反问再反问:平时除了编程还有什么兴趣爱好?最近读了什么书?读完有没有什么感悟?🤔面试感受两次美团的面试体验都挺好的,面试官会给你时间让你思考,实在思考不出来会再对你进行一些提示和引导,最后也会对一些你不清楚的问题做一些小的总结并鼓励你后续再深入理解。然后两次美团面试算法考察的也是比较简单基础,整体的气氛是比较自然和谐的。😘后续:面试完一个小时左右hr来电约了二面时间
点赞 评论 收藏
转发
211本金融9硕计算机,无实习,项目黑马redis和学成在线。第一次面试,头铁大厂,果然寄了。上来先手撕算法,第一个mid不会,第二个mid简单,动态规划,一次可以跳一步两步三步,问跳到第n阶有多少种方法。一道简单sql,工资表和部门表,求部门平均工资并排序。第一次面比较紧张,第一个mid题内容太长好复杂看了好久,不会。第二个mid用动态规划写完了以后,讲了思路,让我再用递归实现,递归核心代码写出来了,但是是acm模式,不清楚怎么把输入的值当全局变量给递归里面直接用,所以报错没法运行。问项目😵没好好准备,我以为就问问八股,一上来问项目给破防了。1.redis为什么快?&nbsp;当时没准备项目,就说了内存和单线程,没说太多2.压测qps多少,说2000左右,然后问mysql最大qps多少,redis最大qps多少,不会。回去查发现redis是10w左右,我当时是不是说的太少了?可做项目jmeter测的确实2000左右3.问我为什么商户缓存要用redis,MySQL完全可以承担压力,我扯了效率,热门商户可能被频繁访问,他表示还是不理解,我也不知道说啥了。回来反思是不是应该说防止恶意攻击或者说就为了学习缓存雪崩击穿之类的知识点才做的4.问秒杀业务和如何避免缓存击穿,经典答的七七八八,然后知道我对项目不熟悉没准备好开始问八股:1.trycatchfinnaly,什么情况下或者用什么方法可以不执行finnaly中的代码块,不知道,猜了断电和error导致无法运行,回来查答案好像是system.exit()...2.问熟悉泛型和反射吗,不熟悉😓3.问cas,会,答了原理和aba问题,还没答完,看我会就让我不用说了4.问多线程底层怎么保证线程数据的可见性,不知道,说知道volatile可以,问volatile底层怎么实现的,不知道...反馈:技术深度上不足,对你简历提到使用过的一些东西要有比较全面和深入了解,不能只是会用,最好能结合具体场景自己做一些测试和实操,另外java基础上也要全面看看害,答不上来,而且项目跟着黑马做的,感觉被问起来心里没有底气,背的大部分八股也都是常见的,感觉问的好偏,一问一个不会,连深挖的余地都没有,给我整emo了。加上本科是金融学,感觉多少有点劣势了感觉运气也不好,再沉淀沉淀重新投了,发面经攒人品😖😖😖
点赞 评论 收藏
转发
本人哈工大大三本科人工智能,想着保研,想着摆烂但是室友拉着投美团,笔试答的不好,以为不会一面,结果周四告诉我要下周一&nbsp;一面,太抽象了。。。leetcode&nbsp;刷了不到30道。。。面经就准备了3天。。1.上来先自我介绍(说了项目和奖项、简单说了技术栈。。。我甚至还说了政治面貌)2.&nbsp;拷打项目((1)爬虫生成知识图谱&nbsp;(2)智能卫星图像分析&nbsp;(3)AI+物联网的一个项目&nbsp;)3.讲项目的同时说这个项目可以有哪些关于测试的东西(我尽量往&quot;测试&quot;上靠,还是挺简单的)4.开始做题了(&nbsp;面试官问&nbsp;&quot;求一个数组的所有子数组&quot;&nbsp;。。虽然简单题。。leetcode刷30题的我脑抽不会了。。。&nbsp;)5.&nbsp;跟面试官说没思路之后,面试官说这个结果输出如何进行测试(给我台阶咯,我开始吟唱)6.开始问算法了。。。(面试官在约面试之前就告诉我岗位可能主算法,辅测试),问大模型了解没有?(&nbsp;前2周没啥事看了一下大模型的免费课,所以当然了解了!)7.目前主要的大模型有哪些、大模型是什么结构、大模型是如何应用到实际场景的、大模型是如何训练的。(我刚好看了一下chatGPT大模型是用人工来强化学习的,答的中规中矩)8.开始问深度学习模型是如何训练的、问超参数如何调、如何避免过拟合现象、如何处理数据集9.最后问了一个神经网络的初始参数如何初始化(我答的迁移学习、人工给值、高斯。。也就是随机等等)10.开始喜闻乐见的反问环节了。。。(我吐槽背的计算机网络、OS、数据库、测试面经都没考,哈哈哈哈)11.问我为什么选择测试这个岗位,我回答是换新鲜度,学校里面搞开发搞多了,想换一个行业了解(当然,我学校里面写代码一点也不算多。。。。)整体面试下来有1个小时10分钟了,面试官是测试的小姐姐,还是挺轻松愉快的,虽然是人生中第一次面试,但是感觉不错。岗位是关于测试的,结果全考的算法岗的知识。。。5点面完的,7点就发二面通知了,相比我其他舍友发的早了不知道多少(感谢测试部门的高效率)。。。周三二面,要开始准备了,但不知道要准备啥。。。(&nbsp;&nbsp;测试&nbsp;or&nbsp;算法)。。。
点赞 评论 收藏
转发
15 133 评论
分享
牛客网
牛客企业服务