通用游戏开发问题
这些低难度问题通常在电话筛选和现场面试初期被问及。
- 介绍一下你的个人项目。
- 按1-10分评分,你的C++水平如何?
- 谈谈你在Unreal Engine方面的经验/专业知识。
- 游戏UI框架具体是如何工作的?
- 什么是Qt?
- 什么是WPF?
特定游戏开发面试问题
虽然游戏面试中的许多问题与通用编程面试问题重叠,但也有许多是这个行业特有的。因为游戏开发公司处理许多独特问题,他们需要确保你具备解决这些问题所需的专业知识。
- 如何实现一个属性不断变化的系统,比如角色扮演游戏中的属性系统?
- 如何为游戏角色之间的病毒传播创建算法?
技术问题
- 列表/数组/集合/映射/哈希映射/向量的大O运行时间是多少?
- 如何进行二分查找?
- 何时最适合使用列表/数组/集合/映射/哈希映射/向量?
- 哈希映射的详细工作原理是什么?
- 对数组进行二分查找的运行时间是多少?
- 什么是平衡树与非平衡树?各自的使用场景是什么?
- 如何使用栈/队列进行深度优先和广度优先搜索?
- 引用和指针有什么区别?
- 点积表示什么?其大小意味着什么?
- 点积可以如何使用?
- 叉积表示什么?其大小意味着什么?
- 叉积可以如何使用?
- 如何反转字符串?
- 什么是反射?它是如何工作的?
- 如何使向量相对于墙壁反射?
- 虚函数表(vtable)是如何工作的?
- 如何确定移动物体何时最接近另一个物体?
- 何时需要归一化向量?
- 如何计算法向量?
- 如何计算两个向量之间的距离?
- 如何设置一个位?
- 如何清除一个位?
- 如何检查一个位?
- 如何切换一个位?
- int32的最大值是多少?
- 请用二进制表示-3。
- 请用十六进制表示-4。
- 在64位系统上,int*的大小是多少?
- 解释Slab分配器。
- 解释Buddy分配器。
- 解释Stack分配器。
- 解释可重定位堆(Relocatable Heap)。
- 解释池化分配器(Pooled Allocator)。
游戏调试问题
- 你会如何尝试复现一个错误?
- 调试器为解决特定问题提供了哪些选项?
优化问题
- 如何让一个函数在数千个对象上以尽可能高的帧率运行?
- 如何分配内存以最有效地利用CPU缓存大小?
- 你有使用VTune等工具的经验吗?你会如何使用它们?
游戏开发者行为面试问题
也称为"文化契合度"问题,旨在筛选你与公司及同事的兼容性,以及自律和解决问题能力等特质。
- 介绍一下你自己。
- 你为什么对游戏开发充满热情?
- 你在游戏中修复过的最难bug是什么?你是如何修复的?
- 告诉我你与老板/同事发生过的一次冲突。