友塔一面

#友塔游戏开发面试#
自我介绍

问项目
web项目
1. 登录验证是怎么做的
2. 为什么要这么做(上一问答使用JWT,保存在Redis中),这样验证有什么意义
3. 跟平时使用账号密码有什么区别
4. 了解JWT是怎么生成、由什么组成的吗
5. JWT第三部分校验码有什么作用
6. Redis做缓存的时候有做缓存失效相关的东西吗,比如token的时效
7. Redis对于过期的数据是怎么处理的
8. 在线聊天模块怎么实现的
9. 如果支持群聊需要怎么实现
10. 怎么查看历史消息,比如上拉加载更多消息

游戏项目
1. 有实现网络延迟处理吗
2. 主要做的是后端吗,前端有没有什么了解
3. 有用到protobuf这种数据结构吗
4. 你们消息发送的是什么格式
5. 用socket连接时有没有处理超时、断线这些异常的机制

八股

1. 比如我们现在视频,用的是udp还是tcp
2. 为什么udp会比较快
3. tcp头部有哪些信息
4. 假设不做第三次握手,只有两次握手可能会有什么问题
5. tcp的拥塞控制是什么机制
6. LRU的内存淘汰机制是怎么实现的
7. LRU可能存在什么问题吗
8. mysql的索引的实现方式
9. b+树与二叉树的区别
10. b+树相对于二叉树搜索的优点
11. 相对于哈希比较呢
12. 主键id使用顺序自增和UUID有什么区别
13. 乐观锁和悲观锁的概念
14. 对于vector容器有了解吗
15. 如果要将一串数据全部插入vector中,应该怎么操作效率更高
16. 这样插入数据用的是浅拷贝还是深拷贝
17. 如果是浅拷贝可能会有什么问题

手撕
力扣颜色分类

提问:想做的是客户端还是服务端(服务端)

场景
1. 如果用Redis实现一个秒杀功能,你会怎么做
2. 为什么要用Lua脚本
3. 如果让你实现分布式锁呢

反问
全部评论
佬,友塔也有java语言的吗
点赞 回复 分享
发布于 09-03 18:35 福建
这问的好多哇
点赞 回复 分享
发布于 09-04 15:34 广东
绝对过的
点赞 回复 分享
发布于 09-05 03:00 广东
离谱,明天一面,你说的这些一半不会
点赞 回复 分享
发布于 10-22 20:47 上海

相关推荐

不愿透露姓名的神秘牛友
11-01 22:11
点赞 评论 收藏
分享
3.内存管理&编程题(20道) 3.1由gcc编译的C语言程序占用的内存分为哪几个部分?栈区(stack)存放函数的参数、局部变量。堆区(heap)提供程序员动态申请的内存空间。全局(静态)区(static)存放全局变量和静态变量,初始化不为0的全局变量和静态变量、const型常量在一块区域(.data段),未初始化的、初始化为0的全局变量和静态变量在相邻的另一块区域(.bss段)。程序代码区存放函数体的二进制代码和字符串常量。3.2小端:一个数据的低位字节数据存储在低地址   大端:一个数据的高位字节数据存储在低地址   例如:int a=0x12345678;  //a首地址为0x200,大端存储格式如下:如何判读一个系统的大小端存储模式?(1)方法一:int *强制类型转换为char *,用"[]"解引用 void checkCpuMode(void)  {      int c = 0x12345678;      char *p = (char *)&c;      if(p[0] == 0x12)          printf("Big endian.");      else if(p[0] == 0x78)          printf("Little endian.");      else          printf("Uncertain.");  }  (2)方法二:int *强制类型转换为char *,用"*"解引用 void checkCpuMode(void)  {      int c = 0x12345678;      char *p = (char *)&c;      if(*p == 0x12)          printf("Big endian.");      else if(*p == 0x78)          printf("Little endian.");      else          printf("Uncertain.");  }  (3)方法三:包含short跟char的共用体 void checkCpuMode(void)  {      union Data      {          short a;          char b[sizeof(short)];      }data;      data.a = 0x1234;        if(data.b[0] == 0x12)          printf("Big endian.");      else if(data.b[0] == 0x34)          printf("Little endian.");      else          printf("uncertain.");  }  3.3全局变量和局部变量的区别?(1)全局变量储存在静态区,进入main函数之前就被创建,生命周期为整个源程序。 (2)局部变量在栈中分配,在函数被调用时才被创建,在函数退出时销毁,生命周期为函数内。 3.4以下程序中,主函数能否成功申请到内存空间?#include  #include  #include  void getmemory(char *p)  {      p = (char *)malloc(100);      strcpy(p, "hello world");  }  int main()  {      char *str = NULL;      getmemory(str);      printf("%s", str);      free(str);      return 0;  }  答案:不能。 解读:getmemory(str)没能改变str的值,因为传递给子函数的只是str的复制值NULL,main函数中的str一直都是 NULL。正确的getmemory()如下: ①传递的是二重指针,即str的指针void getmemory(char **p)   {      *p = (char *)malloc(100);      strcpy(*p, "hello world");  }  ②传递的是指针别名,即str的别名,C++中void getmemory(char * &p)   {      p = (char *)malloc(100);      strcpy(p, "hello world");  }  以上内容摘自专刊《嵌入式岗位笔试面试真题讲解》,该专刊不仅有真题讲解,还有经验分享,不清楚嵌入式该学什么的同学,想找嵌入式实习/正式工作的同学,都可以来看看:                  https://blog.nowcoder.net/zhuanlan/v0ELPM嵌入式公司推荐:   华为       、    小米         、     OPPO       、VIVO、     CVTE         、     大疆       、insta360影石、美的  、   TCL  、小米    、经纬恒润     、小鹏、 图森未来    、   百度    、滴滴、蔚来、理想、     联发科、 紫光展锐    、全志、   寒武纪    、晶晨半导体   、汇顶、华为     、 中兴    、浪潮    、TP-LINK、    讯飞、商汤、海康威视    、浙江   大华    、360。qi
查看4道真题和解析
点赞 评论 收藏
分享
评论
7
16
分享
牛客网
牛客企业服务