面灵AI

网易互娱平台开发一面:网络、内存与海量文件差集

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. TCP 为什么需要三次握手和四次挥手,TIME_WAIT 为什么等待 2MSL?
  2. 连接异常断开或长期空闲时如何检测,怎样监控连接?
  3. HTTP 服务端如何推送消息,SSE 有哪些替代方案?
  4. TCP 粘包和拆包应如何处理?
  5. 进程与线程有什么区别,线程带来哪些收益,进程提供什么隔离?
  6. 上下文切换时哪些状态会变化,地址空间如何处理?
  7. 虚拟地址有什么作用,如何映射物理地址,缺页时发生什么?
  8. HashMap 的结构是什么,并发使用有什么风险?
  9. 红黑树、B+ 树和跳表各适合什么场景,复杂度如何?
  10. 如何求两个文件的差集,一个或两个文件都放不进内存时怎么办?
  11. 如何化简包含点、双点和重复斜杠的 Linux 路径?

《参考解析》

文件差集

先问清比较单位是整行还是某个字段,以及是否保留重复次数。内存足够时把被减集合建成哈希集合;两个文件都很大时,使用同一个哈希函数分桶,把相同值分到对应桶,逐桶求差集。若桶仍过大,就进一步拆分,或者对文件外部排序后归并比较。

路径化简

按斜杠分割,忽略空串和单点;遇到普通目录入栈,遇到双点回退一级。绝对路径退到根目录后不能再向上,相对路径则需要保留无法抵消的双点。原题如果只要求绝对路径,应明确这一前提。

TCP 消息边界

TCP 提供字节流,没有应用消息边界。可使用长度前缀、固定长度或分隔符编码;接收端需要缓存未完整的数据,解析一条后继续检查剩余字节。一次 read 对应一次业务消息的假设并不成立。