岗位:天美工作室-游戏客户端开发
时间轴:8.5 一面(后续待更新)
研一在读,开学研二,之前有面过一轮的腾讯日常实习,但最后挂在录用评估环节
(没错140min,7点15开始到9点半,面试结束后头晕加嗓子哑掉,后面半个小时基本考本能在面试了笑死)
前20分钟自我介绍加闲聊,由于正在上腾讯的暑期公开课,但突然收到面试邀请也很懵,因此和面试官多聊了一会,顺便解释了下简历已经过期半年了
聊完了简历之后八股没问就先抛上来三道算法题
做出两题,后面时间不够了
做完算法题之后,面试官说我们聊聊基础知识,也就是喜闻乐见的八股文环节
C++特性,如何实现多态等
C++虚函数相关:虚函数表内部原理实现,加入虚函数后是否会影响对象大小,影响的话增加了多少大小
智能指针相关:智能指针为了解决什么问题(内存泄漏),智能指针的引用计数和自动释放是怎么实现的,有没有看过源码,源码是如何实现上述功能的,野指针和内存泄漏的区别(这点没答上来,很难绷得住,问概念题是个什么操作)
STL相关:
map的原理,红黑树的原理,红黑树的优点在哪,红黑树的存放形式,如何插入节点(没有让说12种插入,还算人道)
编译内存相关:
聊完八股之后,面试官让我休息10min(可能他自己也要休息吧hhh),休息后和我聊聊项目相关,因为写过两个UE4和一个unity的项目,因此聊得都是这方面的话题
Unity和UE的区别:说了下Unity和UE的设计模式区别,语言角度:Unity用CS,UE用C++,写shader的方便程度,UE只要连连看还能实时调试还蛮方便的
讲一讲UE中自己比较熟悉的一部分,说了骨骼动画部分,如何实现ik,为什么有些游戏没有使用脚部ik
光照部分聊了兰伯特光照怎么在Unity实现的,还聊了聊基本的点乘叉乘,
碰撞部分聊了,平时用过哪些碰撞,球体碰撞的原理,多边形碰撞检测用什么算法(面之前刚看过闵可夫斯基算法hhh,小秀一波),如果运算效率较低,会出现胶囊体卡在墙中的情况如何解决
最后问了问我,在图形学和引擎领域广度上还算可以了,但深度上有没有什么探索,有没有产出(这点很惭愧一直在闭门造车,没有写博客的习惯,从此要改正了)
项目组具体是哪个工作室,在做什么项目,如果我能进项目组,后续探索的方向上怎么选择(说是按照我的个人兴趣选择gameplay或者研究定制化引擎都可,但还说了一句要看组内的人员分配,这选择面可能就没那么广了吧hhh)
问了下后面还需要几轮面试,面试官说要再回去讨论下
第二天早起发现进入复式阶段,后续应该不会有这么久的面试了吧,复式后会来更新
这次面试的时间短了很多,面试官人也非常好,一些回答错误的地方会指引着回答正确,也有一部分问题和第一面重复,感觉发挥的不如第一次面试,可能会寄
闲聊相关:
C++相关:
void GetMemory( char *p ) { p = (char *) malloc( 100 ); } void Test( ) { char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( str ); } int main() { Test(); }
这段脑抽一直在说strcpy的缺陷,却没有看到是指针传值,在函数结束后空间就会释放,面试官提示了之后才反应过来
Struct S { int a; byte b; float c; byte d; byte e; } S s; sizeof(s) = ?
int array[3][1000]; int i, j; //遍历方式1 for(i = 0; i < 3; i++) { for(j = 0; j < 1000; j++) { printf("%d",array[i][j]); } } //遍历方式2 for(j = 0; j < 1000; j++) { for(i = 0; i < 3; i++) { printf("%d",array[i][j]); } } 哪种遍历方式更快?
聊项目,具体做了什么东西,认为Unity和UE之间的区别在哪,如果给我选择,在做什么项目的时候考虑Unity,什么时候会用UE
UE中怎么看待蓝图的,蓝图和C++的区别是什么
行为树和状态机之间的区别是什么,各自最好在什么时间使用。
渲染部分聊了聊基础的渲染管线,在顶点着色之前还有什么环节,
如何理解光栅化,光栅化是什么过程(这段因为比较靠后了聊得比较急,感觉没说清楚面试官就不怎么想继续了)
自己有实现过哪些渲染,讲了讲UE中的连连看
问了下如果这一轮通过了,之后还有几轮面试,回答说至少hr面试会有的,有可能还有下一轮的技术面
最后结尾以让我自己说自己三个优点作为结束。
如果这次也能通过,会继续更新的,但这次的把握感觉比一面小了一些,祈祷能通过吧
#腾讯##腾讯实习##C/C++##C++工程师#