In this module — 4 sections
Prep — Google Senior Software Engineer
Study material for the Senior Software Engineer, Localization on AI Answers process (the scope comes from the recruiter's prep email).
The scope is set by the prep email of 2 September 2026 — summarised
in ../google-swe-prep-topicos.md.
Everything here is written in English on purpose. The interview is in English, and reading the material in the language you will speak builds the vocabulary passively, which is the cheapest kind of practice there is.
How to use it
- Open the path and start at the step you are on.
- Before solving any problem, read the interview protocol. Google assesses how you solve, not only the result — solving a problem in silence scores nothing.
- Record every problem you solve in progresso.md, with the time spent and what got you stuck. The pattern in your mistakes is more useful than the problem count.
- The code runs:
cd code && python -m pytest test_all.py -q
The one rule
Always out loud, always in English. Solving 200 problems in silence prepares you worse than solving 60 while narrating. The interview is a conversation with code in it, not a written exam.
Index
Cross-cutting fundamentals
| File | Topic |
|---|---|
| 00-percurso.md | Start here. The dependency-ordered path, with the criterion for moving on at each step |
| 91-protocolo-entrevista.md | The 45-minute script, ready-made English, and Google Drawings |
| 99-cartao-de-referencia.md | Every surviving table, for the night before |
| 90-padroes-de-problemas.md | The ~15 patterns that cover most questions, plus problems by pattern |
Modules by topic (in the order of the prep email)
| File | Topic | Your level |
|---|---|---|
| 01-complexidade.md | Big O, amortised analysis | 🟡 fair |
| 02-ordenacao.md | Quicksort, merge sort, heaps, binary search | 🟡 fair |
| 03-hash-tables.md | Implementing one from scratch with arrays | 🔴 gap |
| 04-arvores.md | Binary, n-ary, tries, AVL and red-black | 🟡 / 🔴 (AVL, tries) |
| 05-grafos.md | Representations, BFS/DFS, topological sort, union-find | 🟡 fair |
| 05b-dijkstra-astar.md | Dijkstra, A*, Bellman-Ford | 🟡 / 🔴 (A*) |
| 06-np-completude.md | TSP, knapsack, spotting the disguise | 🟡 fair |
| 07-so-concorrencia.md | HIGH WEIGHT — threads, locks, deadlock, scheduling | 🔴 main gap |
| 08-python-entrevista.md | The Python details an interviewer pushes on | 🟢 solid |
| 09-recursao-inducao.md | Recursion, backtracking, proof by induction | 🟢 solid |
| 10-matematica-discreta.md | Combinatorics, probability, n-choose-k | 🔴 gap |
| 11-system-design.md | The ten-minute sheet, for the night before | 🔴 gap |
| 11b-system-design-completo.md | HIGH WEIGHT — the full manual (52 pages): NALSD, distributed fundamentals, reliability, AI/ML, ten worked cases | 🔴 gap |
| 12-googleyness-leadership.md | STAR, and the signals being assessed | 🔴 gap |
Runnable code (code/)
Commented implementations of everything the email asks you to be able
to write from scratch. Each file runs on its own with a demo;
python3 code/test_all.py runs the 14 tests.
| File | What is in it |
|---|---|
hashtable.py |
chaining and open addressing, with tombstones and resizing |
avl.py |
AVL with the four rotations, an invariant checker, and the red-black comparison |
trie.py |
a trie with autocomplete, wildcards, and delete with pruning |
sorts.py |
merge, quicksort (random pivot, O(log n) stack), quickselect, counting |
heap.py |
a heap from scratch, O(n) heapify, top-k, streaming median |
graphs.py |
BFS/DFS, topological sort, Dijkstra, A*, Bellman-Ford |
unionfind.py |
path compression plus union by rank |
concorrencia.py |
demonstrates a race condition, a monitor, a deadlock, an RWLock, and the GIL measured |
The study site (site/)
python3 tools/build_site.py --serve # http://localhost:8000
A static site built from these same .md files: readable
on a phone, light and dark themes, four text sizes, an accordion index
with an intro per topic, and one page per problem pattern with a plan of
attack for every problem in the bank.
Concept cards — spaced repetition for the theory
python3 harness/drill.py conceitos
170 cards covering every module, on the same SM-2 schedule as the problems. Answer out loud, in English, before revealing. Ten minutes a day, and it trains the two axes the problems do not touch.
Auditing the material
python3 harness/auditoria.py --breve
There are two harnesses, asking different questions.
python3 harness/pedagogia.py --breve # can anyone learn from this?
pedagogia.py scores each module on the properties that
predict retention: table density, prose ratio, whether it opens with a
high-level map, whether it ends in retrieval, card coverage, and reading
budget.
auditoria.py checks the whole body of material against
the scope of the prep email and against Google's high-frequency
patterns: coverage, structure, links, tests, stale PDFs — and how much
you have actually trained. Details in harness/README.md.
PDFs (pdf/)
Every module has a PDF version in pdf/, for reading away
from the editor.
./tools/make_pdf.sh # rebuild all of them
./tools/make_pdf.sh 07-so-concorrencia.md # rebuild one
After editing a .md, run that so the PDF does not go
stale.
The process, in one table
| Round | Interviews | Duration |
|---|---|---|
| First | 2× Programming, Data Structures & Algorithms | 45 min each |
| Second | 1× Programming, DS & Algorithms | 45 min |
| 1× SWE System Design | 60 min | |
| 1× Googleyness & Leadership (non-technical) | 45 min |
First-round results arrive in one to two weeks, with no detailed feedback.
Only coding and DSA come up in the first round. System design and G&L only matter after you pass it. That is why the schedule prioritises DSA through week 8.