游戏开发面试总结2
Posted amadios
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游戏开发面试总结2相关的知识,希望对你有一定的参考价值。
总结一些面试常问的吧
1:聊一聊虚函数吧
C++中,虚函数主要是实现了多态机制,简而言之就是用父类型的指针指向了子类型的实例,然后通过父类的指针去调用子类的成员函数。
每一个含有虚函数的类都至少有一个与之对应的虚函数表,存放着这个类所由虚函数对应的函数指针。
虚函数表在构建的过程中的步骤:
1:拷贝基类的虚函数表
2:替换重写的虚函数指针
3:追加子类的虚函数指针
这些步骤是编译器完成的
2:
虚析构函数:虚析构函数使得在删除指向子类对象的基类指针的时候可以调用子类的析构函数达到释放子类中堆内存的目的,防止内存泄漏
当delete父类的指针时,由于子类的析构函数和父类的析构函数形成多态,所以先调用子类的析构函数再调用父类的析构函数。
纯虚函数:形式为virtual void fun() = 0; 不需要实现,因为不会被调用到
抽象基类:至少有一个纯虚函数的类,抽象基类不能产生改类的对象,但是可以有这个类的指针或者引用;子类中必须将纯虚函数实现,否则子类也是抽象基类
3:
聊一聊堆排序吧
堆排序分为两个步骤:
1:根据初始的输入数据,进行HeapAdjust形成初始堆
复杂度为O(n),包括比较和交换 公式可以写为s = 2^( i - 1 ) * ( k - i ),2^( i - 1) 表示该层上有多少个元素,( k - i) 表示子树上要下调比较的次数。可以求得S = 2^k -k -1 , log(n) =k带入得到S = n -lgn -1
2:通过对象交换和重新调整进行堆排序
复杂度为O(nlgn) log2 + log3 + ... + logn ≈ log(n!) 和 nlogn是同阶函数
堆的应用场景:找TOP K , 实现优先队列等。。
以上是关于游戏开发面试总结2的主要内容,如果未能解决你的问题,请参考以下文章
游戏开发面经我在阿里HRG面这关跪掉了,游戏客户端开发岗,总结一下(阿里 | 游戏 | 凉面面经)
游戏开发面经我在阿里HRG面这关跪掉了,游戏客户端开发岗,总结一下(阿里 | 游戏 | 凉面面经)