面试复盘 | 腾讯IEG光子工作室一面凉经

面试问题

8月10日 大约1小时

游戏开发相关问题

  1. 自我介绍
    本科做了安卓,暑期实习游戏开发,研究生做java web项目。
    其中暑期游戏开发的视频在这里:https://www.bilibili.com/video/BV12W411R7gc/
    后面大多都是针对游戏开发问的。
  2. 你觉得做游戏开发和你研究生做的web项目有什么区别?
    游戏开发设计的自由度更高,web项目受甲方知识约束,需求比较死板,难以沟通。
  3. 你们游戏的服务器是什么框架,怎么实现的?
    pb,是公司提供的***版的一段代码,我们只需要在里面填充。
  4. 如何保证两两玩家的连接?
    两种思路,一是以服务器为中心,建立房间匹配机制。二是以其中一个玩家的客户端作为俩玩家之间的交互服务器,它只向游戏服务器汇报战果。
  5. 服务器端如何检测玩家作弊?(你这个游戏是2p v e的,假如是pvp的话,比如DNF)
    第一,不符合物理引擎的位移视为作弊,例如突然跳的很高,跑的很快。
    第二,完美操作的视为作弊,因为人对视觉听觉是有延迟的,对方刚进入视线不可能毫秒级反映。
  6. 如果让你做这种双人合作闯关游戏,你选择tcp还是udp,为什么?
    tcp,tcp更稳定。
  7. 你说要用tcp,tcp在你这种强连接中的一般比较慢,为什么?
    校验重传/流量控制/拥塞控制/资源消耗大
  8. 假如有1000个人在线的平台,怎么保证性能?
    模仿redis,以网络情况较好的20名玩家客户端做环形的集群服务器,并设置哨兵。
  9. 你说的将玩家客户端做集群服务器,那这个玩家掉线了怎么办?
    切换到其他存活的玩家。并作主从复制。
  10. 你说的将玩家客户端做集群服务器,万一两两玩家作弊怎么办?
    服务器选择客户端对用户来说是透明的,想作弊的玩家刚好遇到的概率很低。

    八股文环节

  11. I/O多路复用是为了解决什么问题?
    单进程监听多个I/O端口。
  12. 说一下select/poll/epoll的区别?
    参考网上的答案很多balabala。
  13. 让你选,你会选哪个?
    优先选择epoll,除非不支持。
  14. 什么时候发生粘包?
    单个应用的报文过小,或者切分后溢出一个小段,和其他报文的一块发。
  15. 如何拆包?
    在tcp包里描述包的长度。或者定长,用0填充剩余部分,但这样做会造成资源损耗。
    (还有种方法是设置特殊分隔符,我没答上来。)

    项目环节

  16. 讲一下你的项目,你收获了什么?
  17. 讲一下你的论文,如何实现的ETL?
  18. 如何考虑你的ETL性能?需要多久?
    先报了自己电脑的配置,然后说了时间,讲了下应用的场景,一般不会频繁ETL,为了性能考虑,一方面是前端设置限制输入文件大小,另一方面是比较耗时的ETL执行函数进行加锁。
  19. 你的项目说了前台监控显示服务器的cpu/流量大小,这是怎么实现的?
    CPU/硬盘/内存占有是通过java调用linux的shell执行top等命令获得的。流量大小是java取的HTTPRequest对象的报文长度获得的。
    面试官提醒我流量大小也可以通过linux调用获得。

    项目延申到linux命令

  20. 假如cpu占用过多,如何排查哪一段代码出现了问题?
    top命令,查看占用过多的是否是我的应用,如果是我的应用,通过jvm的机制去查过堆/栈/方法区等信息,定位到代码。
  21. 如何查看当前运行进程?
    我只说了ps,面试官好像非常不满意。
  22. 说一下你知道的linux命令。
    mv cp cd ...
  23. 假如一个文件里有很多行url,如何快速替换其中指定的url,用linux命令实现?
    find命令查找到行,然后随机读写替换。面试官不满意。

    反问环节

  24. 游戏开发的加班情况。

总结

我投腾讯时并没有选部门,被分配到游戏开发部门有点措手不及,可能是看我建立上有过游戏开发经历吧,但那都是三年前的事了,好多忘了。
对于游戏开发的场景题确实都是现场想的,从来也没看到过类似面经。
后面对linux的提问挺深的,可能要具体实操过回答上参数吧,我只记住了些命令名。
第二天就挂了,反馈很快。
大佬们觉得我答的不好的地方,请指点下啊,或者有这种游戏场景题的面经推荐些啊~

补充答的不好的问题

  1. 应该用grep命令做筛选,vi替换。或者sed命令sed -e "s/var2/g" filename。平时应该多练练牛客的shell编程https://www.nowcoder.com/activity/oj?tab=2。命令不能光靠背,要动手实践。
  2. 检测玩家作弊,面试后我还想到了
    基于机器学习的方法判断和作弊玩家数据的相似度。
    对于关键性操作基于区块链建立共识机制。
  3. 如何选择select poll epoll?
    select支持率最高,可移植性好,而且响应时间精度是毫秒级的,poll和epoll是微秒级的,如果对时间精度要求高选择select。其他选epoll。
#面试复盘##面经##校招##腾讯##游戏研发工程师#
全部评论
不是一面时间越久,代表着面试官越想要你吗?像我们这种小菜鸡,最多半个小时面试官就想着面下一个了
1 回复
分享
发布于 2021-08-16 12:26
你投的是后端岗位吗,同样是光子我感觉我面的巨水...可能是我投的客户端的原因吧
点赞 回复
分享
发布于 2021-08-15 11:58
联想
校招火热招聘中
官网直投
靠 看起来大佬答的没什么毛病 为什么凉了呢
点赞 回复
分享
发布于 2021-08-15 13:34
总结的好详细
点赞 回复
分享
发布于 2021-08-16 12:23
感谢楼主分享,祝找到好offer
点赞 回复
分享
发布于 2021-08-16 12:27
没有撕代码吗?
点赞 回复
分享
发布于 2021-08-16 14:50
啊啊啊find命令是用来检索若干个文件中符合要求的文件的,而不是用来检索某个文件中的某一行的,应该用| grep
点赞 回复
分享
发布于 2021-08-16 14:54
为什么游戏研发会问linux呀
点赞 回复
分享
发布于 2021-08-20 10:17

相关推荐

OC了,感谢牛友们的面经帮助,散点面经回馈一下3.25投递,3.29下午打电话约了一面一面55min(4.1)计算机基础部分1. 什么是栈内存,什么是堆内存,有什么区别?2. 刚你提到了栈的内存比较小,那你说明一下什么是栈溢出3. 为什么堆的分配比较慢?这个问题有没有什么解决方案?4. 游戏引擎有没有什么对内存的管理操作?5. 堆空间只申请不释放会造成什么?(内存泄漏)如何避免(从编程语言的层面上解释)?(Java/C# 内存管理GC, C++智能指针)6. 你知道哪些智能指针?(unique_ptr, shared_ptr)?还有一个你知道吗?(没说出来,面试官提醒能解决循环引用的weak_ptr)7. 栈的访问效率比堆高,你能解释一下吗?8. 垃圾回收内存管理GC机制,能不能深入说一下底层如何实现?9. 说一下什么是虚拟内存?存在的意义是什么?数据结构部分10. 描述一下数组和链表的区别?各自的优缺点11. 说明一下什么是二叉树手撕部分12. 递归前序遍历二叉树写一个函数,输入是二叉树的根结点,返回它结点的前序遍历13. 用BFS遍历树追问:DFS和BFS这两种遍历策略,一般用来解决什么问题?有没有什么优化方案策略?开放问题15. 树这种数据结构在你项目开发中有什么应用?C++中有没有什么容器是用树实现的?16. 说明什么是面向对象,有什么特点?17. C++中可以实现多态,请你从虚函数表的方面描述一下重载一个虚函数的过程?(往虚函数表,虚函数指针上扯)。虚函数指针占多大空间?(就是普通指针,32位机器4,64位机器8)拷打简历18. 开发MOBA项目中遇到的最大难点是什么?19. FPS项目中,NPC巡逻的逻辑?你这种检测方法会把NPC背后的敌人也检测进来,有没有什么改进方法?20. 简单说一下你了解的unity物理引擎?其他问题21. 你平常玩哪些游戏多一些?STEAM上的单机游戏玩过吗?你CF玩得多,你觉得CF哪些功能做的不错?22. 除了游戏开发,你还有哪些其他方面技术上的兴趣?23. 你打过不少算法比赛,你觉得你的算法水平在你们校队能排到top多少?反问面试官人很温柔,聊起来也挺舒服的,面完二十分钟后官网就显示通过了
点赞 评论 收藏
转发
13 46 评论
分享
牛客网
牛客企业服务