网易雷火_服务器开发精英实习_一二面(20250212)
一面(20250210)
自我介绍
TCP四次挥手中的FIN_WAIT_1出现在什么时刻?TCP四次挥手的过程是怎样的?
看代码回答程序会输出什么?右值引用?移动拷贝构造函数?std::move的作用?std::move的使用场景?
class B { public: B() {std::cout << "1" << std::endl;} B(const B& other) {std::cout << "2" << std::endl;} B& operator=(const B& other) { std::cout << "3" << std::endl; return *this; } ~B() {std::cout << "4" << std::endl;} }; class A : public B { public: A() {std::cout << "a" << std::endl;} A(const A& other) : B(other) {std::cout << "b" << std::endl;} A& operator=(const A& other) { if (this != &other) { B::operator=(other); std::cout << "c" << std::endl; } return *this; } A(A&& other) : B(std::move(other)) {std::cout << "d" << std::endl;} ~A() {std::cout << "f" << std::endl;} }; int main() { A a1; A a2 = a1; A a3; a3 = a1; A a4 = std::move(a1); return 0; }
static变量的生命周期,下面的程序会输出什么?
void f(int a) { static int i = 0; std::cout << ++i << std::endl; } int main() { f(1); f(1.0); f(1); }
TCP和UDP的应用场景分别是什么?
int a[1000000000000000]这样声明会报错吗?
在一台32位的Linux机器上,用malloc去申请6个G的内存能成功吗?4个G呢?3个G呢?
TCP报文头中的序号有可能溢出吗?如果溢出了怎么办?(防回绕序列号算法,给TCP报文加上一个时间戳)
如果让你使用UDP去实现可靠传输,你要怎么设计?怎么保证消息的有序性?KCP听说过吗?
Linux中grep命令一般用来干嘛?gdb用过吗?平时是怎么调试的?
有遇到过内存泄漏吗,当时是怎么排查的?如果让你设计一个用来检测内存泄漏的工具,要怎么设计?静态检测动态检测都可以说一下?
假设一个结构体需要在网络中传输,需要考虑哪些问题?
如果让你设计一个序列化/反序列化算法,你会怎么设计?
如果我要传输的数据量很小(小于报文头部),比如就2个byte,你这种方案在这种场景下是不是很浪费网络资源?要怎么优化?(Nagle算法)
如果游戏中的一个场景下的玩家数量很多,每次要同步的数据量很多,你要怎么优化?AOI?还有呢?
如果游戏内有一个群聊,比如说有10条信息,玩家只看了1条信息就下线了,你要怎么设计一个机制去推送这些群聊信息?
如果消息数量很大呢?如果玩家数量很多呢(比如说群里有10w个人)?
如果一个玩家重复上下线而不读消息,你的方案会有什么问题?怎么优化?
你了解的市面上这些游戏的同步机制是怎么做的?有什么优化的方案?
总结:转go之后c++很多知识都忘记了,所以答的很一般。另外有很多面向高并发,大数据量场景优化题,还是缺少思考和灵活变通!一面完第三天hr通知二面!
二面(20250213)
redis集群有哪些部署方式?
redis的数据类型有哪些?zset的底层是怎么实现的?
zset如果要查找第k大的元素,具体到跳表的过程是怎样的?复杂度是多少?
zset如果要查找分数为x的元素是第几名?具体到跳表是怎么实现的?复杂度是多少?
Lua的语法还记得吗?
使用Lua脚本更新redis集群中的多个key,且如果这些key被hash在不同的节点上,Lua脚本还能保证原子性吗?
goroutine是怎么底层是实现的?协程的调度模型了解吗?
goroutine是在用户态上实现的,假设有某些协程运行时间很久,它是通过什么机制使得其他协程不会饥饿的?
令牌桶算法和漏桶算法有什么区别?
手撕:用你熟悉的语言实现一个令牌桶算法!
总结:redis的部署模式没怎么了解过,另外跳表细节还是不够熟,一面都在问C++,二面突然又问Go,GMP和GC这些还是不熟;手撕写出来了,但是前面回答的太太太差了!泡了大概2周后挂!