快手一面 ——游戏客户端

2024.4.28

1.怎么理解C++的封装继承多态

2.多重继承,如果不用虚继承,能用其他方式解决这个二义性问题?显示调用?

3.动态多态,讲一下具体的动态多态

4.静态多态怎么通过不同类型实现多态

5.虚函数和纯虚函数的区别?

6.析构函数为什么一般都是虚函数

7.什么情况下,基类会析构,派生类不会析构,哪种写法会造成这种情况?

8.纯虚函数存在什么地方?

9.析构函数在什么时候调用呢?

10.如果是new,超出作用域范围内,析构函数会调用吗?如果会析构,delete调用的时候还会调用吗?

11.new一个类,在new的过程中,new做了哪些操作?new什么时候分配内存?

12.如果频繁的new和delete?new的时候从堆上面分配内存?delete的时候会将内存还回去?操作系统为什么会帮我们回收内存?(我有说如果忘记delete了操作系统会回收)

13.STL容器?如果我比较频繁的增插数据,并且寻找索引,选用什么容器?

14.讲讲TCP/UDP

15.三次握手,服务器没有收到客户端的第三次握手怎么办?

16.四次挥手,第二次我没有收到服务器的ACK,怎么办?

17.TCP的报文头有什么内容?TCP怎么保证传输的内容没有被修改?CRC?CRC是怎么做的?除了CRC还有什么检验方法?

18.滑动窗口

19.四次挥手,能不能三次挥手?

20.TCP怎么判断丢包?

21.HTTP和HTTPS的区别?传输协议使用什么协议,TCP?UDP?HTTPS的数据加密过程怎么做的?

22.讲讲帧同步和状态同步的概念

23.一场游戏里面有十个敌人,这个场景可以用状态同步做吗?怎么做呢?

24.AOI的常用的实现方式?

25.我的游戏由某个客户端组转发数据,那么是什么同步?

26.帧同步分为锁帧同步和什么?

27.寻路算法?

28.做题:将N个链表排序

29.反问:基础需要加强

全部评论
佬是笔完多久约面的呢?
1 回复 分享
发布于 2024-05-08 22:41 浙江
佬,所以纯虚函数存在什么地方啊
点赞 回复 分享
发布于 2024-06-15 11:23 广东
怎么有那么多奇怪的网络问题……哥们二面了吗
点赞 回复 分享
发布于 2024-04-29 18:25 陕西

相关推荐

08-14 21:54
已编辑
中国地质大学(武汉) Java
1.那现在从产品的视角来分析一下这个世界频道的功能应该是怎么定义的世界频道(王者荣耀这类游戏的世界频道)以及讨论一下它的技术实现有什么难点2.有没有了解过类似于QQ的群聊QQ的群聊是怎么实现的3.那假设让你实现一个群聊功能服务器的逻辑是怎么样子的(或者说可以描述一下整个链路,就是客户端一个用户发了一条消息开始,完整的数据传输流程,流转流程是什么样子)4.那在这个过程中服务器的作用就是将收到的消息转发给其他的用户对吧那你能详细说一下这方面的细节吗(是怎么转发的)5.那假如现在让你设计让你设计一个QQ,你会怎么设计这样的一个整个的系统流程来保证在线的用户可以实时收到一个消息然后不在线的用户也可以在下一次上线的时候看到历史的群聊消息6. OK那刚才你提到了一个客户端接收消息的机制那这个应该是一个什么样的呢?(这个群聊里有ABC三个人,A发了一条消息然后服务器把这个消息推送给谁,那这个推送一般是用什么技术或者什么协议实现)[可以使用websocket或者简单一点的话也可以直接使用TCP]7.刚才我们有提到就是在线的任务和离线的那怎么区分在线还是离线呢?(它其实就是可以通过TCP的饭店接吗他只要一直连着我的服务器那他就是在线)(面试官告诉我的一个过程:在线的用户要能实时收到消息,然后不在线的用户在上面之后也要看到这个历史消息,所以简单的完整的时间流程就是当a发了消息之后,就把这个消息存到这个群所对应的数据表里,然后再对每个人维护一个已读状态,然后如果这些人在线的话就单独更新一下,比如状态为一组就可以同时通过在线的这个TCP长连接把消息给它推出去,然后那些不在线的人在上线的那一刻就可以根据他的这个所有未读的消息整体做一个拉取然后已读之后再给它标记为已读就可以)8.那从这种情况回到刚才所聊的世界频道那世界频道和群聊在功能和实现上会有什么不同的地方(我回答了规模,历史信息是否保留)9.客户端什么时候知道能够去拉取这条消息10.有点像是刷帖子的意思就是我打开刷新,然后就主动拉取一次最新的消息,那假如我现在就一直打开了这个页面了那最新的消息应该怎么去获得(这里我回答的一个机制类似于刷帖子一样,然后面试官问我如果我一直打开这个页面保留在那里,我该怎么获取最新消息)11.或者我们反问一下就是从最开始出发他到底是真的是世界频道吗?(我这里回答可能是频道是划分了多个小频道然后的话可以根据地区可以根据时间戳来去划分)12.Java的JIT是什么13. Java的一段源代码从你写出来到最终执行这段过程发生了什么(可以回答牛客的那个面试专题部分的内容)14. Java将源代码编译成字节码之后交给JVM,那么我们C++中会编译成可执行文件交给机器执行这两个流程之间有什么不同15.现在具体到一条赋值语句int a = 1+3;这条语句在C语言中编译成了二进制的机器码,然后直接运行这个程序然后在Java中编译成了字节码交给jvm,这两段运行的过程有什么区别16.Java的int和Integer有什么区别17.在这个转换的过程中有没有踩过什么坑(我回答了基本数据类型和包装类然后说了一下自动拆箱和装箱他就问在这个转换过程中有没有坑,我回答了如果自动装箱或拆箱的次数过多会导致性能不好)18.假如现在我们都使用integer那么两个之间的比较是使用==号吗?(围绕了equals()和==讲了一下)19.使用==比较integer的时候,明明两个内存地址是不一样的但是最终比较的时候是相等的(我回答了常量池这部分的知识)20.常量池是在哪里维护的(我回答了元空间(也就是堆))21.常量池我是怎么了解到的(我就回答之前遇到过相似的题目我就好奇为什么会这样子明明两个数相等但是比较出来的结果却是false进而去了解了常量池,还回答了常量池的作用)22.有没有看过关于Java的源代码比如说常量池部分的实现(我说我看过关于Redis部分的,就是使用Lua脚本部分,还回答了AQS部分,但是这个我是一带而过了)23.讲一下你看过的Redis的源代码以及收获(我这里就回答了我看过他底层的LUA脚本,Redis怎么去使用这个脚本来实现单线程以及其他的一些原理,锁的部分也提到了一点点(不过我确实有点忘记了))24.手撕题leetcode 523连续子数组和:给你一个整数数组 nums 和一个整数 k ,如果 nums 有一个 好的子数组 返回 true ,否则返回 false:一个 好的子数组 是:长度 至少为 2 ,且子数组元素总和为 k 的倍数。(我讲了一个思路,而且刚刚开始还理解错了)25.反问,没什么好说的,因为觉得自己肯定没了,也没多问
查看24道真题和解析
点赞 评论 收藏
分享
1.面试官上来先介绍业务:内部效率部门,主要为公司内部开发效率软件。2.微软实习埋点怎么实现的?异步如果出错了该怎么办?如果网络不好,埋点上报不上去该怎么办?3.阿里云实习MQ怎么用的?解耦 + 削峰4.RocketMQ事务消息内部怎么实现的?两阶段提交:半消息 - > 全消息。5.RocketMQ内部存储和Kafka区别。Segment 和 CommitLog。为什么要这样设计?6.事务消息在RocketMQ里面是怎么存储的?半消息只写到commitLog,不写到Queue里。为什么这样设计?7.有10个topic,9个普通消息,1个事务消息,他们应该都是写在一个CommitLog里对吧,然后在写进Queue的时候,如果遇到了还没commit的事务消息是怎么做?等肯定不可能,那后面还需要回查这个消息吗?如果后面有遇到另一个已commit的事务消息该怎么办?回答的不好hhh,应该是commit的时候直接写进Queue里。8.Kafka如何顺序消费?写到一个partition里面。都写到一个partition里面就保证顺序消费了吗?说了消费者需要单线程。9.redis热key问题。只答了读写分离加分片 和改key放到不同分片上。其实还有复制几份key这个方法。10.mysql深分页问题。之前看到过,忘记了。答得不好hhhh。中间聊到了mysql执行计划。11.算法: 不用hashmap,set的两数之和。参照三数之和做法。12.反问:如果我进去了,您觉得我最大的挑战在哪? 熟悉生产环境,熟悉项目,不过没问题都有人带,这几年的校招生成长的都挺好的hhh。
查看14道真题和解析
点赞 评论 收藏
分享
评论
9
83
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务