发布于 

多益一面

09.07 多益一面

  1. 自我介绍;

  2. 介绍一下你最得意的项目

  3. 那你为什么想投游戏开发岗位?

  4. 你说说为什么这么关注《黑神话·悟空》这个游戏?

  5. 你自己平常喜欢什么类型的游戏?

  6. 玩过多益什么游戏吗?

  7. 说说面向对象思想

  8. 平时有了解过什么数据结构吗?

  9. 那你说说数组和链表的区别是什么?

  10. 知道递归吗?说说递归的优缺点和使用场景?

  11. 如果不用递归的话有什么其他的方法呢?

  12. 现在让你设计一个扫雷游戏,你会怎么设计?

    这里我说先划定n*n区域的大小和边界,然后每点开一个格子会出现一个数字,表示这个数组周围8个内有多少个炸弹,然后就被打断了,说不用考虑这么多。

    然后我继续说,简单实现的话就用随机数生成m个坐标,表示地雷的位置。

  13. 那如何保证随机生成的不会重复呢?

    这里我说可以用HashSet来实现去重,避免生成重复的地雷位置。

  14. 如果用Set来做的话生成的那就不是真随机了,概率肯定就不一样,要保证随机的概率一样

    我说可以把n*n大小的区域划分为m个区域,然后每个区域再生成一个随机位置,这样也相当于是生成了随机地雷。然后面试官说用这种方法的话其实也不是真随机,会导致炸弹分布的很均匀。

  15. 你知道洗牌算法吗?

    我说我没有了解过,他说其实就是用洗牌算法来实现的。

    洗牌算法是用来打乱一个有序序列的算法,常用于随机排序数组或集合中的元素。

    以下是洗牌算法的一种常见思路,通常称为 Fisher-Yates 洗牌算法:

    1. 从要打乱的序列中选择最后一个元素,即最后一个位置的元素。
    2. 随机生成一个介于 0 和当前位置(包括当前位置)之间的随机数,可以使用随机数生成函数来实现。
    3. 将当前位置的元素与随机选择的位置的元素进行交换。
    4. 接着从当前位置的前一个位置开始,重复步骤 2 和 3,直到第一个位置。
    5. 然后从未被选择的元素中随机选择一个元素,将其与第一个位置的元素进行交换。
    6. 重复步骤 2 到 5,直到所有位置都被处理完毕。
    7. 这个算法确保了每个元素在最后的洗牌结果中具有相等的概率,并且生成的排列是随机的。
  16. 你平时日常的时间是怎么分配的呢?

  17. 手撕代码:二分查找;

  18. 手撕代码:非递归方法生成斐波那契数列;

  19. 反问环节。


本站由 Cccccpg 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。