昨天进行了腾讯游戏客户端的实习面试,和以往的面试不一样,感觉应该不像是KPI面,虽然两个面试官都没开摄像头,后面了解了下,应该是大多数面试官也是抽时间来面试,未必有机会在一个专门的会议室进行;
但面试没有手撕,也没有C++八股,手撕环节好像是因为说时间来不及了(我猜大概率是前面的表现让他们觉得已经没有必要进行下去了)
我的简历全是关于C++的,且有一个游戏引擎的项目,但面试官跳过了那个游戏引擎项目,可能对于客户端而言,不太关注底层的实现细节?
第一个面试官让我介绍了一下那个边缘计算部署的项目,然后问了下在自所实习的具体内容(果然出来混还是要有背景...,自所的背书总是让原本平平无奇的简历忍不住会被多看一眼)
第二个面试官也没有问游戏引擎的技术细节,而是问了下渲染管线的内容,我讲了很长,但是他说我们先不关注后面提交到GPU之后的渲染过程,我们先假设现在有一面墙,一个模型,你要怎么加载进来渲染?
这个过程还让我在白板上画图演示,我印象中有两个问题我表现地不是很好,
第一个是长方体的一个面怎么渲染,我回答这四个角点,顶点缓冲区存入四个顶点,然后索引缓冲区存入6个,把这个长方形分为两个三角形,按逆时针顺序顶点的索引,他问我一定要逆时针吗?顺时针会怎样?
我说一定要逆时针,但他说如果从后面看是不是顺时针也行?于是我有点懵了。(确实没把网格的加载细节捋清楚,前两天一直在研究PBR和IBL的实现细节,但是没问这个,sad...)
第二个问题,我明显感觉自己没有回答对(在当时没想到答案,面试结束了才想到,基础还是不够扎实)
问题就是,一个长方体的角点,作为顶点提交到渲染器中,如果这时候我要增加一个顶点属性,比如法线,那角点这里的法线应该怎么处理呢?
我回答这个法线应该指向体对角线,后面想想这个回答好蠢,角点应该额外存储两个同样位置的顶点,因为这个角点被另外两个面共享,所以要额外存储两个法线指向这两个面的顶点,所以一个长方体8个角点就得存储24个顶点了
这部分问完后紧接着,他问我是否玩过建筑游戏,我说了我的世界,毕竟确实没玩过方舟那些;
然后他假设现在有一个需求是,选择现有的建筑模块,如何让它自动完成建造,讲讲我的实现思路。
在我讲完后,他问我平时对AI工具的使用情况如何?如果要让AI去实现自动建造要怎么处理?
在我回答了设计一个接口,类似MCP之类的让它去调用之后,他问AI设计的可能存在一些问题,比如不符合物理规律怎么办?
我回答可以搞一个检验的环节,AI设计完了之后自检一遍,不行就重新设计;他评价这个做法确实是常规做法(也许他期望能得到些不一样的回答吧)
总结下来,我对自己有以下反思:
- 不应该面试官问一个问题,自己滔滔不绝地讲半天,需要言简意赅地回答问题,并给面试官留下追问的空间;
- 表达能力有待提高啊,也许还是基础不够扎实;
可能还是准备地不够充分,感觉腾讯、字节这类,整体流程就走得很快,投完简历,基本上不出两天就约面了,我投之前想的还是先投,然后等他走流程,在这期间我好好复习,但是我复习的内容完全没问,我把我那个游戏引擎的大部分实现细节都捋了一遍,同时复习了下写过的LC题目

