💡PDD 服务端研发面经:在“尬笑”中进阶,在“撕题”中成长
刚面完拼多多(PDD)的服务端岗,这一波面试下来,真的深刻体会到了什么叫“基础不牢,地动山摇”。把面试题总结出来分享给大家,顺便附上我的内推码,大家一起冲!
1. 网络基础:那些“送命”的细节
- TCP断电感知: 我随口说 send 函数返回 -1。面试官微微一笑:“你确定吗?”真相: 客户端断电,OS 没机会发 FIN 包。如果服务器不发数据,send 根本没机会返回错误。此时需要依靠 TCP Keepalive(保活机制) 或者应用层的心跳包来感知。
- TCP 八股文连招: * 握手/挥手顺序、流量控制、拥塞控制(慢启动、拥塞避免、快重传、快恢复)。报文有序性: 依靠 Sequence Number(序列号) 重新排列,丢包重传。
- HTTP 状态码: * 301:永久重定向(SEO友好)。304:协商缓存命中了!服务端告诉客户端:“你本地那份还能用,别找我要了”。
2. Linux 运维与进程:实战派
- CPU 100% 怎么办?top 定位高占用进程。top -Hp [pid] 找具体的“罪魁祸首”线程。printf "%x\n" [tid] 转十六进制。jstack 打印堆栈信息,死循环还是计算密集一目了然。
- 僵尸进程 vs 孤儿进程:孤儿: 父进程先走,子进程被 init(PID 1)领养。僵尸: 子进程死了,父进程不收尸(不调用 wait/waitpid),占着进程表不拉屎。
3. 手写缓存:别只盯着 HashMap
- 面试官提示用 LinkedHashMap 实现 LRU(最近最少使用)。
- 复盘:LinkedHashMap 内部维护了一个双向链表,重写 removeEldestEntry 方法就能丝滑实现淘汰策略。当时脑子抽了没想起 TreeMap(红黑树有序),痛失表现机会!
4. 算法挑战:从双指针到海量数据
- 有序数组找中位数: 我给出了双指针 。面试官问优化?正解: 二分查找,时间复杂度可以压到 。
- Top 10 热词统计: 标准的大数据分治思路。Hash 分流: 将大文件哈希取模拆分到小文件。局部 Top K: 用 HashMap 统计频率 + 小顶堆。全局汇总: 合并所有小文件的 Top 10,再求最终 Top 10。
🧡 碎碎念与内推
面试官人很 Nice,虽然被问到“尬笑”,但复盘才是提升的最快途径。拼多多这边的氛围真的很硬核,想挑战高并发场景的同学闭眼入!
【拼多多集团-PDD校园招聘】
🚀 岗位: 服务端研发工程师
🔗 内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=rHsbREig7w
🔑 内推码:rHsbREig7w
通过此链接投递计入内推,简历优先筛选!我们一起,无拼不青春!🔥
#面经 #拼多多内推 #Java开发 #计算机网络 #算法刷题 #校招