笔试
题量较大,仅记了一些印象比较深刻的题。
题型为选择 + 填空(给C++代码填输出结果) + 编程 编程题不会太难,最难的就一道字符串的全排列(类似剑指offer第38题LeetCode链接)可以使用IDE,主要得把控好选择填空作答的时间,不然就会来不及做。
1.几何数学,点到面的距离,给定一些条件求长方体体积
2.不超过四个节点的二叉树有几种(可用卡特兰数直接计算,具体可以参考该博文)
3.哈夫曼编码
4.数据库truncate
5.n个结点的无向连通图,最少有几个边
6.1X3的砖块,铺满3X20的地板,几种铺法?(动态规划)
7.有一栋楼36层,你有2个鸡蛋,找出鸡蛋不会碎的最高层数,试验几次能找出所有情况?(如果想到二分查找就踏入陷阱了,因为本题只有两个鸡蛋,具体可以参考该博文)
8.已知在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点的个数为?(同样的考点他考了很多类似的,具体可以参考该博文)
一面(技术面)
1.基础和C#
- 说说反射是什么
- 异步和线程的关系
- 使用线程池的优缺点
- C++内存泄漏
- C#内存泄漏
- GC的工作流程
- 装箱拆箱
- readonly和const的区别
- 使用stringbuilder要注意什么
2.Unity
- 有哪几种光源
- 物理逻辑为什么要放在FixedUpdate
- 两个物体要实现碰撞需要什么组件
- 协程
- mipmap(没听过,没答上来)
- 如何优化内存(我答了代码部分,面试官提示我资源管理呢,我答了ab包的管理)
- 项目的问题,对象池模式的应用
二面(HR面)
HR面记得主要就是聊天,因为是实习生招聘,所以没有太多问题吧,还是针对简历问了一些平时怎么学习,为什么选择吉比特,为什么选择做游戏开发之类的问题。
三面(技术终面)
1.基础部分:
C#:
async与await
内存泄漏,gcroot如何定义C++:
智能指针,右值引用,内存泄漏最小生成树算法,如何判断成环
如何解决哈希冲突
如果冲突较多,如何优化
2.手撕代码部分:
- 堆排序
- 并查集
- 线程安全的单例模式
最后是一道逻辑测试题,面的时候觉得自己答对了,面完后才发现答错了,其实是很简单的问题,但当时太过于紧张了,不够冷静。
面试都采用了牛客网的视频面试,最终三面被刷,觉得主要原因是因为C++的题答不上来,然后并查集没有成功撕出来,还是当时面试经验太少了,面对大佬手抖得不行,代码出了问题脑子就一片空白哈哈。