网易游戏前端开发岗面经

一面

网易大厦
技术栈:react(es5)+jquery

数据结构

  • 二叉树基础知识点
  • 算法描述:如何将链表反向

数据库

  • mysql和mongodb的区别,底层实现的原理(简历当中提及)
  • 简单的sql语句

前端

  • JavaScript基本数据类型
  • 语义化标签
  • 块级元素行内元素
  • VIsibility:collapsed和display:none的区别
  • Jquery和es5(并不熟悉)
  • angular两个版本的理解,angular2脚手架干了什么事情
  • react数据流的理解

项目相关

  • 项目当中遇到什么问题,是怎么解决的
  • 学习前端的方法
  • 看过什么书

面试的内容比较中规中矩,但是准备的不好,相关的数据结构和数据库的内容都没有准备,准备网易的面试一定要注重全栈,前端部分有些基本问题没有答好,对jq也不太熟悉,所以一面就挂了

一面

侨鑫大厦
技术栈:前端是angular后台是go语言及其它微服务架构

算法题

  • 广搜算法
  • 另一道题目类似聪明题,观察规律,按要求完成

    数据库

  • 如何在高并发情况下实现redis数据库表当中字段的更改,而用户不会察觉

个人感觉该题目如果没有在项目当中经历过比较难答的好,主要是数据库安全和相应的容灾策略的问题,大概原理是懂的但是不好表述,也没有这方面的经验

服务端

  • cookie和session的理解(简历当中提及的项目经历)
  • 关于cookie和session带来的安全问题如何防范(csrf问题)

一面完全没有问到关于前端的知识,可见网易游戏对全栈的要求比较高,算法题其实不难,但主要是在紧张的环境下怎么去思考问题,找到最合适的解决方法,比较考察思维能力。数据库的话,最好是关系型和非关系型都懂,哪一种数据库就无所谓

二面

算法

  • 命令行版本的扫雷

跟贪吃蛇的写法差不多,主要是流程控制,具体实现就根据扫雷的规则,重点应该是地图的重绘和状态的保存,考察的算法是广搜。感觉面试官考察的是对整个项目怎么实现的思路,和相关函数的定义

前端

  • angular1.x和angular5的差别
  • 对angular5的理解和数据流通的方式
  • 服务存在的形式
  • 项目当中遇到了最难的问题是什么,怎么解决(我回答了angular组件之间通信的方式,还有websocket的封装和构建,在websocket这块探讨的比较深入,相关的原理和实现方法)
  • rxjs相关(observable的传递方式,因为比较熟悉的是使用subject,对直接传递observable没做了解)

二面对前端的东西问的比较深入,基本上如果没有实际的项目开发经历的话很难水过去,一些问题只有在实际开发过程中才会有比较深入的思考和体会,其实面试官主要是考察你的思考能力,和自己的一些理解。

三面

算法题

  • 实现一个复杂链表的复制函数(链表当中的节点除了有指向下一个节点的指针,还有一个指针指向一个任意的节点)

思考的时间花了挺久,只想到最基本的实现方式,暴力求解,可能考察的是对指针和链表结构的内容吧

前端

  • angular1.x和angular5的区别
  • angular服务单例的理解(懒加载情况下服务的是否是单例)

数据库

  • 锁的机制
  • 乐观锁和悲观锁

后台

  • 如何分配内存更加的高效

这个问题其实我也没懂面试官问的什么意思,所以面试的过程也是从各个方面去寻找问题的答案,应该是关于操作系统内存池方面的知识,我回答的是关于内存分配的策略,以及分页分段,在内存当中构建映射表,以链表的方式将分配的内存联系起来,通过表中的映射关系查找内存对应的地址。

三面感觉是压力面试,面试官的级别也会比较高,而且面试时间比较短,尽量不要在思考过程当中浪费太多时间消耗面试官的耐心。

hr面

主要是对你个人性格的了解,相关的社团经历,只要你表现出个性开朗,善于团队协作,不断学习不断进步就没问题了,形式的话是电话面试,大概就十几分钟。

个人感受

在面试网易游戏的期间我也参加了一些小公司的面试,因为我是前端开发岗,问的问题都是比较基础的,就是网上的那些题目。但是网易游戏比较看中个人的全栈能力,所以数据库方法和相关的算法一定要过关,而且面试的时候当场打代码也是比较考验个人的心理素质吧,感觉跟期末机考的时候差不多。个人认为前端应该比较注重自己的项目经历,面试的很多问题也是在项目经历当中谈及,对于自己的项目经历可以在简历当中设问,比较有针对性。四面之后,兜兜转转一个星期才发了offer,感觉运气的成分也很大,很感谢师兄师姐的帮助和建议,共勉!