友塔游戏客户端8.21笔试8.29一面9.1二面凉经
一面
一面面试官人特别好,特别热情,而且会一步步引导你优化算法,卡壳了也会作提示,是我目前所有面试里感受最好的面试官之一
1 笔试题复盘
注意:友塔的笔试必须提交完一题才能看见下一题。无法预览题目。
1) 相机视野
在1000 * 1000的平面中有N个点,请问一个100 * 100视野的相机最多同时容纳多少个点(相机坐标每个轴在50-950之间)
输入样例:
800 850 840 880 150 600 550 300
输出样例:
2
2 )最晚时间和最早时间
输入一个6位数,给出这6位数能拼出的最晚时间和最早时间,以逗号隔开
输入样例:
123456
输出样例:
235641,123456
解释:最晚时间23时56分41秒,最早时间12时34分56秒
优化:将一些全局判断提到最前,例如小于等于5的数少于3个,没有小于等于2的数,都可以提前判断
3) 水域问题
给出一个m * n矩阵,其中-2表示纯陆地,-1表示含有水的地块。请将矩阵转换成更为清晰的标记。具体标记如下:
-2表示纯陆地
1、2、3、4分别表示该地块中上、下、左、右各有一半陆地
5、6、7、8分别表示该地块中右下、左下、左上、右上各有四分之一水域
9、10、11、12分别表示该地块中右上、右下、左下、左上各有四分之一陆地
输入样例:
5 5 -2 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 -1 -1 -1 -2
输出样例:
-2 5 1 6 -2 5 12 0 9 6 4 0 0 0 2 8 11 0 10 7 -2 8 3 7 -2
解释:
优化:将if-else判断改为位判断
4)扑克牌顺序
1-13(AJQK自动转换)共13个数,任意取其中4个数共有1820种(还是多少种?)不同的组合。现按照一个给定的从小到大顺序排列这些组合。给出一个下标,请给出这个组合的四个数,并且判断是否能计算24点。
组合的排列顺序举例:
下标1:1 1 1 1
下标2:1 1 1 2
下标13:1 1 1 13
下标14:1 1 2 2 (注意不是1 1 2 1,因为它的元素组合和1 1 1 2相同)
下标15:1 1 2 3
输入用例1:
1
输出用例1:
1 1 1 1 false
输入用例2:
13
输出用例2:
1 1 1 13 false
输入用例3:
24
输出用例3:
1 1 2 12 true
优化:可以利用13进位的思想,每次进位的值既加到前一位,也加到本位,例如1 1 1 13进位时,进位1既加到前面的1也加到自己的1上面,得到1 1 2 2。至于计算24点,详见leetcode679
2 现场嘴撕:最大价值的物品
给出一排价值不同的物品,不限定取多少个,但是每次都不能取上一次取得物品的左右边的物品,问最大取得物品价值是多少?
输入用例1:
6 2 1 3 4
输出用例1:
15
解释:6+4+2+3=15
输入用例2:
6 2 1
输出用例2:
7
解释:6+1=7
输入用例3:
1 15 2
输出用例3:
15
解释:15=15
解法:
动态规划。
dp[i]的定义是取前i个物品的最大价值。
dp[0] = 0,dp[1] = 0,dp[i] = max(取第i个物品的最大价值,不取第i个物品的最大价值)。
其中,取第i个物品的最大价值 = dp[i - 2] + nums[i],
不取第i个物品的最大价值 = dp[i - 1]。
3 八股
1)面向对象三大特征
2)指针和引用的区别
3)进程与线程
4)设计模式了解哪些,具体讲讲
4 项目
1)热更流程
2)敌人AI怎么设计的
3)子弹穿透问题怎么解决(碰撞检测、改用射线)
——————————
二面
二面的面试官全程不多说一句话,基本不看屏幕。没问几个问题就开始直接手撕算法,你卡壳了不会有任何提示,问面试官问题他也回答的不清不楚,感觉像在边忙其他事边应付我这边。和一面面试官天差地别,是我目前经历的最难受的面试,没有之一。(主要还是我自己太菜,要是我能3分钟直接撕出来,管他面试官态度咋样)
前面问题都是项目相关。手撕算法是快排(要能过leetcode912,注意其中一个坑爹用例,专门坑我这种傻乎乎的大冤种)和小于等于 K 的最长二进制子序列(leetcode2311)。
#秋招##2023届校招##面经##我的秋招日记##游戏客户端开发工程师#