不愧是微信,问的贼细

2023-08-22 15:53:02 浏览数 (1)

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

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

面经

  • 存字符串用unordered_map还是用map好?为什么?要怎么优化?
  • 有一个请求队列,有读者线程和写者线程 在同时操作这个共享的请求队列,属于什么样的读写模型 ?
  • 一写多读模型的情况下怎么解决读写冲突的问题?加锁是一种方案,但是会影响性能,有没有更好的办法?
  • select和epoll有什么区别?
  • epoll中可以无限承载socket的连接吗?创建socket时的返回值是什么?
  • fd在系统中有限制吗?可以无限申请吗?
  • 一个服务端进程最多可以和多少个客户端进行连接?和fd的数量有关吗?
  • 假设这样一个场景,客户端在和服务端进行TCP的三次握手的过程中,突然间客户端宕机了,那么这个socket怎么处理?可以删除吗?是怎么删除的?
  • 在服务端调用accept()之后,socket就是一直可读的吗?就是调用read()函数就一直可以读吗?会阻塞吗?
  • 如果服务端read()函数发生了阻塞,对方客户端异常关闭了,一直没有发数据过来,服务端会一直阻塞吗?会导致服务端卡死吗?
  • 在第七题中提到的这个情况,epoll可以解决这个问题吗?如果要识别这个问题,怎么识别?
  • linux进程创建线程的流程是怎么样的?
  • 线程共享进程的资源在linux中是怎么实现的?
  • 线程有自己私有的栈,那么这个栈的内存是被分配到哪里的?是放在进程所属的内存里面,还是说放在独立于进程外部的内存中?
  • 什么是协程?协程有什么用?
  • 场景题:一致性哈希相关

面试总结

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

----

0 人点赞