首页 > 字节跳动提前批 游戏服务端开发 一面面经
头像
子衿我心
编辑于 2020-07-13 11:39
+ 关注

字节跳动提前批 游戏服务端开发 一面面经

首先自我介绍,讲了一下实习经历和做的项目
你认为服务端开发对哪些方面技能会有要求?(不太确定,答了一下操作系统多线程相关,网络通信,数据库等方面)

网络协议部分:
你写的web服务器项目涉及到哪些协议?(传输层tcp,应用层http)
tcp和udp协议的区别?tcp协议特点?(面向连接和无连接协议,可靠和非可靠。顺便谈了一下tcp为了保证可靠性的几个措施和带来的性能开销)
弱网环境下使用tcp和udp可能发生的情况?(不太确定,答了一下udp可能会出现大量丢包,tcp虽然不会丢包但可能会有大量延迟,低传输速率等)
使用udp发送很大的数据包可能会产生的问题?(一次性发送大包可能会在传输过程中数据有变化导致校验失效,数据作废等)
如果让你为游戏开发时,客户端和服务端交换数据设计格式你会怎么设计,服务端处理请求的逻辑?
(大致设想了一下把数据包分为请求头和请求体,请求头存放一些客户端想要调用的服务端方法的编号,请求体长度等等,请求体则是相关参数信息等)
如何在请求数据流中把上述数据包进行拆分(请求头长度固定,根据头部中请求体长度字段,判断接下来读取多长内容为该次请求)

linux下IO复用:
epoll中水平触发和边缘触发解释一下?(持续触发和触发一次等)
描述一下使用epoll发送数据的执行过程(工作线程把准备好的数据放入内核缓冲区,注册写准备事件等,了解不是很深入)

多线程:
自旋锁和互斥锁的区别?(刚好项目里两种都使用了,分析了两种锁的区别,不同情况下的性能对比,解释为什么在项目里最终使用了自旋锁)
你的项目里对请求队列进行加解锁,那如果使用无锁队列如何实现?(一开始没有想明白怎么保证线程同步,后来提示下想到使用原子操作)

c++:
c++多态解释一下(很宽泛,首先讲了一下静态多态:模板、函数重载等;又讲了一下动态多态:虚函数、动态绑定、顺便讲了下动态绑定的实现:虚表、虚表指针等)
菱形继承可能带来的问题(基类中的数据成员重复包含等)
常量成员变量如何初始化(成员初始化表)

数据结构、算法:
vector和list的区别和各自优缺点?在哪些情况下,两个容器的迭代器会失效?
如何使快速排序变得稳定?
算法题 反转链表(白给)

数据库:
redis了解过吗(没有)
mysql索引的作用?(提高查询效率)
建立索引时候使用的元素的要求?(最好使用自增主键建立索引,保证B+树插入新数据时的效率)

更多模拟面试

全部评论

(3) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐