← Back to Directory

Anthropic interview notes, page 13 of 32

Mid-sized

Most of these Anthropic write-ups come from Software Engineers (277), then Machine Learning Engineers (31) and Product Managers (10). The most reported rounds are the technical phone screen (129), the system design round (86), the behavioral / leadership round (45) and the hiring manager screen (17).

319 interview notes · updated Sep 2026

Anthropic·Software Engineer·Technical Phone Screen

May 2026
Interviewed for a software engineering role at Anthropic and got a fairly deep algorithmic problem involving execution logs and call stacks. The question had a lot of moving parts and the constraints were pretty specific, which made it feel like more than just a typical coding screen.
  • Given a single-threaded program's execution log (a list of timestamped BEGIN/END events for function IDs), compute the exclusive CPU time per function (not counting time spent in child calls), and also reconstruct which functions are on the call stack at a given query timestamp. The solution should run in O(n) time and use O(m + call depth) space. You also need to explain how you handle equal timestamps (END before BEGIN), half-open intervals, and edge cases like back-to-back events or a query time outside any active interval.

“This one took me a minute to even parse fully.”

View Post

Anthropic·Software Engineer·Onsite - System Design / Architecture

May 2026
System design round at Anthropic for a software engineering role, focused almost entirely on GPU inference serving. The problem was meaty and the hints they dropped mid-interview made it clear they wanted you to reason from first principles, not just recite vague distributed systems platitudes.
  • Design an online GPU inference serving system that batches compatible requests together, routes work to GPU workers, supports multiple models and versions concurrently, and balances throughput against latency SLOs.
  • What makes two inference requests 'compatible' for batching, and which compatibility mismatch is a correctness bug rather than just an efficiency problem?
  • What conditions should trigger the scheduler to stop waiting and dispatch a batch? How do you derive the linger time limit from the latency SLO rather than picking an arbitrary number?
  • How does your scheduler need to change for autoregressive LLM generation compared to fixed-cost models, and what becomes the binding capacity constraint once you move to continuous batching?
  • The dashboard shows low GPU utilization but p99 latency is rising. What's the likely cause and what would you tune?
  • A single tenant sends a burst of long-sequence requests that fill one length bucket. How does your design prevent this from starving other tenants?
  • A GPU worker crashes mid-batch. Which requests are affected, what do you retry, and why is retrying safe here?

“This was the whole interview basically.”

View Post

Anthropic·Software Engineer·Onsite - Coding / Algorithms

May 2026
Coding round for a Software Engineer role at Anthropic. The problem was a multi-level in-memory banking system simulation, basically building up a fake bank from scratch with accounts, transfers, payments, and eventually account merging. Four levels of increasing complexity, all in one session.
  • Design and implement an in-memory banking system that processes a time-ordered stream of operations. Start with account creation, deposits, and balance queries, then layer in transfers, a spending leaderboard, deferred cashback payments, and finally account merging.

“This one is deceptively large.”

View Post

Anthropic·Software Engineer·Technical Phone Screen

May 2026
Coding round at Anthropic for a software engineer role. One question, but it had enough layers to keep me busy for a while. The complexity discussion at the end was where things got interesting.
  • Given a string and a dictionary of tokens, tokenize the string using a longest-match greedy rule: at each position, consume the longest matching token, advance, and repeat. Return the token sequence or signal failure if none exists. Then discuss the naive vs trie-based approach, their time complexities, and whether anything other than a trie can match the trie's worst-case performance.

“Started with the naive scan and got it working fine.”

View Post

Anthropic·Software Engineer·Online Assessment (OA)

May 2026
Took the Anthropic Fellows online assessment and scored zero. The algorithm itself wasn't hard, but the starter code and README were a mess of contradictions, and I spent most of my time just trying to figure out what format they actually wanted back.
  • Implement an algorithm using the provided class structure and return output in the format specified by the README.

“The algorithm itself was fine, nothing that would trip up anyone with real coding experience.”

View Post

Anthropic·Software Engineer·Technical Phone Screen

May 2026
Coding screen at Anthropic for a software engineering role, centered entirely on building a tokenizer from scratch. Three progressively trickier parts, each a follow-up to the last. Not the hardest interview I've had but the edge cases definitely kept me honest.
  • Given an input string and a fixed vocabulary, implement a greedy longest-match tokenizer. At each position, find the longest vocabulary token that starts there; if nothing matches, emit -1 for that character and move forward by one.
  • Modify the tokenizer so that consecutive unknown-character outputs (the -1s) get merged into a single -1 rather than one per character.
  • When the vocabulary is very small compared to the input length, how would you optimize the inner loop? What's the key insight that lets you cap the search early?

“Two nested loops, nothing fancy.”

View Post

Anthropic·Software Engineer·Technical Phone Screen

May 2026
Anthropic coding screen for a software engineer role, one question the whole time: build a string tokenizer from scratch. Seemed straightforward but the edge cases kept piling up and I ended up spending way more time on quoted string handling than I expected.
  • Implement a string tokenizer that splits an input string by a configurable delimiter set, handles quoted substrings as single tokens, supports backslash escaping inside quotes, and ignores empty tokens from consecutive or boundary delimiters.

“I started confident and immediately got tripped up on the quote handling.”

View Post

Anthropic·Software Engineer·Online Assessment (OA)

May 2026
Got an OA for a Software Engineer role at Anthropic about a week after applying. It was a multi-level task management system design problem, the kind where each level stacks complexity on top of the last. Submitted partway through the second week of the recommended window.
  • Design and implement a basic task management system with standard create, read, update, and delete operations.
  • Extend the task management system to support sorting tasks by priority and by creation order.
  • Add user quota enforcement and the ability to assign tasks to specific users.
  • Support historical queries on the task management system, allowing lookups of past task states or activity.

“Straightforward enough to start.”

View Post

Anthropic·Software Engineer·Onsite - System Design / Architecture

May 2026
Anthropic system design round for a software engineer role. The question was a full deep-dive into building a file deduplication tool, which sounds manageable until they keep pushing on edge cases and complexity analysis.
  • Design and implement a file deduplication tool that, given a root directory, finds all groups of duplicate files. You need to handle nested directories, symbolic links and cycles, large files efficiently, and explain your data structures, algorithm, complexity, and test cases.

“The multi-stage filtering part is what they really wanted to hear.”

View Post

Anthropic·Software Engineer·Technical Phone Screen

May 2026
Anthropic software engineer round that was basically one meaty parsing problem with a bunch of follow-ups layered on top. The core ask was straightforward but the extensions kept coming and I wasn't fully prepared for how deep they wanted to go.
  • Given the raw text output of a program's stack trace, parse it into a structured representation. For each frame, extract the class, method, file, and line number. Also identify the top-level exception and any 'Caused by' chains, linking them as parent/child relationships.
  • How would you extend your parser to handle multi-threaded dumps, where multiple threads each have their own stack trace in the same output?
  • How would you handle suppressed exceptions in the stack trace output, similar to how Java's try-with-resources attaches them?
  • Given a large collection of parsed stack traces, how would you group similar ones together? For example, treating two traces as equivalent if they share the same class and method names but differ only in line numbers.

“I started by sketching the regex patterns for the frame lines and that part went fine.”

View Post