游戏引擎/图形 秋招总结
总结
总体下来秋招比较失败,最终没有收获到一个满意offer,但相比于找实习期间,有了更多的过简历和笔试 面试的机会,但是一面总是被刷,基础知识还需要进行巩固,尤其是408的基础以及项目涉及到的图形学基础知识。半路出家去做引擎确实是当时头脑一热 不想继续做Java又想着往游戏靠的人的自然想法,而且在本硕中间还工作过,不知道会不会因为这个备卡,但已经在这条路上了还是希望能继续走下去,或者拓宽下可以选择的渠道。目前做过UE引擎开发 opengl开发 一点vulkan c++基础 ,研究生前干了2年java,现在还找了个opengl开发的实习先干着,写论文准备准备春招了,自己打算再看下之前做java用过的中间件还能冲个c++后端拓宽下业务范围。
先前的项目 一段游戏引擎开发的实习 (做的UE5物理破坏部分的内容,也没有很深入过物理原理,大部分时候问的深了基础不好又回答不出来挺尴尬。整体感受很多的厂引擎就做渲染管线的魔改开发,就喜欢盯着渲染部分问,如果看过源码应该能接过几招。) 一个腾讯的线上游戏引擎实践课题(做的神经网络的东西,和实际应用挺脱离,很多面试官就看着PBR问了下带过了)一个自己写的玩具vulkan渲染器(会问点vulkan相关的东西,但vulkan的api做个东西太鸡儿麻烦,难理解了,整天在调bug)
下面是笔面试情况 除开了一些不知名小公司
简历&笔试挂:鹰角 友塔 莉莉丝 B站 灵犀 funplus 淘天 Garena
一面挂:叠纸 雷火 字节 快手 沐瞳 米哈游 游卡
二面挂:腾讯
HR面挂:心动 网易互娱
oc:华为
下面是自己认为曾经实际遇到的之中 可能在春招前需要额外注意的面试题 希望有帮到牛友
c++基础
一开始八股文并不熟练,到后面发现即使熟练这也是只是入场券,可以预想到前期的失败也很正常
- 多态虚函数原理 不实现虚函数会报错吗?什么错构建空间是否连续
- 智能指针 shared_ptr 线程安全
- 构造函数调用虚函数
- dynamic_cast / const_cast/ static_cast
- 完美转发 move 原理 使用场景
- stl是什么 内部容器的原理和时间复杂度
- 如何设计一个内存池
- lamda引用陷阱
- 类默认成员函数
- c++内存对齐机制 sizeof()使用
- c++的源码到exe的过程
- c++的动态链接静态链接
- c++的运行内存分配
- 如何在栈上分配一定的内存 会有什么问题
- 如何检查和处理内存泄露 问题
计算机网络
- TCP UDP 原理和区别
- moba设计UDP TCP的选择
- TCP粘包
- 可靠UDP的实现思路
操作系统
- 虚拟内存的分配机制
- 线程和进程区别,协程(重点关注下)
- 线程 进程通讯 切换原理
- 两个函数同一个地址执行问题
- 在栈中分配内存 alloca
- 内存中堆栈,数据区哪里读取快
- 共享内存的实现
UE
- UE的垃圾回收机制
- UE的移动端渲染管线
- UE的虚拟纹理原理 源码
- UE的网络同步机制
- UE的物理引擎原理
- 为什么UE中PBD能处理刚体 而不是单一的粒子
GPU硬件架构
- 移动端 PC端 GPU架构差异
图形学部分
- GPU渲染管线流程
- 给定入射光 法线 求反射光方向
- 光栅化的具体细节,并不是屏幕每个地方都会生成片元
- 破坏的处理开发流程
- 深度测试、模板测试、透明度测试顺序
- 延迟渲染管线流程、优势、缺点(带宽大 无法处理不透明 内存大)
- 多线程下opengl的share_context的哪些类型可以正常读写(vbo fbo vao programe)
- Drawcall Shader的优化经验 (少用除法 改用乘法)
- XPBD原理
- 隐式欧拉积分 显示欧拉积分
- PBR的参数如何影响图形效果,roughness metallic
- IBL原理
- vulkan renderpass subpass理解 透明物体放同一个renderpass还是不同
- vulkan memorybarrir
- vulkan的shader buffer类型 如何区分频繁更新和偶尔更新
- 如何判定两个不规则多边形发生碰撞
- FXAA TAA MSAA