Anthropic Software Engineer Phone Screen Interview Experience

2026 年一季度 Anthropic General SWE 技术电面:web crawler BFS,以及多线程去重、结束条件和失败重试的 follow-up。

AnthropicGeneral 软件工程师,全职更新于 2026年9月14日1 分钟阅读
English
分享

2026(1-3月) 码农类General 硕士 全职@anthropic - 猎头 - 技术电面 | 🙁 Negative 😐 Average | Fail | 在职跳槽

题目是 web crawler,从一个 URL 开始,把同一个 host 下能访问到的 URL 都找出来。

Coding

思路就是 BFS。queue 里放还没处理的 URL,visited 做去重。每次取一个 URL,调 parser 拿到页面里的 links,只把同一个 host、没见过的放回 queue。BFS、DFS 都可以,我写的 BFS。

follow-up 问怎么改成多线程。我说固定大小的 thread pool,queue 换成 blocking queue,visited 用 concurrent set。两个 worker 可能同时发现同一个 URL,所以 check 和 add 要放在一起做,不然会重复爬。

后面主要问什么时候算结束。queue 暂时为空不代表真的结束,因为可能还有 worker 正在 fetch,过一会儿又放进来新的 URL。我开始只看 queue empty,这里被追问了一下。后面改成记 pending task 数量:新 URL 入队加一,一个 URL 处理完减一,变成 0 才结束。

还问了 request 失败怎么处理。我说加 timeout,失败重试几次,超过次数就记下来跳过。并发版最后没有全部写完,后来收到拒信。