去年秋招面经分享,以及一些想对在校生说的话

前言

我知道这个点,大家都是忙着找这个面经,忙着补那个基础知识点,忙着投简历,忙着和面试官斗智斗勇。。。废话不多说,先把我去年秋招前期记录的一些面经笔经分享给大家(至于为什么只有前期,因为秋招后期心态不好,很多面试不想记录了2333)。楼主的背景在以往的帖子里有,可以移步看看。

笔经面经(游戏客户端/引擎、技术美术渲染向)

4399

1.笔试

记不太清了,应该是选择+问答的形式,问答是接近文本框答题的形式,不过能支持C++编译运行

问答2题

  • 如果把硬币按第一行一个,第二行两个,第三行三个......依次类推的方式排列,给定硬币总数,返回这些硬币能够排列的行数
  • 给了一些二次元渲染的背景介绍,和几个提示,要求用hlsl或者glsl完善FragmentShader的内容

2.面试(30min)

距离笔试过去了快三个月才来的一面,讲道理不是很想面了,尤其是了解广州四大天坑的背景后,面试官人倒是挺好的,面试体验还不错

  • 自我介绍
  • 渲染管线
  • 深入了解过哪款具体引擎吗?
  • 你的渲染引擎做了哪些效果?
  • 讲讲延迟渲染和前向渲染的区别?
  • 局部坐标怎么转换成世界坐标的?
  • Model矩阵怎么计算的?如果我要先位移再旋转,最后缩放,怎么体现在Model矩阵上?
  • SSR是怎么做的?SSR怎么做优化?
  • 有用过抓帧工具吗?
  • 为什么想做游戏引擎这方面的工作?
  • 未来职业规划?
  • 反问进去都是做小游戏吗?具体使用哪些引擎?(大部分是基于maya的微信小游戏,也有在研UE项目)

网龙游戏

1.笔试(15单选5简答3编程60min)

单选、简答都是很基础的C++问题15-20分钟差不多就够了

3编程更简单:

  • 给定硬币价值数组,凑成指定金额需要的最少硬币数(硬币无限,力扣dp原题322零钱兑换)
  • 输入长度为3的字符串例“cba”,输出按ASCII码排序的字符串”a b c"(这是能出的?)
  • 给定A,B,n,求f(n) = (A * f(n-1) + B* f(n-2)) mod 7,其中f(1) = 1, f(2) = 1(注意Int上限,拆开来mod,dp秒了)

2.一面(30min)

面试官巨严肃和正式,没开摄像头,高考宣读式开场,问问题,有点像审判犯人一样(ㄒoㄒ)

  • 自我介绍
  • 详细讲讲介绍中提到的那些项目
  • 投屏展示自己的实时渲染引擎项目(我嗯讲了15min,后面就全问项目相关了)
  • 说下延迟渲染流程
  • 你说最后渲染占据屏幕的两个三角形就可以,那我能只渲染一个吗,一个三角形怎么操作(???给我问懵逼了)
  • 模板缓冲是什么,你是怎么用的?(举了个实际应用的例子)
  • 问了个windows UI相关的,没太听懂,说没接触过
  • 讲下CSM(本来懂的,但是猪脑过载了,不知所云了有点)
  • 超时了(打断胡言乱语),最后问一个,如何判断着色点是否在阴影中?

3.二面(56min)

这个面试官就人不错了,很认真的在听我说什么,然后根据我说的东西问问题,但是忘记录音了捏,回来整理的时候已经忘得差不多了

事后自己发现有几个图形学的知识点没记清,搁那瞎说了(比如别人问SSGI怎么实现的,我猛说SSR和SSAO,事实上这不是同一个概念哈,然后别人问BVH怎么实现的,我SAH原理又讲错了,麻了),预感要挂

果然挂了捏

三七互娱

1.笔试(11单选2简答1编程)

逆天笔试,单选题正常考察C++、C#、Unity、网络协议什么的,简答是编程题但只说思路,编程是依托构式

简答:

  • 玩家第一次进入boss区域需要播放动画,给定五个封印柱的坐标和玩家坐标,如何判断是否播放动画(投影到二维平面,然后用判断点是否在三角形里的思路就行)
  • 楼有N层,电梯只能停一次,还有一个在每层楼下的人数数组,问怎么确定电梯在哪层停使得所有的人下电梯后移动的层数最少(懒得想了,就这场景,直接遍历不是又快又好)

编程:就给个txt文本框,还禁用了复制粘贴

  • 给定一个长为M的文本,以及长为N的模式串,找出文本中符合模式串的字串,并返回它的起始下标(原题就这样一句话,没有对模式串的任何解释,那楼主只能按自己理解瞎jb写了)

巨人网络

1.笔试(20单选+2编程)

这笔试你就写吧,你将会收获毫无意义的一个小时抓狂的编码经验

单选考C++、计算机基础、图形学基础

编程

  • 三数之和(原题秒了)
  • 手撕解释器(万字长文的题目,有兴趣可以去牛客搜搜看看大伙的乐子,要模拟接近20个指令还要处理goto逻辑,算你牛逼,这分是吃不了一点)

2.一面(30min)

牛客面试出问题了,直接打电话来面试

面试官很急,估计是人太多,一个问题十秒没回答出来就准备下一个了,不过会给大致告诉你答案,最后也会给你一个大致的评价,就还行

  • 不用自我介绍,上来就是说实习项目
  • 给定节点和边以及权值,问给定起点终点,怎样获取最短的连通距离(犹豫了一下,脑子里回顾了一遍笛卡斯特拉、贝尔曼和弗洛伊德算法,面试官着急,叫我从BFS或者DFS开始讲,最后想清楚后详细描述了弗洛伊德算法)
  • 讲讲单例模式以及它的使用场景
  • 讲讲观察者模式以及使用场景
  • 那如果有个大数据量排行榜需要实时更新的场景,客户端和服务端应该怎样设计基于观察者模式的程序框架?
  • 讲讲lambda表达式的使用和结构,thread编程用过吗,讲讲lambda表达式在这里怎么用的?
  • thread的join和detach有什么区别?join方法会阻塞当前线程吗?
  • 如何删除vector< int >中指定的数,用什么标准库API?(讲了双指针原理,但面试官其实想问API的使用,但我脑子一抽忘了)
  • 反问什么时候出一面结果(当天)进去是先做什么岗?后续能转引擎吗 ?(先都是UI、Gameplay,引擎岗位置很少)

莉莉丝

1.笔试(2单选2简答1编程)

又一个逆天简单的笔试

单选:

  • 判断程序是内存泄露还是直接运行报错
  • 多线程下变量可能的输出值

简答:

  • 如何判断系统大小端
  • 如何用最少的小白鼠试出47瓶药剂里的唯一毒药

编程:LRU最久未使用缓存

Funplus

1.笔试(14单选7不定项3填空2简答1编程)

题目有点多,就记录几个我还记得的

填空

  • 如果按线性探测法解决哈希冲突,给定哈希函数,哈希表的地址为0-9,插入给定数组后,问某个元素最后存放的地址

简答

  • 为什么要用齐次矩阵?
  • 写出右手坐标系下旋转z轴30度的二维矩阵,以及缩放物体0.5倍的矩阵。

编程

  • 给定一个用户名和密码,需要用户名和秘密满足一系列的要求,返回用户名和密码是否符合要求

剑心互娱

1.笔试(3编程)

个人觉得剑心的笔试一直都是中上偏难

  • 给定一个地图二维数组,0表示空地,1表示炸弹,点击炸弹会引爆,并且其周围一圈的炸弹都会被引爆,问至少需要点击几次炸弹才能引爆所有炸弹(深搜只干了90%,会爆栈,广搜直接超时)
  • 给定两个数组,分别表示天平两边的砝码,砝码重量在1~10g之间,现在给你无数个1~10g的备用砝码,问至少替换天平上的砝码多少次能使天平两边平衡(一次只能换一个砝码)?(贪心,AK)
  • 给定一个自然数n,问[0,n]区间内有多少个二进制回文数,要求复杂度低于O(n)。(尝试了提前计算拥有1-64位二进制位时至多会出现dp[i]个二进制回文数,然后计算n的二进制位数bitNum,以dp[bitNum-1]作为初始值结果,遍历[2^(bitNum-1)+1,n],如果是则初始值+1,虽然复杂度是低于O(n)的, 不过仍然超时了,0%)

途游游戏

1.笔试(30不定项3编程)

这公司考点跟其他游戏公司不同,有些生疏了中等题都没做出来

  • 给定一个数组,每次只能从前或后取数据,取过的数不能再取,问给定k次取数的机会,取出的数总和最大是多少?(前缀和就能做,当时脑子一抽用回溯去写了直接超时)
  • 力扣原题424. 替换后的最长重复字符
  • 力扣原题480. 滑动窗口中位数(不会)

麦吉太文

1.笔试(20单选5多选2编程)

单选两个不会的

  • 总和为1000的连续自然数组合有多少种?
  • 十个路灯,熄灭三个省电,边缘两个路灯不能熄灭,并且熄灭的路灯不能两两相邻,有多少种熄法?

多选(还记得的)

  • 下列哪些排序的复杂度是Nlog(N):快排、堆排、冒泡、插入
  • 哪些HTTP请求方式是合法的:SET、PUT、HEAD、POST

编程题

  • 要将一条街上的房屋粉刷成R、G、B三种颜色,现给定一行str,例如“1 100 100,100 1 100,100 100 1”,表示这一排有三个房屋,第一个房屋粉刷成R、G、B颜色分别需要1,100,100元,相邻的房屋颜色不能一样,问粉刷完这一排房屋最少需要花多少钱(处理输入有点点麻烦,涉及到stringstream的用法,处理完后就是普通的DP题,dp数组表示粉刷下标为i的房屋为j颜色时所需要的最少资金,dp[i] [j] = min(dp[i-1] [k], dp[i-1] [l]) + costs[i] [j];, AK)
  • 给定五个变量:needToTrain--需要锻炼的时长,minPulse--最低心率,maxPulse--最高心率,trainChange--锻炼后心率提升量, restChange--休息后心率下降量,每次休息和运动都是1分钟,休息不能使心率下降到最低心率以下。问要想不突破最高心率,并达到需要锻炼的时长,最少需要多长时间,如果永远无法完成,返回-1。(贪心,能运动就运动,实在运动不了再休息,AK)

西山居

1.笔试(7单选4填空2问答2编程)

隔了一天才回来写的,其他的都忘了,就记得单选和填空都问了std::atomic变量的特性和用法,我是一点不会啊,直接爽吃零分

编程

  • 给定4个vector,分别代表点P,三角形ABC三点的空间坐标,完成函数--返回点P到平面ABC的投影是否在三角形内部(这个没数学库和公式你就写吧,一写一个不吱声,后面写不出来恼羞成怒了直接return true骗点分)
  • 实现一个简易计算机,支持加减乘除和括号运算,括号优先级最高,乘除次之,加减最后,输入为类似“(1 + 2) * 3”,存在空格、数字、操作符的字符串,输出double结果(考察基本功咯,当时是用栈和递归写的,AK)

Garena

1.笔试(20不定项3编程)

编程

  • 游戏人物会受到buff的影响,现给定n个buff的持续时间区间,问游戏人物总共受buff影响的时长(合并区间,贪心,AK)
  • 给定一个int值n,返回比n小的,与n的数字组合相同的,最大的正整数,例如(1243,返回1234),如果没有这样的数(以0为开头的结果也算是非法答案),返回0(转换成字符串,然后用标准库的prev_permutation处理一下,再转成数字返回就行了,AK)
  • 给定N组两个有序链表,返回N组链表合并并反转的链表结果(题目大意很简单,由于是ACM模式,你甚至可以直接将输入放到vector里然后用merge函数合并vector然后reverse输出就行,不过由于他详细描述了对链表的操作,所以还是依照题意写了ListNode结构体和mergeList、reverseList、printList之类的函数,AK)

腾讯IEG天美工作室群

无笔试

1.一面(67min)

  • 无自我介绍,上来就是说实习项目
  • 项目是否上线使用
  • 介绍OpenGL渲染管线
  • 你的渲染引擎如何支持延迟渲染和前向渲染?
  • 两者的优缺点?(发散又讲了Forward+管线)
  • 如果我硬要用延迟渲染,并且要求场景中物体的光照模型不同,你怎么解决?(在GBuffer里再加个Model ID贴图?具体怎么实现我也不知道)
  • 你的实时阴影怎么做的?(CSM+PCF/PCSS/VSSM)
  • CSM是什么,你怎么实现的?(详细讲了CSM的实现过程)
  • 为什么要用CSM?(节省shadowmap开销)
  • 讲讲PBR?(把微表面模型、能量守恒、菲涅尔效应、线性空间计算、色调映射讲了个遍,讲到后面思路突然断了,面试官忙说够了够了)
  • 计算完像素颜色后,还需要做哪些处理?(色调映射和gamma变换)
  • 为什么需要做gamma变换?(人眼对颜色的变化感知不是线性的)
  • 你怎么实现BVH的?(分层BVH结构)
  • 除了BVH你还了解什么空间划分加速结构?(kdTree、八叉树)
  • 你的简易标准库项目是以什么目的写的?是因为有额外的逻辑需求吗?(主要是为了学习,也是为了引擎项目能用自己的更轻量的标准库实现)
  • 引擎里用自己的标准库时有没有遇到什么问题?(没有,在投入引擎之前已经用别人写好的测试用例测试过了)
  • 了解游戏引擎的基本框架么?(Games104前言水平)
  • 了解哪些脚本语言?你的引擎项目有考虑后续加入对脚本语言的支持么?(C#、python、matlab,只是用过,理解不深,暂时不考虑加脚本功能)
  • C++虚函数怎么实现的?
  • 深度搜索和广度搜索有什么区别?(两个常规八股了)
  • 反问引擎岗与客户端岗的日常工作内容有什么区别,能举实际例子吗?(一边注重于游戏内实际功能的实现,一边注重于底层架构如动画、渲染、物理系统的实现以及跨平台优化)引擎岗的新人如何培养?(先熟悉边缘模块,由简到难地分配任务,成长取决于个人的学习能力和积极性)

2.二面(97min)

  • 自我介绍
  • 实习项目情况问询
  • C++内存管理
  • STL的细碎内存的申请和释放如何管理?(我做项目的时候偷懒没实现那个二级内存池,直接用的operator new,然后按照自己的理解说了下二级内存池的实现,大致说对了,不过还是被说为什么不去多了解底层)
  • 多线程了解过吗?(了解过,但理解不是很深)
  • 线程同步怎么做?(就会锁和条件变量)
  • 同步锁和互斥锁有什么区别?应用场景分别是?
  • 除了你的这个渲染引擎,你还有其他的渲染实践吗?(???问的啥?我都写小引擎了,有什么实践一般不都该写这里面吗?)
  • 你的实时阴影怎么做的?
  • 用CSM的话你怎么判断着色点是否在阴影里?
  • 为什么用bias?你怎么确定这个bias?用不好的话会造成什么问题?
  • 有没有注意过物体移动时你的阴影边缘的抖动现象?(没有诶。。说着我打开了共享演示了下项目,真有抖动)
  • 你觉得为什么会发生这种现象?(阴影贴图精度有限?bias取的不合理?)
  • 那如果不加那个bias,阴影贴图精度无限,还会有抖动现象吗?(墨迹半天,没答出来)
  • 了解哪些全局光照技术?(SSGI、DDGI,但是只实现了SSR和SSAO来模拟全局光照的效果)
  • 说说SSGI?(类似光线追踪,从屏幕每个像素发射一根射线到场景中,利用RayMatching模拟光线追踪,为了节省性能,一般降分辨率计算,生成有噪点的图,通过一些滤波操作后再升分辨率整合到最后的渲染结果里)
  • 为什么会有噪点?(因为是采用蒙特卡洛方法的随机反射,可能会采样到很亮的地方但是pdf又很小,或者采样到很暗的地方pdf又很大的情况)
  • 那你怎么知道光线交点的颜色?(事先存储的GBuffer里有存屏幕上每个像素点里的漫反射、法线、世界坐标等信息,然后RayMatching找到交点的uv坐标,直接查GBuffer就行)
  • 了解UE的lumen技术吗?(不太了解,只听说过,看过一些介绍lumen的博客)
  • 了解引擎的分层架构吗?(了解一点,Game104导读水平)
  • 了解引擎的对象系统吗?(不了解)
  • 手写shared_ptr,并完成功能测试(脑子有点空白,不过还是30分钟”秒了“)
  • 反问具体是天美的哪个工作室?(J5,做格斗类游戏的)日常研发主要是针对哪个引擎?(UE、Unity都有)新人一般进去是被分配做渲染/物理/几何/动画?(渲染比较多一些,具体做什么还是要看能力适配)这轮结束如果通过是三面还是hr面?(三面)

3.三面(65min)

面试官人很温和,技术细节方面没有再仔细追问,更多的是基础的考察

  • 自我介绍
  • 问实习项目
  • 平时怎么学图形学的内容?
  • 共享屏幕演示渲染引擎(聊了聊画面构成,包括阴影、环境光,因为最近在做BVH,就往那边聊)
  • BVH怎么做到实时更新的?(第一,只局部更新树,第二,包围盒用顶点变换重新计算,而不是由变换后的三角形包围盒一路往上合成)
  • 视锥剔除怎么做的?为什么要用到BVH?
  • 除了视锥剔除还用BVH做了什么?
  • 元素相同的一个排好序的vector和一个map,做查找的话,哪个更快?为什么?
  • 你提到缓存结构,缓存是怎么工作的?为什么需要缓存结构?
  • 如何才算命中缓存或者说你是怎么查询缓存里是否有这个地址的?
  • 你用页表的话我缓存本来就小,那不浪费空间吗?(多级页表+快表?)
  • 你简历上提到你的vector尾部插入要比标准库快,为什么?
  • 你怎么实现这个插入操作的?
  • 实现一个二分查找,自行测试,15min(5min秒了)
  • 为什么没在EA转正?
  • 说说你的研究方向?这个分形岩石力学是什么?(详细聊了我的土木研究方向,笑死)
  • 反问

叠纸游戏

1.笔试(25单选2编程)

单选考了数据库、计算机网络、计组、数据结构和C++

编程

  • 给定一串包含元音字母和辅音字母的字符串str,要求你用str中的字符组合出一个最长的辅音字符不能相邻的新字符串。(签到题,记录下元音和辅音字符的个数就能返回答案的,AK)
  • 给定一个行为n列为m的地图,角色从地图左上角出发前往右下角的目的地,拥有一定初始血量h,地图中值为'*'的地方代表墙壁,不能走,'.'代表可走的路,'1'-'9'代表需要战斗并损失的血量,返回最短路径距离。(最短距离基本都用BFS哈,用unordered_set记录一下到达过的状态--位置和血量的哈希值,然后分情况讨论每一步能不能丢进队列里就行了,AK)

2.一面(45min)

面试官看起来有点像刚子(艹,尴尬的),纯游戏客户端Gamepaly那边的应该是,不太熟渲染这块,然后主要问了C++基础这边,问的几个场景题我都懵的一批,不会的都说没关系(那你转手给我挂了),反问的问题也都不知道,感觉是被迫来面我的,KPI,纯KPI

  • 自我介绍
  • 实习项目介绍
  • TCP和UDP的区别?
  • UDP如何做可以更可靠?(不会)
  • 假如背包栏有个粒子特效的物体,但我不希望它的特效出现在背包栏外面,渲染上应该怎么实现?
  • 为什么材质错误的时候,引擎里会显示为粉色?
  • 你的简易STL项目在标准库之上做了什么优化吗?
  • 那你了解红黑树吗?讲讲红黑树的原理?
  • 那你觉得什么场景用红黑树会比较好?
  • unordered_map又是怎么实现的?哈希表是什么?
  • 为什么析构函数有时候需要设置成虚函数?
  • 那构造函数能设置成虚函数吗?为什么?
  • 两个有序数组如何合并?
  • 说说Unity脚本的生命周期函数?
  • 镜头跟随着玩家移动到某个位置消灭了敌人,这个过程你觉得三个Update相关函数里分别需要承担哪些工作?
  • 了解Assetbundle吗?(不熟)
  • 说说C++的智能指针?
  • 什么时候用shared_ptr?什么时候用unique_ptr?
  • shared_ptr交叉引用会出现什么问题?
  • 如果有一个任务系统,是从剧情策划那边收到的开发需求,如何与策划交流分配这个需求来保证做的完善些?(老实说完全听不懂在说什么啊xd)
  • 反问面试流程安排?(不知道)进去之后怎么培养?具体干什么是双选吗?(不知道)

诗悦网络

1.笔试

忘记记录了,一点想不起来了

2.HR面(30min)

跟聊天差不多,很多问题忘了,就列一些还有印象的

  • 自我介绍
  • 为什么选择游戏行业
  • 介绍实习项目,从中学到了什么?
  • 觉得个人做项目和与团队一起做项目有什么区别?
  • 介绍一下引擎项目?
  • 最近在持续更新指的是?
  • 怎么看待游戏行业项目上线前的加班?
  • 期望薪资?

3.一面(30min)

第一次打开会议面试官在那等我的,艹,我提前十分钟进的,然后就提前开始了

  • 自我介绍
  • 为什么转来游戏行业
  • C++内存管理怎么做的?(预判了后面一系列的问题,包括malloc,虚函数表什么的,一并带着说了)
  • 介绍红黑树?(说了特性,平衡规则,左旋右旋操作)
  • 介绍四叉树?(直接引申到八叉树,顺便讲了下BVH的构建)
  • 说说渲染管线(这里提一嘴,如果你说了解图形学,那几乎每个技术面都会问这个问题,最好有自己的理解并且拓展开去讲,可以讲很长时间,或者至少要把八股背得滚瓜烂熟)
  • 前向渲染和延迟渲染的区别?(说的越全越好,尤其是延迟渲染的优缺点)
  • 你的实时阴影怎么做的?(老生常谈了,基本详细说完CSM面试官就觉得够了,如果让继续讲,后面PCF/PCSS/VSSM又能狠拖一段时间)
  • 反问主要是做哪款引擎开发(Unity)公司如何培养引擎新人(基础培训+一对一带教)进去后是做渲染/物理/动画?直接分配还是看个人选择(主要渲染,自己选择)

4.二面(35min)

已经轻车熟路,回答问题还带点预判,导致后面面试官好像有点不知道问什么

  • 自我介绍
  • 怎样理解对象和类这些概念?
  • string和string相加,怎么实现底层逻辑的?(我说了解一点Java的实现,他说没事就说C++的就行,那vetor< char >的相加,有啥好说的,就拿个新的vector< char >存相加结果呗)
  • 视锥剔除怎么做的?部分在视锥范围内的物体怎么处理?(层次BVH,相交的Model不剔除,渲染Model时再查询Mesh层级的BVH剔除Mesh)
  • 前向渲染和延迟渲染的区别?(居然不问渲染管线就开始问这个,那我只好渲染管线起手)
  • 半透明物体和非透明物体在一起怎么渲染?(排序Or非排序技术)
  • 怎么优化透明物体、非透明物体的渲染?(PreZ+EarlyZ)
  • 透明度测试和透明度混合有什么区别?(一个是用来判断是否丢弃片元的,一个是用来混合片元颜色的)
  • 你的实时阴影怎么做的?(讲了CSM就不让说了)
  • 平时爱玩什么游戏?(能开黑的)LOL走什么位置?(野王,大师段位,骄傲地说)
  • 用Unity做过游戏对吗?(想共享屏幕演示来着,不让,说时间不够)
  • 了解过合批技术吗?(静态合批+动态合批+实例化)
  • 为什么要减少DrawCall?(CPU和GPU通信慢,重新设置渲染状态耗时)
  • 延迟渲染手机支持不好为什么?(带宽高带来的高耗电和高发热问题)
  • 你说的TBR和TBDR架构是怎么解决这个问题的?(OnChip芯片 + Tilling + 懒渲染)
  • 反问公司引擎部介绍?引擎部加班多还是客户端那边加班多?(两边都笑了,说是客户端赶进度的时候加班多,引擎部算中台,一般准时下班)

字节跳动智能创作(渲染引擎工程师)

1.一面(76min)

中途才开始录的,前面忘了

  • 左值引用和右值引用的区别?
  • 右值引用在模板编程里还有什么作用?
  • 转发参数时如果不用forward有什么后果?
  • 多线程同步怎么做?
  • 进程通信怎么做?
  • vector你怎么实现的?
  • 你说扩容时源元素挪到新的内存区域时,如果有移动构造函数会优先调用,这是怎么实现的?
  • push_back和emplace_back的区别?
  • unordered_set你怎么实现的?
  • 如何解决哈希冲突?
  • 哈希表如何扩容?
  • map怎么实现的?红黑树是什么?
  • 了解过拓扑排序吗?BFS和DFS?
  • BFS和DFS怎么保证遍历过的节点不再遍历?
  • 讲讲PBR你怎么实现的?
  • 物体的金属度怎么影响最终的颜色?
  • 粗糙度呢?
  • mipmap是用来干什么的?
  • 三线性插值怎么做的?
  • 手撕 给定一个数组,返回第k个最大值,自行处理输入输出和设置测试用例(选择快速排序秒了)
  • 你的算法时间复杂度是多少?
  • 现在要求我给定一个类名,你返回一个对应类的对象给我,你怎么设计类和机制?(写了个简单工厂模式)
  • 你这样那我要是有很多类呢?(抽象工厂模式?但是好像也不能解决给类名字符串返回类啊,放弃了。后来想了想,好像可以用一个unordered_map存string和用于获取对象的functional,然后每有一个这样的类我就往里存一对键值就能解决这问题了,操了)
  • 反问跟游戏引擎渲染工作的区别?(更像游戏客户端工具开发)工作室规模?(桌面端几十人)base哪里?(北京、深圳或上海,我寻思才几十人还分多个地方啊?)

波克城市

1.笔试(7问答)

纯文本框答题,禁用ctrl c v,恶心的一

  • 回答几个sizeof的结果
  • 线程和进程的区别,进程和程序的区别?
  • C#里String和StringBuilder的区别?
  • Unity脚本的重要回调函数有哪些?
  • 编程题,给定两个由0和1组成的字符串,返回二进制相加的结果字符串。
  • 编程题,热题一百,有效的括号
  • 编程题,给定数组,实现空间复杂度尽可能小的排序算法

网易互娱

1.笔试(3编程)

就三道大编程

  • 给定数字n代表商品种数,k代表当天的销量限额,数组a代表商品的进货价,数组b代表商品的出售价,数组c代表商品的个数,问当天的最高利润是多少?(贪心,ak)
  • 有这样的数字矩阵,尺寸为n×m,矩阵初始时,从左上角往右下角按遍历顺序值依次为1-m*n,给定k,x,y分别代表操作的类别,操作的参数:操作1,交换x行和y行;操作2,第x行向左移动y个位置(轮转数组);操作3,查询第x行y列的矩阵元素值。输出每次操作3的结果。(直接模拟矩阵会爆内存,所以只能记录矩阵第一列的值,根据第一列的值来查询结果,ak)
  • 给定n个功法,功法由左界能力值L,右界能力值R,修炼时间T,能力增幅D描述,现在能力从0开始,达到功法的能力值范围内会自动激活该功法,修炼时间结束时若该功法还是激活状态则会获得其能力增幅,功法的激活状态是实时的,如果当前能力值超出功法能力值范围,则会使该功法失效,问最终无功法可练时(每个功法只能修炼一次)能力值是多少。(构造功法的struct——由上述四个数据和功法结束时间ET组成,按照左界排序功法数组,用一个优先队列——以结束时间排序的小顶堆,先遍历功法数组将初始能激活的功法加入优先队列中,当优先队列不为空,取出堆顶功法获取其能力值,并调整当前时间到其结束时间,继续取出结束时间相同的功法获取能力值,继续遍历功法数组,将能激活的功法都加入优先队列,如此往复直到优先队列为空退出循环,感觉思路没问题,但死活只能过20%)

2.一面(83min)

基本全答出来了,可惜最后一问没答出来还被冠以了计算机基础差的印象

  • 自我介绍
  • 平时怎么学习图形学?看过Unity,UE源码没有?
  • 说说C++的共享指针?
  • weak_ptr是怎么工作的?
  • shared_ptr是线程安全的吗?
  • 构造函数可以是虚函数吗?
  • 虚函数机制?
  • 虚函数表什么时候构建的?存在哪?
  • 虚函数表怎么构建的?内存空间连续吗?
  • 虚函数表除了虚函数地址还存了别的其他什么东西吗?
  • 如果一个基类函数不标明为virtual,子类重写了这个函数,那指向子类对象的基类指针调用该函数会发生什么?
  • 只有纯虚函数的类有虚函数表吗?
  • 子类不实现纯虚函数会怎么样?在什么时候会报错?会报什么错?
  • 说说vector的扩容机制?
  • 说说list的实现?
  • 如何高效的查找有序的list里的元素?
  • list二分查找的复杂度是多少?(O(n),我当时没想出来)
  • 如果考虑空间换时间,时间复杂度可以是多少?(这里脑子抽了,我说分别存储每一次list二分之后的结果,存储在vector里,然后二分的时候只需要比较尾节点,然后转移到对应的list里进行下一步查询, 事后感觉应该是想引导我说,把list用vector存一遍,然后在vector上做二分)
  • 说说优先队列的实现?
  • 堆是怎么实现的?插入数据的时间复杂度是多少?
  • 插入的逻辑是怎样的?
  • 你的渲染引擎是怎么考虑跨平台的?
  • 你写的shader是怎样在目标平台运作的?
  • shader里你是怎样采样贴图的?讲讲API的使用?
  • textureLod怎么用?
  • 如果不提供level,GPU怎么知道要采样哪一层的Mipmap呢?(通过贴图uv在屏幕上的变化率决定)
  • 你刚刚说的u对x,v对y的偏导里的x和y是什么坐标?
  • 除了这个坐标空间还有哪些坐标空间?
  • 三线性插值是怎么做的?
  • 讲讲OpenGL的一个渲染管线?
  • 顶点的裁剪坐标空间坐标怎么得到的?
  • 后续会被怎样处理?
  • NDC标准空间的xyz取值是多少?
  • 锯齿是怎么形成的?在哪个阶段生成的?
  • 有哪些抗锯齿手段?
  • MSAA和FXAA有什么区别?
  • MSAA的硬件实现是怎么做的?
  • FXAA怎么做的?
  • 实时阴影你怎么做的?
  • 点光源的阴影要怎么实现?
  • 只能是生成CubeMap吗?不能生成Texture2D吗?(傻了,忘记CubeMap可以展开在一个Texture2D上或者干脆用柱状投影图了,我说你非要搞那就整一个Texture2DArray)
  • 你实现BVH的目的是什么?
  • 视锥剔除有必要吗?不是裁剪阶段也会做剔除?
  • 平时渲染方面怎么Debug?
  • 如何优化shader的效率?
  • 为什么尽量不要写if/else语句?那什么时候能用呢?
  • 减少采样操作?怎么减少?哪些采样操作可以移到CPU做?
  • 如果必须要采样呢?怎样做优化?以PCSS为例?
  • 为什么尽量少做那些复杂的数学运算?反三角函数,矩阵的逆什么的?
  • 线程和协程的区别?(太久没看真忘了,支支吾吾嗯是说不出啊,早知道直接说不知道了)
  • 那线程和进程的区别呢?
  • 反问?图形开发工程师隶属于什么部门?引擎部?中台?(统一校招,进去之后再细分,可能进项目组可能进中台)这个职位入职的培训和游戏开发那边的培训有什么区别?(差不多也是miniGame,内容上可能区别比较大)可以知道具体的工作室吗?(进去之后双选)如果我想胜任图形开发工程师这个岗位,需要再巩固加强哪些方面?(被说计算机基础不牢固了,奶奶滴,我就那个协程没说好嘛!(ㄒoㄒ))

3.二面(67min)

  • 自我介绍
  • 自己写的渲染引擎,有做openGL以外的API实现吗?(做了抽象,支持但还没做其他API的实现)
  • 材质是如何实现的?(PBR材质,包含几个固定的贴图类型)
  • 如果某个物体它需要额外的材质呢,比如一些自发光的地方的贴图,你怎么处理?(在延迟管线的基础上做单独的前向渲染?)
  • 实习项目介绍?
  • 虚函数怎么实现的?(后面纯八股的就不写回答了)
  • 如果同时继承了两个有虚函数的父类,子类对象的内存模型是怎样的?
  • C++的几种cast?
  • dynamic_cast怎么实现的?
  • type_info存在哪?虚函数表里吗?
  • 说说lambda表达式?值传递和引用传递有什么区别?
  • 值传递的话,这个临时变量存在哪?(函数栈空间?)
  • 函数调用时实际上会执行哪些步骤?
  • 调用inline函数呢?
  • 静态成员变量的生命周期是怎样的?
  • 两个进程是否能共享同一个静态变量?(不能,不同进程有不同的内存空间)
  • 那如果是父进程和子进程的关系呢?(还是不能,子进程只是复制父进程的内存空间,并不共享)
  • 如果父进程修改了这个静态变量然后创造子进程,子进程那边访问静态变量是修改前还是修改后的值呢?(修改后的)
  • 两个单链表寻找交点,说思路(力扣160,相交链表)
  • 说说基础的渲染管线
  • 模板测试没通过的话会怎么样?(首先模板缓冲区的值会根据你设置的glStencilFunc和glStencilOp来决定,可以是不变,可以是被替换成指定值,其次没通过模板测试的片元会被直接丢弃)
  • 如果一个三角形有一个顶点不在这个裁剪空间范围内,会发生什么事情?
  • 延迟渲染和前向渲染有什么区别?(着色和深度测试的先后,透明物体的处理,MSAA的支持,多光照模型的支持)
  • 移动端实现了一些比如hsr的技术,会在渲染前做一遍类似Pre-z的操作,其实最后也是只渲染了顶层的片元,用了这些技术后,前向渲染和延迟渲染还有什么区别吗?(还提了在光源剔除方面处理手段不同)
  • 为什么延迟渲染不支持硬件AA,就是MSAA?
  • 说说你对PBR光照模型的理解?
  • 金属度如何影响片元的颜色?(F项,以及漫反射/镜面反射系数项)
  • 给定法线和入射光线,如何计算反射光线的方向?
  • 如何判断点在三角形内?
  • 反问还有后序技术面吗?(无,就两轮技术面)技术美术技术向和图形开发的工作有什么区别?(前者可能更注重美术效果的实现,后者更关注GPU的底层优化,可能会和硬件层打交道)如果要更好的胜任这份工作,有什么书籍或者是渠道提升自己?(建议直接啃Unreal源码)

4.HR面(20min)

  • 自我介绍
  • 为什么确定了图形渲染方向的岗位?
  • 实习项目中,最有成就感的事情是什么?
  • 实习过程中最大的卡点是什么,怎么解决的?
  • 实习工作结束后有什么样的收获?
  • 你觉得你比起和你同届的同学,有什么优势?
  • 你目前还有哪些在流程中的公司?
  • 你觉得你是怎样的性格?
  • 反问

一些非常有用的面经链接

https://zhuanlan.zhihu.com/p/417640759

https://zhuanlan.zhihu.com/p/430541328

https://zhuanlan.zhihu.com/p/499548836

https://zhuanlan.zhihu.com/p/157355850

https://zhuanlan.zhihu.com/p/577501864

https://www.nowcoder.com/discuss/590687392735014912?sourceSSR=search

https://www.nowcoder.com/discuss/554625545242169344?sourceSSR=search

https://www.nowcoder.com/discuss/353159115046330368

https://www.nowcoder.com/discuss/543596390270640128

https://www.nowcoder.com/discuss/418816282630385664?sourceSSR=search

https://www.nowcoder.com/discuss/353158849718853632?sourceSSR=users

https://www.nowcoder.com/discuss/549035786960683008

一些非常有深度但说人话的技术博客

https://zhuanlan.zhihu.com/p/316138540

https://www.jianshu.com/p/ffb7f9c13c3d

***************************************************************

https://blog.csdn.net/runmasterdd/article/details/139223804

太多了不一一列了,知乎是个好地方自己想学什么就多搜搜吧!

写在后面

先说结论吧,最后是春招签了心心念念的米忽悠。刚刚拿到offer的时候,是思绪万千的,是有很多话想分享的。但自那之后,忙碌毕业,忙碌搬家,忙碌入职,忙碌MP,直到现在都没能真正闲下来哪怕一天,这个时候剩下来的也只有最想说的几句话了。(或许以后兴起了会回来记录一下自己当初的心路历程,但大概率鸽

送给应届生

  • 简历非常重要,不要写废话,尽量一页以内,实习经历少时,学历>实习>项目,经历多时实习>>学历>项目
  • 笔试编程题部分力扣400题+跑不掉的,少了自觉补,记得复习408,笔试和面试都会有用
  • 秋招是一个运气>>实力的游戏,不要总是怀疑自己,沉下心准备,面试时要自信
  • 不要在面试经验少于十场的时候投递最想去的公司,大概率会寄
  • 及时复盘每场面试,尝试去总结并掌握面试技巧和套路,受挫后才会慢慢变强
  • 行百里者半九十,时刻都要拿出全力以赴的心态,绷住,把求职当作长跑,毅力比什么都重要
  • 加油!

送给非应届生

  • 如果你的人生目标不是科研也不是机关,尽早规划职业生涯,越早越好,早到你看到这句话的时候开始
  • 如果你想不清以后想要做什么,那你大概率在到真的要做出选择的时候还是想不明白,请你花一周、一个月,或者更长的时间做这个事情
  • 做好决定后,就把自己离校之前的时间分块利用起来,大阶段+小阶段细分的方式定好自己未来的学习内容和方向
  • 照着面经去学知识点是最快的,但如果不做总结和分类,串联起来会花很长时间
  • 想尽办法实习,或者写项目,不要说下次一定,放走一次机会,你简历上就少几行亮点
  • 要想同辈脱颖而出,就得有危机感,

单独送给转码的朋友

  • 逃离动力和向往动力一定要有一个,如果都没有,劝你趁早放弃
  • 过程一定是艰苦的,是孤独的,是没有方向的,自律和坚定目标才是通向终点唯一的门票
  • 默默努力,然后惊艳所有人吧!

最后的碎碎念

我知道有人要说,光说要做什么,不做什么,不说怎么做,纯**废话。相信我,人教人是教不会的,只有在看到我这些话后,自己有搞明白“怎么做”这份主动性后,才能真正吸收一些有用的东西。当然要是实在不知道怎么做,可以在评论区问问(私聊大概率不回),我会提供一些我自己的经验,仅供参考。

哦哦最后的最后,记得看我的内推帖子(内推码L6564),我在老米等你们!!!!

#米哈游##游戏引擎##游戏客户端开发工程师##游戏客户端##秋招#
全部评论
厉害,客户端的内容是真的多哇
点赞 回复 分享
发布于 08-29 16:03 新加坡
想问问大佬,去年秋招9月份以后还有收到一面的约面吗?大佬的的秋招面试时间分布大致是什么样?感谢感谢
点赞 回复 分享
发布于 08-26 14:36 美国
感谢感谢
点赞 回复 分享
发布于 08-24 19:04 北京
感谢大佬
点赞 回复 分享
发布于 08-14 15:51 贵州
大佬我一样是转码的408需要特别过一遍吗,我常见的一些八股到处都会,感觉已经可以提前准备春招了。😭
点赞 回复 分享
发布于 08-12 01:49 四川
感谢大佬
点赞 回复 分享
发布于 08-11 10:32 上海
点赞 回复 分享
发布于 08-10 23:09 广东

相关推荐

08-19 18:52
已编辑
江南大学 C#工程师
8·12前秋招状况华娱&nbsp;3面过&nbsp;秋招提前批,不过要实习转正雷火&nbsp;3面过&nbsp;日常实习,想去了疯狂游戏&nbsp;笔试挂&nbsp;算法还是刷太少了明天&nbsp;面星嘉8.12星嘉&nbsp;好像只有一面技术面&nbsp;校招岗主要问项目,还有代码细节。后面直接问我期望薪资什么的,吓到我了。项目是卡牌不过是ts代码,引擎也好像不是unity。8.13星嘉给HR说不能早到,不能提前去,算拒了明天途游有一命。给我成,上次暑假倒在二面了,好难受。8.14凌晨睡不着,写了个波克城市的笔试总体来说挺简单的,都是一些双指针,还有矩阵的常规题,没什么难题。就是环境有点恶心,纯记事本写。8.14&nbsp;中午波克笔试过了,约好18号一面,准备下午的途游面试了。途游一面好像是做麻将的,感觉一般般,问的东西都挺常规的。就是网很卡,听不清说话。8.15番糖网络一面好像就一轮技术面,是做小程序的。问的比较简单,就问了几个实习经验,然后问了很简单的unity常识华娱和hr商量可以11月去算oc了一个实习武汉哈乐沃德笔试过,一起约到18号面试了8.16做完了灵峰互娱笔试,了解了一下这个公司还挺感兴趣的8.18波克城市面完了,主要问的是一些实现细节,还有场景题。怎么说呢?我也不知道答的咋样shader这一块真的不怎么熟。好像是实习岗武汉哈乐沃德问的都挺简单,基础的,了解了一下,是小游戏相关的番糖网络明天二面4399的21号的面试了8.19番糖网络hr面说了不能立即到岗,算微拒了希望来一个真正可以的的offer保底吧😭
点赞 评论 收藏
分享
评论
20
93
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务