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

全部评论

相关推荐

05-16 12:12
已编辑
浙江工业大学 C++
没做笔试,直接通知面试,AB面,一面完感觉还可以,二面手撕没撕出来八股也答得一般感觉凉了。A面面试官很nice,上来先做了一个自我介绍,逆水寒项目组。整体比较偏简历。1.&nbsp;我来一个自我介绍。2.&nbsp;问知不知道工业界的GI实现方案,我说我知道比较经典的GI算法如LPV,VXGI,简单介绍了下。工业界的方案我知道lumen,然后说了个lumen的sdf判断光线交点和靠时序做间接光照实现无限次反弹。lumen讲的比较简单,面试官问了我一句是刚开始看吗,有没有在虚幻里搞搞,然后问我nvida的GI方案知不知道,我说不知道。3.&nbsp;降噪算法了解吗,我答了一个时序上的优化手段,其实不算降噪,具体的降噪算法不是很了解,也说不了解了。4.&nbsp;问简历上的项目,鹅的一个远程课题,和一个个人项目,都简单介绍了一下,鹅的课题多问了几句,个人项目明显不是很感兴趣。做5道题,没有手撕:1.&nbsp;概率论,早忘了2.&nbsp;多态,easy,延伸问了一下虚表指针、堆栈内存、lambda函数、智能指针和其他一些c++问题,最后拿了个实际场景问string优化,这个不知道了。3.&nbsp;model矩阵的一些参数,easy4.&nbsp;延迟渲染,常规问题,后续问我知不知道deferred&nbsp;light和deferred&nbsp;shading的区别,不知道了,还有移动端为什么还是forward&nbsp;rendering多一点,我猜可能硬件不支持multi&nbsp;render&nbsp;target或者G&nbsp;buffer带宽太大了移动端还是承受不住。5.&nbsp;列举知道的抗锯齿算法&nbsp;SSAA,MSAA,FXAA,TAAB面没让做自我介绍,上来直接做题,面试官全程就是感觉很不耐烦,面试体验较差...简历上的东西一句没问。1.&nbsp;4种cast转换,reinterpret_cast可以接受哪几种类型?2.&nbsp;模板知道吗?知道,没怎么写过。那你写一个看看。写了个a+b的模板。问T是什么,不知道了。问模板怎么实例化,也不知道了。3.&nbsp;讲一讲虚继承,解决多重继承。4.&nbsp;引用占不占内存。不占5.&nbsp;除了函数,哪些场景用引用?类里的拷贝构造和赋值构造。6.&nbsp;结构体里有一个引用的话,这个引用占struct的内存吗。类里面写引用?懵了,之前没见过这种写法,没答上来。引用指向的内存是不在这个struct的内存中的,但是引用本身是用指针实现的,要占一个指针的空间7.&nbsp;sizeof(string)是定长的吗?没听懂,可以自行百度,是定长的,我以为问我sizeof一个字符串。手撕,给定一个字符串,比如aaaabbbaaaccc,一次操作可以将一串连续且相同的字符变成另一个字符,比如第一次操作可以将bbb变成aaa,或将ccc变成aaa。问:最少多少次操作可以将这个字符串变成由全部相同的字符组成,即全部变成a或全部变成b或全部变成c一开始的思路:先压缩字符串,aaaabbbaaaccc压缩成abac,然后统计压缩好的字符串中出现次数最多的那个字符的出现次数k,示例为a,出现2次。返回压缩字符串的长度&nbsp;-&nbsp;k。提交给面试官,面试官说不对,但也不给我新的样例。我说我感觉这么做当前样例下没什么问题,面试官才又给我了一个样例abababcabacbab,对着这个样例想了半天也不知道哪里错了该怎么做,折磨,直接摊牌了说不会,面试官说那就面到这里吧。结束面试想搜一下这道题也没搜到,感觉是道hard,没有那么好做。救了大命了,真的写的折磨。5.16更新&nbsp;一面已挂
查看38道真题和解析
点赞 评论 收藏
分享
评论
2
19
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务