【面试准备】游戏开发中的几个岗位分别做什么&考察侧重点

本文探讨了游戏开发中客户端引擎工程师和客户端工程师的岗位区别及面试重点,强调了图形学、C++、算法和数据结构的重要性。同时,介绍了技术美术岗位的职责和面试常见问题,包括PBR等技术。通过面经分享,帮助读者理解不同岗位的需求和准备策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在准备面试一些游戏开发岗位的过程中,我发现几个彼此重合、名字相似的职位,在牛客和知乎上浏览面试经验的时候,发现有不少人在面经当中总结失败经验,就包括没有搞清楚目标岗位考察的重点。

我也是一个小白,刚刚开始学习图形学和游戏开发,希望总结一些信息避免自己冲错领域

客户端引擎工程师

我准备某厂的面试时间比较久,某厂校招喜欢用这两个词:
客户端引擎方向
客户端方向
单论名称我真的很难分出这两个岗位的区别,我研究了一段时间的结论是:
引擎是怎么写出来的呢,是用C++配合一个图形API写出来的,所谓客户端引擎方向是要和引擎打交道的,因此使用过openGL/DirectX12/Vulkan这些图形API是非常必要的;同时由于我所准备的这家厂以坚持自研引擎出名,在这里对于引擎的各种功能的理解就显得更加重要。
客户端引擎方向重点:图形学、图形API、Unity/UE4、脚本语言C#或js
也会考察:算法C++数据结构;

另外,该岗位面试也找到过这样的问题:如何利用程序帮助美术实现……
所谓美术就是后面的技术美术了,在游戏开发过程中三类人(引擎程序员、图形工程师、技术美术)的工作是相互匹配的,当然我还没有入职我很难谈的很深,如何利用程序帮助美术这个问题如何回答我也还在研究……

客户端工程师

以网易雷火为例,无论是Unity客户端开发工程师,还是游戏研发工程师(客户端方向)都属于客户端方向。它们的显著特点是:重度考察C++,算法和数据结构,说得更清楚一点就是大学里的ACM,或者自学刷LeetCode所学到的东西。
一方面会很深地问C++,比如C11新特性、一些关键字和底层的问题,另一方面又会问很多算法

如果要备战这类岗位,

前端中高级开发面试题通常会涉及更深层次的技术知识和实践经验。下面是一些常见的主题以及它们的具体问题示例: ### 一、HTML/CSS 深度理解 1. **BFC是什么?它有哪些特性及应用场景** - BFC (Block Formatting Context) 是一种独立的渲染区域,在这个区域内元素按照一定的规则布局,并且不会影响到外部的其他内容。 特点包括: * 内部盒子会在垂直方向上一个接一个地排列; * 它里面的内容绝对不会超出容器边缘;可以防止浮动元素覆盖非浮动元素的情况发生等。 2. **Flexbox 和 Grid 的区别在哪?什么时候应该选择哪一个?** Flexbox主要用于一维设计(即行内或者列),而Grid更适合处理二维布局(行列同时存在)。如果需要创建复杂的网格系统,则建议采用CSS Grid。 3. **如何解决页面加载性能优化的问题?** 可以通过减少HTTP请求次数,合并文件资源,压缩图片大小等方式提高网页打开速度。此外还可以利用浏览器缓存机制保存静态资源如样式表、脚本库等,避免每次访问都重新下载整个网站的所有组件。 ### 二、JavaScript 高级技巧 4. **解释闭包的概念并给出实际例子说明其作用** 闭包是指函数与其词法环境之间形成的一个组合体,即使该函数在其原始范围内已经执行完毕也可以继续引用其中变量值的一种现象。例如: ```javascript function createCounter() { let count = 0; return function(){ console.log(++count); } } const counterA = createCounter(); counterA(); // 输出 "1" ``` 5. **谈谈this指向原则及其变化规律** this关键字取决于调用上下文而非定义位置。普通函数默认绑定全局对象window(严格模式下未指定则为undefined),作为方法时属于当前实例对象;箭头函数内部this永远等于外层最近一层函数的作用域里的this... 6. **事件委托的工作原理是什么样的呢?** 利用了冒泡阶段的特点将所有子孙节点触发的目标事件统一交由某个祖先级别监听器负责捕获响应。比如对于动态生成列表项来说,只需给ul加一次click监听即可对li标签操作作出反应,无需针对每一条记录单独设置处理器,极大提高了程序效率减少了内存占用量。 7. **Promise链式调用过程解析** 当resolve/reject回调被执行之后就会返回一个新的promise状态承诺对象供下一个then/catch消费,从而实现了异步任务之间的顺序衔接。并且每个链接环节都可以传递结果数据向下流转直到完成最终的操作流程。 8. **async/await语法糖背后隐藏着哪些特点?** async修饰符标识此函数体内含有异步等待表达式 await ,当遇到后者暂停代码后续指令执行直至右侧promise resolve 结果到来才恢复运行。二者搭配使得基于 promise 编写的代码看起来像同步那样简洁明了,易于理解和维护调试错误信息追踪定位更加方便快捷。 9. **深拷贝浅拷贝的区别在哪里?** 浅复制只是把目标对象第一层次属性直接赋值过去,但如果包含有复杂的数据结构的话原地址还是保持不变;相反深度克隆则是递归遍历每一个成员项彻底重建出一份全新的副本出来不再互相干扰依赖关系。 ### 三、框架与工具链 10. **Vue生命周期钩子函数都有哪些重要场景应用?** Vue提供了一系列内置生命周周期挂钩让开发者可以在特定的时间点插入自定义逻辑来进行初始化配置、更新视图或者其他必要的交互动作。典型案例如created用于获取初始数据,mounted适合挂载完成后启动定时器轮询接口请求之类的功能需求。 11. **React JSX本质意义及其优势体现于何处?** JSX是一种类似于XML标记语言风格扩展形式允许我们在jsx模板里混合书写html样式的DOM树形结构的同时支持嵌入js运算表达式来增强灵活性。相比于传统的模版引擎,这种方案能够更好地结合react虚拟dom的优势,简化组件构建步骤并提升整体渲染效能。 12. **Webpack打包过程中常用插件推荐几个?** HTMLWebpackPlugin 自动生成index.html入口文件并将所有的bundle js/css自动引入; CleanWebpackPlugin 清理旧版本产出目录下的无用冗余资源; MiniCssExtractPlugin 分离css样式成单独文件而不是注入style 标签之内等等都是很实用高效的辅助类库可以帮助我们高效便捷地管理项目工程化建设工作流。 --- 当然这只是冰山一角,具体考察重点还要看岗位职责范围和个人专业背景经历的不同侧重点有所差异。希望以上能为你带来一些参考价值!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值