网易互娱平台开发一面:网络、内存与海量文件差集
- 轮次
- 一面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- TCP 为什么需要三次握手和四次挥手,TIME_WAIT 为什么等待 2MSL?
- 连接异常断开或长期空闲时如何检测,怎样监控连接?
- HTTP 服务端如何推送消息,SSE 有哪些替代方案?
- TCP 粘包和拆包应如何处理?
- 进程与线程有什么区别,线程带来哪些收益,进程提供什么隔离?
- 上下文切换时哪些状态会变化,地址空间如何处理?
- 虚拟地址有什么作用,如何映射物理地址,缺页时发生什么?
- HashMap 的结构是什么,并发使用有什么风险?
- 红黑树、B+ 树和跳表各适合什么场景,复杂度如何?
- 如何求两个文件的差集,一个或两个文件都放不进内存时怎么办?
- 如何化简包含点、双点和重复斜杠的 Linux 路径?
《参考解析》
文件差集
先问清比较单位是整行还是某个字段,以及是否保留重复次数。内存足够时把被减集合建成哈希集合;两个文件都很大时,使用同一个哈希函数分桶,把相同值分到对应桶,逐桶求差集。若桶仍过大,就进一步拆分,或者对文件外部排序后归并比较。
路径化简
按斜杠分割,忽略空串和单点;遇到普通目录入栈,遇到双点回退一级。绝对路径退到根目录后不能再向上,相对路径则需要保留无法抵消的双点。原题如果只要求绝对路径,应明确这一前提。
TCP 消息边界
TCP 提供字节流,没有应用消息边界。可使用长度前缀、固定长度或分隔符编码;接收端需要缓存未完整的数据,解析一条后继续检查剩余字节。一次 read 对应一次业务消息的假设并不成立。