2025春招友塔游戏游戏开发工程师
2025.2.25 笔试。
题目形式和考试时长,分值和这个一样,第1题忘记了所以只有2,3,4题的回忆。
T2:有一款射击游戏,在二维平面中有一个玩家和若干颗子弹(均视为圆,给定半径),玩家和子弹都有各自不同的初始位置和最终位置。在T秒的时间内,玩家和子弹从初始位置匀速直线移动到最终位置。让你对每一颗子弹判定在过程中是否会和玩家碰撞。特殊的,因为是游戏,所以不需要判断精确的碰撞,而是判断每一帧里子弹和玩家的圆是否相交即可。本题假设1s里有30帧。
sol:小计算几何,枚举每一帧,计算在这一帧里玩家和子弹分别在哪个位置即可。
T3:在minecraft里,给出一系列的摆放方块操作序列,让你check是否合法。一个摆放方块操作序列是一系列的三维坐标,表示每次要放的位置。一个摆放方块操作序列合法当且仅当:
1.对于每一个要摆放的位置,至少存在一个已摆放的方块与之相邻。或者当前方块摆在地面上(z=1);
2.不能在一个和外界不连通的位置摆方块(如一个位置上下左右前后都已经摆了方块,那么这个位置就不能再摆)。(这两个条件可以想一下minecraft里面的具体场景会好理解一点)
坐标范围 100 操作序列长度 1e5
sol:最暴力的想法是从前往后每次检查和外界的连通性和四周是否有已摆的方块。但是这样在检查和外界的连通性时每次都要bfs一遍,可能会超时。考虑时间倒流,从后往前,每次拆掉一个方块。拆掉的同时可以用并查集维护和外界连通性。这样复杂度就是。
T4:给若干个小球,球上有编号。让你把小球排成一个序列,要求相邻两个小球上的编号不同。 sol:经典贪心,正确性忘了咋证了。每次取个数最多的,和上一个编号不同的小球即可。具体实现可以把每种小球的{num,id}打个包放进优先队列。
场上得分:15+20+0+0。T2场上过了80%,最后一个点不打算调了。T3 写炸了,T4 最后20分钟没调出来,而且T4是实现函数接口而不是输入输出形式,写的时候也有点不适应。
这家确实题目是我之前做过的3家笔试里最难的了。T3感觉放ICPC区域赛也是铜牌题(参考23济南的并查集题),T4倒是挺板但是如果没打过cf的话嗯猜也不好猜。
35分肯定是没可能面试的,大伙都是一面二面挂,我笔试挂也是没谁了。哎,继续加油吧。
总结:
这家的题目总体分布大概是:T1 签到,T2T3 偏工程开发类小码农题,T4算法题。T4的强度总体上在ICPC铜牌线附近。因为牛客笔试要求选中一道编程题之后,在提交之前不能看其他题目,所以个人建议有XCPC背景的同学们按1423的顺序开,别卡码农题。
2025.2.26 收到面试邀请。可能真的如一些牛友所说,40分左右就能进面。
2025.2.28 面试。30-35min(时间较正常面试短,具体原因见下文)
1.introduce yourself
烂完了,完全没想到有这个项目(倒不如说对这个项目没有任何准备的我也是个神人),实在没话聊了,聊自己的某个黑点聊了半天。
2.复盘笔试
把4个题重新口胡了一遍,面试官听得很认真,感觉虽然我很逆天但是面试官真挺好的。
3.基础部分
面试官:现在我们进入基础部分,首先是操作系统,udp和tcp的区别是什么?
我:不知道。。。
面试官:(又来了一个问题但是我忘记内容了)
我:不知道。。。这些我不是科班,目前还在学,确实不是很清楚。(要哭了)
面试官:(尴尬一笑),那我们基础知识一共有四块,操作系统,计算机网络,c++和数据结构。你觉得哪一块你能回答一下?
我:c++和数据结构吧。
面试官:好,那我们进入计算机网络(面试官忘了我没说计网),三次握手四次挥手是什么?哦哦,我忘了,我们直接到c++吧,你知道虚函数吗?
我:。。。不知道。(要哭了)
面试官:好,那我们到数据结构吧,这块你们之前打过竞赛熟悉一点。能讲解一下快速排序的原理吗。
我:(大概讲了一下)
面试官:复杂度是什么呢
我:期望nlogn,最坏n方
面试官:什么时候会到最坏呢
我:基准值选择不够优秀,选到最小值/最大值的时候。
4.手撕算法
(啊喂话说这个真能算算法题吗)
给一个nxn二维数组,让你数有多少个连通块。有边相邻的两个格子如果上面的数字相同就视为在一个连通块。
写了一个bfs,给面试官讲解了一下流程,顺利完成。
5.反问环节
1>大概会被安排干什么样的工作
简单的说了一下,没太明白。
2>工作时间
面试官说自己是10-7-5,实打实的双休,会有一天待得比较晚,但是允许第二天下午再来。
3>薪资待遇
(我是怎么想到问这种问题的。。。现在大家都是薪资保密,这种问题问了别人也只会为难,而且面试官全程温柔没有刁难我这个问题问的有点对不住他。)面试官说我去问hr能得到一个准确的答复。
感觉要收感谢信了。确实也没咋认真准备,接受了这家的面试和笔试邀请也是因为他家从牛客主动邀请我的。继续学习吧。