网易雷火_服务器开发精英实习_一二面(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周后挂!

全部评论

相关推荐

04-29 20:54
已编辑
门头沟学院 C++
网易雷火的一二轮面试是一起通知的4.9&nbsp;&nbsp;&nbsp;投递4.13&nbsp;笔试4.24&nbsp;一二面(面完第三天约三面)4.29&nbsp;三面(面完3小时&nbsp;约HR面)5.6&nbsp;HR面一面🍜大概40分钟&nbsp;面试官很好&nbsp;就是延迟有点大(很明显的网络延迟,一句话说完&nbsp;得等好几秒)1&nbsp;项目拷打&nbsp;&nbsp;&nbsp;&nbsp;介绍一下两个项目&nbsp;&nbsp;&nbsp;&nbsp;介绍一下项目的持久化存储&nbsp;&nbsp;&nbsp;&nbsp;还有其他项目吗&nbsp;&nbsp;&nbsp;&nbsp;高并发内存池如何实现的&nbsp;&nbsp;&nbsp;&nbsp;了解malloc的底层吗?2&nbsp;new和malloc的区别3&nbsp;了解右值吗,谈谈对移动语义的了解4&nbsp;谈一谈虚函数&nbsp;,多态。了解虚函数表指针吗,多继承下是怎样的,为什么是这样的结构5&nbsp;谈一谈菱形继承,菱形继承下使用虚继承的结构是怎样的,虚表是如何实现的,如何解决的菱形继承6&nbsp;谈一谈模版,了解特化与偏特化吗?7&nbsp;数组与链表进行遍历的过程哪一个更快,底层是怎么处理的8&nbsp;谈一下一个数据包发送给目标主机的过程9&nbsp;路由器如何知道将数据包转发给谁?同一个子网下如何进行一个转发10&nbsp;填空题&nbsp;:大小端判断&nbsp;多路复用IO&nbsp;二叉树搜索效率&nbsp;智力题&nbsp;二面🍜大概30分钟&nbsp;主要都是项目拷打&nbsp;深入谈论1&nbsp;手撕抽卡逻辑2&nbsp;项目拷打三面🍜大概40分钟&nbsp;,&nbsp;面试氛围不太好,因为牛客的视频是演讲者模式,我看面试官是要斜着看的,然后面试官怀疑我使用AI,让我举着电脑转一圈,真的无语住了。1.&nbsp;项目拷打2.&nbsp;计算机网络问题3.&nbsp;手撕线程同步实现,4.&nbsp;手撕堆排序(我的代码习惯是一边写注释一边写代码,可能有点慢,他中途直接打断我,也不管我写的对不对)5.&nbsp;反问
查看16道真题和解析
点赞 评论 收藏
分享
评论
2
19
分享

创作者周榜

更多
牛客网
牛客企业服务