Preparing for Google

Senior Software Engineer, Localization on AI Answers. Everything worth studying, organised around the scope set out in the prep email.

20 modules, 130 problems, and one thing worth remembering: the first round is coding and data structures only.

Start here

The ordering, the 45-minute script, and how to recognise what a question really is.

01The path

One ordering, by dependency rather than by date. Each step says what to read, what to drill, and the criterion for moving on. Start at step zero.

Open
02Interview protocol

The seven steps of the 45 minutes, the English you say at each one, and what Google's own guide says about Drawings. If you read one page before the interview, read this.

Open
03Problem patterns

The fifteen shapes that cover most questions, a recognition table keyed on the wording of the prompt, and sixty problems grouped by pattern.

Open

First round: coding and data structures

Two 45-minute interviews. This is all that comes up in them.

04Complexityfair

Big O, amortised analysis and space complexity. The question behind the question is always "where does the log come from?"

Open
05Sorting and binary searchfair

Quicksort and merge sort written from scratch, and when merge sort works where quicksort is impractical. Google asks that one literally.

Open
06Hash tablesgap

The email asks for it in writing: implement one using only arrays, in the space of an interview. Chaining, open addressing, tombstones and resizing.

Open
07Trees, BSTs and triesgap

Binary, n-ary, tries, and one balanced tree with its rotations. "You should know how it's implemented."

Open
08Graphs, BFS and DFSfair

The three representations with their trade-offs, traversals, topological sort and union-find.

Open
09Dijkstra and A*gap

Weighted shortest paths, and the admissible heuristic that separates A* from Dijkstra.

Open
10NP-completenessfair

Recognising the travelling salesman and knapsack in disguise, and what to say once you have.

Open
11Python under interview conditionssolid

Operation costs, generators, __slots__, the __eq__/__hash__ contract. They expect real depth in whichever language you pick.

Open
12Recursion and inductionsolid

Solving recursively, and proving by induction that the algorithm does what you claim it does.

Open
13Discrete mathematicsgap

Combinatorics, probability and n-choose-k. Google leans on this harder than most companies do.

Open

Second round

One more coding interview, a 60-minute system design, and Googleyness & Leadership.

14Operating systems and concurrencygap

Processes and threads, mutexes, semaphores, monitors, deadlock, context switching and scheduling. Your largest gap, and the email spells it out point by point.

Open
15System design: the full manualgap

Fifty pages: Google's own NALSD method, capacity arithmetic, production reliability, model serving, and ten worked cases including the translation pipeline this role is named after.

Open
16System design: the short sheet

The ten-minute version, for the night before.

Open
17Googleyness and leadershipgap

Eight to ten STAR stories covering ambiguity, feedback, user first and caring for the team. Only you can supply the stories.

Open

Keeping track

Where you stand, and how the day's training gets chosen.

18Reference card

Every table worth having, in one place. Not study material — this is what you scan for ten minutes the night before.

Open
19How to use this material

The full index, the runnable code, the drill harness and the audit.

Open
20Progress log

Problems solved, and the mistakes that keep coming back.

Open

Practice by pattern

Every problem in the bank, grouped by the shape you have to recognise. Each one carries a plan of attack and the English to narrate it.

Reading the plan first is how you learn a pattern. But when drill.py hands you one of these, attempt it cold and on the clock — otherwise the training turns back into reading.

01Hash map5

Finding a pair, counting frequency, deduplicating, grouping equivalent things.

Open
02Two pointers10

'Sorted array' plus 'a pair or a triple'; or a cycle in a linked structure.

Open
03Sliding window6

'Contiguous subarray or substring' plus 'longest' or 'shortest'.

Open
04Binary search9

'Sorted array'; or 'the smallest k such that something is possible'.

Open
05Dynamic programming16

'How many ways', 'minimum cost to', 'longest such-and-such'.

Open
06Backtracking8

'All of the…', 'how many ways' when you have to list them.

Open
07Trees and traversals13

Anything with a root, children, depth or levels.

Open
08Tries2

'Prefix', 'autocomplete', 'dictionary of words'.

Open
09Graphs: BFS, DFS and topological sort10

'Connected', 'reachable', 'fewest steps', 'valid order', 'prerequisites'.

Open
10Shortest paths7

'Cheapest route', 'minimum cost', 'earliest time to reach'.

Open
11Heaps and top-k8

'k largest', 'k closest', 'median of a stream', 'merge k sorted things'.

Open
12Stacks and monotonic stacks3

'Balanced brackets', 'next greater', 'largest rectangle'.

Open
13Intervals3

'Intervals', 'meetings', 'scheduling', 'overlapping'.

Open
14Linked lists3

'Linked list', 'reverse', 'from the end', 'cycle'.

Open
15Strings and parsing6

'Palindrome', 'anagram', 'parse', 'format', 'compress'.

Open
16Array manipulation2

'Without division', 'in place', 'one pass', 'constant extra space'.

Open
17Matrices4

'Spiral', 'rotate', 'in place' on a two-dimensional grid.

Open
18Bit manipulation4

'Appears once', 'no extra space', 'count the bits', 'without arithmetic operators'.

Open
19Designing a data structure5

The prompt opens with 'Design a…' and gives a target complexity per operation.

Open
20Concurrency6

'Threads', 'in order', 'alternate', 'at most N at a time', 'deadlock'.

Open