笔者是暑期实习转正失败来秋招的菜鸡。
1、介绍项目
2、讲一下UObject
(没答上来,后面学了觉得应该是答一下统一基类、反射、gc、序列化等各种点)
如何创建和销毁的?
3、UE中的gameplay框架中的点:actor、controller、gamemode、gameInstance、gameState
笔者初学,瞎扯了一点,这块推荐知乎上大钊写的专栏
4、介绍GC的机制和原理
除了引用计数,还有什么方式?
两个指针循环引用的问题如何解决?(应该是想问UE4的gc:标记-清除算法,但当时还没学)
5、讲智能指针的实现原理
什么时候计数+1,什么时候计数-1?
6、讲一下右值
因为我扯到了右值引用
右值引用具体干什么:移动构造和完美转发
7、详细地问了项目中的各种点,这块时间很长
二面先是发了word四道题让我做,时长50分钟(等面试官大佬来)
第一题、
struct A
{
double ma;
virtual void MA() { };
}
struct B: public A
{
int mb;
virtual void MB() { };
}
int main()
{
cout<<sizeof(B);
}
该程序结果为?
第二题:
一个硬件2G内存的64位操作系统,整个32位程序,这玩意儿最多能用多少内存?
a 2
b 4
c 8
d >=16
第三题:
以下O(nlogn)的算法:
a 二分查找
b 归并排序
c 冒泡排序
d 堆排序
第四题:
//实现一个对象池,已知一个对象类:
class PoolObj
{
public:
void Init() {} //初始化时候调用
void Clear() {}//资源清理时候调用
};
//实现一个PoolMgr
class PoolMgr
{
public:
void Init(int n);//初始化出n个PoolObj用于分配
PoolObj* Alloc();//分配一个对象,如果pool里面有则分配,如果pool已经空了,就new一个出来
bool Free(PoolObj* param);//回收一个对象,如果属于预先分配的Pool则收回pool中并返回true,不在则delete掉,返回false
55分钟的时候面试官终于来了。先是让我讲了一下第一题思路,然后看了一下我写的第四题,这块就过去了。
然后还是让我讲了一下项目,并问了几个问题。
然后再是问了几个基础小问题:
C++调用虚函数过程
流水线
信号量
cache
最后和我聊了一下实习的感受,一些有的没的blabla
三面6、7分钟,感觉是走了个过场。
八股文已经全忘光了,得亏腾讯的游戏客户端岗并不看重这块。
似乎是因为我实习在职,全都没让自我介绍,而且一、二面也没有反问环节。
个人认为手里有自己开发的游戏项目是很关键的一点,然后面试官很看重的就是基础的语言掌握情况(C++)和代码能力,以及个人的学习能力。