查看原文
其他

不愧是微信,问的贼细

小林coding 小林coding 2024-01-01

很多C++同学的项目都是webserver,属于网络编程项目。今天来看看微信,是怎么考察网络和系统的,这次分享是校招实习的面经。

我看了下,问的问题还是挺深的,面微信的话,计算机基础还是得学深和学扎实一些。

面经

  • 存字符串用unordered_map还是用map好?为什么?要怎么优化?

  • 有一个请求队列,有读者线程和写者线程 在同时操作这个共享的请求队列,属于什么样的读写模型 ?

  • 一写多读模型的情况下怎么解决读写冲突的问题?加锁是一种方案,但是会影响性能,有没有更好的办法?

  • select和epoll有什么区别?

  • epoll中可以无限承载socket的连接吗?创建socket时的返回值是什么?

  • fd在系统中有限制吗?可以无限申请吗?

  • 一个服务端进程最多可以和多少个客户端进行连接?和fd的数量有关吗?

  • 假设这样一个场景,客户端在和服务端进行TCP的三次握手的过程中,突然间客户端宕机了,那么这个socket怎么处理?可以删除吗?是怎么删除的?

  • 在服务端调用accept()之后,socket就是一直可读的吗?就是调用read()函数就一直可以读吗?会阻塞吗?

  • 如果服务端read()函数发生了阻塞,对方客户端异常关闭了,一直没有发数据过来,服务端会一直阻塞吗?会导致服务端卡死吗?

  • 在第七题中提到的这个情况,epoll可以解决这个问题吗?如果要识别这个问题,怎么识别?

  • linux进程创建线程的流程是怎么样的?

  • 线程共享进程的资源在linux中是怎么实现的?

  • 线程有自己私有的栈,那么这个栈的内存是被分配到哪里的?是放在进程所属的内存里面,还是说放在独立于进程外部的内存中?

  • 什么是协程?协程有什么用?

  • 场景题:一致性哈希相关

面试总结

追问到深处就不知道怎么回答了,面对追问就不知道怎么回答了,喜欢乱说。

----

部分问题,可以在下面这几篇找到解答。

字节一面:服务端挂了,客户端的 TCP 连接还在吗?

这次答应我,一举拿下 I/O 多路复用!

TCP 三次握手和四次挥手的面试题(2023最新版)

又被微信问懵了!一致性哈希是什么,使用场景,解决了什么问题?

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存