一面
网易大厦
技术栈:react(es5)+jquery
数据结构
- 二叉树基础知识点
- 算法描述:如何将链表反向
数据库
- mysql和mongodb的区别,底层实现的原理(简历当中提及)
- 简单的sql语句
前端
- JavaScript基本数据类型
- 语义化标签
- 块级元素行内元素
- VIsibility:collapsed和display:none的区别
- Jquery和es5(并不熟悉)
- angular两个版本的理解,angular2脚手架干了什么事情
- react数据流的理解
项目相关
- 项目当中遇到什么问题,是怎么解决的
- 学习前端的方法
- 看过什么书
面试的内容比较中规中矩,但是准备的不好,相关的数据结构和数据库的内容都没有准备,准备网易的面试一定要注重全栈,前端部分有些基本问题没有答好,对jq也不太熟悉,所以一面就挂了
一面
侨鑫大厦
技术栈:前端是angular后台是go语言及其它微服务架构
算法题
个人感觉该题目如果没有在项目当中经历过比较难答的好,主要是数据库安全和相应的容灾策略的问题,大概原理是懂的但是不好表述,也没有这方面的经验
服务端
- cookie和session的理解(简历当中提及的项目经历)
- 关于cookie和session带来的安全问题如何防范(csrf问题)
一面完全没有问到关于前端的知识,可见网易游戏对全栈的要求比较高,算法题其实不难,但主要是在紧张的环境下怎么去思考问题,找到最合适的解决方法,比较考察思维能力。数据库的话,最好是关系型和非关系型都懂,哪一种数据库就无所谓
二面
算法
- 命令行版本的扫雷
跟贪吃蛇的写法差不多,主要是流程控制,具体实现就根据扫雷的规则,重点应该是地图的重绘和状态的保存,考察的算法是广搜。感觉面试官考察的是对整个项目怎么实现的思路,和相关函数的定义
前端
- angular1.x和angular5的差别
- 对angular5的理解和数据流通的方式
- 服务存在的形式
- 项目当中遇到了最难的问题是什么,怎么解决(我回答了angular组件之间通信的方式,还有websocket的封装和构建,在websocket这块探讨的比较深入,相关的原理和实现方法)
- rxjs相关(observable的传递方式,因为比较熟悉的是使用subject,对直接传递observable没做了解)
二面对前端的东西问的比较深入,基本上如果没有实际的项目开发经历的话很难水过去,一些问题只有在实际开发过程中才会有比较深入的思考和体会,其实面试官主要是考察你的思考能力,和自己的一些理解。
三面
算法题
- 实现一个复杂链表的复制函数(链表当中的节点除了有指向下一个节点的指针,还有一个指针指向一个任意的节点)
思考的时间花了挺久,只想到最基本的实现方式,暴力求解,可能考察的是对指针和链表结构的内容吧
前端
- angular1.x和angular5的区别
- angular服务单例的理解(懒加载情况下服务的是否是单例)
数据库
- 锁的机制
- 乐观锁和悲观锁
后台
- 如何分配内存更加的高效
这个问题其实我也没懂面试官问的什么意思,所以面试的过程也是从各个方面去寻找问题的答案,应该是关于操作系统内存池方面的知识,我回答的是关于内存分配的策略,以及分页分段,在内存当中构建映射表,以链表的方式将分配的内存联系起来,通过表中的映射关系查找内存对应的地址。
三面感觉是压力面试,面试官的级别也会比较高,而且面试时间比较短,尽量不要在思考过程当中浪费太多时间消耗面试官的耐心。
hr面
主要是对你个人性格的了解,相关的社团经历,只要你表现出个性开朗,善于团队协作,不断学习不断进步就没问题了,形式的话是电话面试,大概就十几分钟。
个人感受
在面试网易游戏的期间我也参加了一些小公司的面试,因为我是前端开发岗,问的问题都是比较基础的,就是网上的那些题目。但是网易游戏比较看中个人的全栈能力,所以数据库方法和相关的算法一定要过关,而且面试的时候当场打代码也是比较考验个人的心理素质吧,感觉跟期末机考的时候差不多。个人认为前端应该比较注重自己的项目经历,面试的很多问题也是在项目经历当中谈及,对于自己的项目经历可以在简历当中设问,比较有针对性。四面之后,兜兜转转一个星期才发了offer,感觉运气的成分也很大,很感谢师兄师姐的帮助和建议,共勉!