网易雷火_服务器开发精英实习_一二面(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-25 18:18
门头沟学院 Java
0425&nbsp;问了些八股(10min),没问项目,做了三题手撕(50min)在pdd的面试平台,需要共享屏幕。面试官很和蔼,比约的时间早进面试间。不会的也说没事,手撕也提示自我介绍(1min)1.&nbsp;常见的集合有哪些2.&nbsp;哈希表有哪些实现方式3.&nbsp;除了哈希表,还有什么数据结构能实现输入key,找到他的value4.&nbsp;哈希表怎么实现的5.&nbsp;为什么链表长度大于8,要用红黑树6.&nbsp;为什么红黑树是log(n)的时间复杂度7.&nbsp;优先队列怎么实现的8.&nbsp;说一下堆怎么实现的,pop之后堆怎么调整9.&nbsp;说一下TCP协议10.&nbsp;说一下IP协议11.&nbsp;说一下HTTP协议和TCP/IP整体关系12.&nbsp;说一下HTTPS13.&nbsp;说一下HTTPS的原理14.&nbsp;说一下公钥、私钥和数字证书15.&nbsp;为什么一开始要用非对称加密,后来用对称加密16.&nbsp;HTTPS&nbsp;如何防范中间人攻击手撕1.&nbsp;给了两个有序的数组(数组中有重复元素),把a中存在,但b中不存在的数据加入新数组2.&nbsp;一个有序序列构造成二叉搜索树有很多种结构,如何判断两个二叉搜索树是一样的。先说了中序遍历获得序列判断,但面试官提示说能不能一边遍历一边判断,比如最小的数不相等就不往下遍历了3.&nbsp;给一个字符数组,写一个排序函数,数字排在字母前面,但数字之间相对顺序不变,字母之间相对顺序不变。(原地排序,不能用新数组)
拼多多集团-PDD一面319人在聊 查看40道真题和解析
点赞 评论 收藏
分享
评论
2
19
分享

创作者周榜

更多
牛客网
牛客企业服务