网易互娱初级游戏研发(一面面经)估计凉!很详细!希望帮助你

点关注 , 不迷路;持续更新Java相关技术及资讯!!!内容源于群友投稿!记录面试网易互娱游戏研发的面经 , 整理一下经验 , 分享给大家 , 感谢支持!
网易互娱初级游戏研发(一面面经)估计凉!很详细!希望帮助你文章插图
前言我主攻 Java , 面试官确定我不会 C 和 C++ 后放弃问了 , 就转向 Java 大本营 。
撕代码环节【网易互娱初级游戏研发(一面面经)估计凉!很详细!希望帮助你】面试总共 1.5h , 前 0.5h 手撕代码 , 然后面试官面了我 1h
代码题:实现数组的随机排序 Reorder()
题目:提供 rand() 和 floor() 函数 , 其中 rand() 生成 [0, 1) 的随机浮点数 , floor() 返回小于浮点数 f 的最大整数
样例输入:[7, 9, 0, 3, 1]样例输出:[3, 1, 0, 9, 7]
要求:算法尽量地高效 , 除了上面两个函数 , 不要调用其它函数
代码我就不贴出来了 , 本质上就是简单的“洗牌算法” , 然而我在写这个面经时才知道有这种算法 , 在面试时我都是凭直觉写的 。。 罪过罪过~
正式面试环节

  1. 自我介绍一下
  2. 解释一下你上面写的代码(我就说了乘一个因子)
  3. 有没有更快的算法啊(上面写的代码时间复杂度是 O(n) 了 , 我就想着怎么降低到 O(logN) , 然后突然提到分治?)
  4. 我们今天的面试分为 Java , 操作系统 , 计算机网络还有数据结构与算法 , 你做好心理准备哈(瑟瑟发抖 , 虽然面试官很随和)
Java 部分
  1. 你知道 HashMap 的实现原理吗?你知道什么就都说出来吧
  2. HashMap 是线程安全的吗?为什么?有哪些可以保证线程安全的方法呀?(Collections.synchronizedMap() , Hashtable , ConcurrentHashMap)
  3. HashMap 扩容过程呢?(以默认容量 1 << 4 这种写法解释 , 展开说)
  4. 你知道 Vector 和 ArrayList 吗?它们有什么区别呀?(线程安全性、初始容量大小、扩容机制、数据结构)
  5. 你知道 LinkedList 和 ArrayList 的区别吗?(数据的存储结构、查询、插入的时间复杂度···)
  6. 如果我有100W个数据要存储 , 你说用 ArrayList 好还是 LinkedList 好?(100W个数据 , 如果是遍历查找的话 , 其实性能已经体现出来了 , 寻址的过程会耗费时间;还有从占用空间方面考虑···)
  7. 你知道有哪几种锁机制吗?(我扯远了 , 扯到操作系统上了 , 估计面试官是想问 synchronized的锁机制 , 还有读写锁【共享、排它】、自旋锁、阻塞锁)
  8. 我们存储一个常量是存储在哪里呀?【 实际上这个问题是从操作系统问到“const”我不会 , 面试官转向问这个问题的;】(如果是字符串 , 在 JDK.1.6 还是 1.7 就被存到堆里面了 , 如果是其它运行时常量 , 则存在方法区/元空间)
  9. 你知道重载是怎么实现的吗?面试官说这是个探讨性问题 , 没有对错哈(我懵了····)
接着引导:假设有两个函数 int a(int) 和 int a(int,int) , 我们要设计一个编译器识别它们 , 如果是你 , 你怎么设计呢?我就不给出我的答案了 , 太 low 了 , 面试官虽然点了点头 。。
  1. 来写个单例模式吧(Double Check + Lock , 没错)
  2. 来写个生产者-消费者模型吧(跟面试官说第一次写 , 后来没写好 , 大体上没错 , 细枝末节有错)

网易互娱初级游戏研发(一面面经)估计凉!很详细!希望帮助你文章插图
操作系统部分
  1. 你知道分页内存管理吧?说一下(一块块大小相同的页 , Linux 上是4Kb , 分配内存时将其分配为一块块内存大小相同的页 , 是一种离散式的内存管理 , 减少内存碎片)
  2. 那分段呢?(将程序看作成一段段连续的内存分配 , 弊端是有大量的内存碎片 , 当无法分配更多内存时 , 需要利用 Swap 空间整理内存)