QQ飞车手游服务器一面(硬)- Go社招 - 7.19

alt

alt

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

=============================================================

  • 这就是中国最顶级游戏工作室的面试吗?
  • 该岗位是正式员工,但是签约主体是腾讯子公司-腾娱互动,不是集团正编
  • 自信心干没了,我是废物
  • 希望各位大佬们能帮忙解决项目下问的那些问题
#天美##游戏服务器##Golang社招##腾娱互动##腾讯#
全部评论
老哥上一份工作是大厂吗
点赞 回复 分享
发布于 07-21 01:35 上海
大哥走的啥方式投递的,内推还是boss?
点赞 回复 分享
发布于 08-03 01:43 广东

相关推荐

昨天 09:21
哈尔滨理工大学
素数回文#include#include#include#includeusing namespace std;int digits(long long num) {    int count = 0;    while(num != 0) {        num /= 10;        count++;    }    return count;}bool isprime(long long n) {    if (n <= 1) return false;    if (n <= 3) return true;    if (n % 2 == 0 || n % 3 == 0) return false;    for (long long i = 5; i * i <= n; i += 6) {        if (n % i == 0 || n % (i + 2) == 0)            return false;    }    return true;}int main() {    long long a, b = 0;    cin >> a;    int cnt = digits(a);    long long c = a / 10;    while (a > 0) {        b = b * 10 + a % 10;        a = a / 10;    }    long long e = pow(10, cnt);    long long j = c * e;    long long i = j + b;    if (isprime(i)) {        cout << "prime" << endl;    } else {        cout << "noprime" << endl;    }    return 0;}
点赞 评论 收藏
分享
评论
6
19
分享
牛客网
牛客企业服务