快手游戏客户端开发8.19笔试
笔试时间:2022年8月19日
1 单选
1)哈夫曼编码
2)
unsigned int a = 0x1234; unsigned char b = *(unsigned char*)&a; cout << b << endl;
3)完全看不懂的两种C++单例模式写法(又是各种锁,又是静态),问这两种写法对不对
4)vector调用erase后的迭代器失效问题
5)以下是几进制
15*4=112
6)
#include <stdio.h> #define VERSION(x, y) #x"."#y #define MINOR(x) x #define MAJOR(x) x int main() { printf("version:%s\n", VERSION(MAJOR(1), MINOR(1))); }
7)一根指针指向vector的某一个元素,当vector仅调用push_back时,此指针是否会失效
剩下的不记得了……
2 多选
1)以下哪些是堆结构
A 16 53 23 90 31 48 B 90 31 53 23 16 48 C 90 48 31 53 16 23 D 16 31 23 90 53 48
2)智能指针
3)各种容器的迭代器失效问题
4)分配在栈的数据有
A new malloc的数据 B 局部变量 C 静态变量 D 函数调用参数 E 全局变量
剩下的不记得了
3 编程
1)射线碰撞检测
给出三维空间内的射线起点、射线方向、AABB盒的最小点和最大点,判断射线是否会和碰撞盒相交
坐标数据均为Vector3类型
2)猴子下山(剑指 Offer II 100. 三角形中最小路径之和 变型)
改为求最大路径之和
3)数珍珠
有连接在一起的一串珍珠,每一颗珍珠最多和三颗珍珠相连。现需要计算珍珠的重要度。
重要度的计算方法:将该珍珠取下,剩余的1-3堆珍珠的数目的乘积,即为这颗珍珠的重要度。
返回重要度最大的珍珠数目,以及其重要度。
输入:
珍珠数目
N行,珍珠连接关系
输出:
重要度最大的珍珠数目 其重要度
输入样例1:
5 0 1 1 2 2 3 2 4
输出样例1:
3 4
解释:
珍珠的串联形状: 0 - 1 - 2 - 3 \ 4
第0颗珍珠取下后,剩余1堆珍珠(1234),其总共4颗,故第0颗珍珠的重要度为4;
第1颗珍珠取下后,剩余2堆珍珠(0 234),1 * 3 = 3,故第1颗珍珠的重要度为3;
第2颗珍珠取下后,剩余3堆珍珠(01 3 4),2 * 1 * 1 = 2,故第2颗珍珠的重要度为2;
第3颗珍珠取下后,剩余1堆珍珠(0124),其总共4颗,故第3颗珍珠的重要度为4;
第4颗珍珠取下后,剩余1堆珍珠(0123),其总共4颗,故第4颗珍珠的重要度为4;
最大重要度为4,有3颗珍珠重要度为4
————————
后续补充:已寄