QQ飞车手游服务器一面(硬)- Go社招 - 7.19
- 先简单自我介绍一下
- 项目
- 哪个项目能代表我的技术水平的,比较有深度的一个项目。讲一下
- 技术难点在哪里呢
- kafka怎么保证消息不丢失的呢
- kafka怎么做这个可靠性的
- MongoDB、kafka这些都有副本机制。数据库里面这种副本机制一般都是怎么实现的?主节点和备节点,备节点去主节点同步数据的时候,一般需要做什么,之前有了解吗?
- 日志记录,具体怎么同步的呢?是主节点把日志记录发给从节点吗。
- 假如中途加入了一个新的节点,这个时候怎么做数据同步?因为主节点上已经有好多数据了,中途加进来一个新的节点(不是一开始就跟着同步)
- 一开始会怎么做?一开始是要把全量的数据全部同步过来吗?
- 你们redis用的什么方案,单节点方案,主从,还是集群方案?用的集群
- redis集群方案,每个节点也是有主备的,那他的主备是怎么做的?刚说的这个问题就是中途加入一个节点,redis也有解决方案。之前你们有去了解过吗?而不仅仅是用他
- 有没有了解,redis的分布式方案,主从同步机制?
- go为主是吧,对c++熟悉吗?
- c跟go有一个比较大的区别,内存管理差别比较大,因为go的内存管理是他自动帮你回收啥的,但c的话要动态申请一些内存对象都是要去
malloc
出来的,malloc
出来就得手动的去处理。假如写代码忘记处理会导致什么问题? - c语言中有什么办法可以去避免这种问题呢?
- 没学过c,不会了,主动把话题转移到go去了
- 那go的gc是怎么实现的呢?
- 三色标记大概是怎么样一个原理
- 每个颜色代表的是什么意义呢?
- 协程跟线程有什么区别?
- 协程为什么比线程轻量
- go 从协程a切到协程b一般要做些什么事情?
- 这是使用层面协程间的通信嘛,那从go语言本身来说,他要把一个协程切出去切成另一个协程,进来执行,总得干一些事情吧,就像操作系统从线程a切换到线程b,这块有了解吗
- go这边有了解过一下比较深入的主题吗,还是说平时只是用来写逻辑
- c跟go有一个比较大的区别,内存管理差别比较大,因为go的内存管理是他自动帮你回收啥的,但c的话要动态申请一些内存对象都是要去
- 是用rpc做的各个服务之间的通信吗?
- 能大概描述一下一个rpc从请求发起,到服务端收到请求,这整体的一个流程大概都做了一些什么事情吗
- 服务器收到客户端的请求,怎么知道要调哪个函数呢?
- 那用Protocol Buffers的时候,Protocol Buffers的协议是双向兼容的吗?老的Protocol Buffers客户端向一个新的服务器发,这里是兼容的吗能处理吗?比如:老的客户端一个Protocol Buffers结构有a b c三个字段,服务器协议更新了,有 a b c d四个字段,这时候发过去有问题没?会出现什么问题?
- 反问
=============================================================
- 这就是中国最顶级游戏工作室的面试吗?
- 该岗位是正式员工,但是签约主体是腾讯子公司-腾娱互动,不是集团正编
- 自信心干没了,我是废物
- 希望各位大佬们能帮忙解决项目下问的那些问题