Meta Systems ML Tooling 面经:内存泄漏定位和 profiling

Meta Systems ML Tooling 面经:60 分钟技术面全程没有 coding,从 shared_ptr、virtual memory 问到 RSS 增长、profiling、mutex 和用 AI 定位内存泄漏。

MetaSoftware Engineer - Systems ML Tooling更新于 2026年9月20日2 分钟阅读
English
分享

面经 | Systems ML Tooling | 🔥🔥🔥 | Meta

2026(9月) Software Engineer - Systems ML Tooling @ Meta | Menlo Park | Technical Interview | 😐 Neutral | Hard | Pending

60 分钟的 technical,全程没有 coding。题目基本集中在 shared_ptr 和 memory、virtual memory、profiling、lock、debugging,最后是 project deep dive。

这一轮:内存、profiling 和锁

shared_ptr

第一个问题:shared_ptr 是否线程安全。

reference count 本身可以保证并发安全,但 shared_ptr 指向的 object 不会因为用了 shared_ptr 就自动 thread-safe。

follow-up 是两个 thread 同时修改 object 怎么办。

接着问循环引用和 weak_ptr,这部分很快。

Virtual memory

问虚拟内存主要解决什么,virtual address 到 physical memory 怎么映射,process isolation 怎么做。

有一个 follow-up:一个长期运行的 process RSS 一直涨,是不是就说明 memory leak。

不一定。聊到了 allocator、cache、mmap,以及 memory 没有马上还给 OS 的情况。

内存增长的 debugging 场景

然后给了一个场景:一个 service 跑几个小时以后 memory 会持续增长,怎么定位。

先确认能不能稳定复现,再缩小到具体 workload,看 allocation、call stack 和对象生命周期。这里提到了 heap profiler / debugger。

memory leak 这一段他追得最久。

CPU profiling

性能部分问了 perf 和 debugger。比如 CPU 很高怎么定位。

先 profile 看 hotspot 和 call stack。

他又加了一个条件:CPU 没有明显 hotspot,但是 latency 很高。

那可能再往 lock contention、IO、scheduler 这些方向查。

mutex 和 spinlock

mutex 和 spinlock 的区别,锁本身有哪些开销。

还问了 spinlock 什么时候会比 mutex 更差,以及什么场景反而会考虑 spinlock。

用 AI 定位内存泄漏

有一道挺贴这个组方向的问题:如何利用 AI 定位内存泄漏。

不是单纯让 AI 看代码猜哪里 leak。

我的理解是先通过 profiler / stack trace 把范围缩小,再把 allocation site、ownership chain 和相关 code context 给 AI 辅助分析。

follow-up:如果 AI 判断是 A,但 profiler evidence 指向 B,信哪个。

肯定还是 runtime evidence。

还问了 AI 给出的 fix 怎么验证。除了重新跑原来的 workload,还要看 memory curve、crash、use-after-free 之类的问题有没有出现。

Project deep dive

最后是 project deep dive,问之前做过什么 performance optimization。

他主要追这几点:

  • bottleneck 怎么定位的
  • 改之前 metric 是多少
  • 改完以后是多少
  • 有没有影响其他 metric