Interview pattern taxonomy
Тема отвечает на вопрос "о чем материал?". Паттерн отвечает на вопрос "какой навык проверяют?".
Примеры:
| Topic | Pattern |
|---|---|
| JavaScript | async ordering, closure state, mutation boundary |
| React | render ownership, effect lifecycle, state placement |
| Algorithms | hash lookup, two pointers, sliding window |
| Delivery | release gate, dependency risk, rollback decision |
Frontend Patterns
| Pattern | Проверяет | Representative questions | Practice |
|---|---|---|---|
execution-order | Понимание очередей, sync/async порядка, timing bugs | Junior q-9..q-11, Middle q-17..q-18 | Free-practice: 5 async-log snippets + fetchWithTimeoutAndAbort |
closure-state | Удержание lexical scope и состояния между вызовами | Junior q-7 | Free-practice: counter(), обработчики в цикле, debounce через closure |
mutation-boundary | Где мутация безопасна, а где ломает state/render | Junior q-4, q-14..q-17 | Move Zeroes, free-practice: nested state update |
data-transform | Выбор формы результата и структуры данных | Junior q-12, Middle q-13..q-16 | Merge Sorted Arrays, Group By Field |
safe-access | Защита от отсутствующих данных и nullable paths | Junior q-16 | Get By Path |
browser-boundary | Что делает браузер, сервер и политика безопасности | Junior q-18..q-20, Senior q-11 | Free-practice: storage risk table + CORS preflight response |
render-ownership | Кто владеет state, почему ререндер случился, где граница компонента | Middle q-1..q-7, Senior q-5 | Free-practice: state ownership map + render trace |
effect-lifecycle | Dependencies, cleanup, stale responses and side effects | Middle q-3, q-18 | Free-practice: stale useEffect reproduction and fix |
performance-budget | Ограничение стоимости рендера, JS, сети и бандла | Senior q-3, Middle q-20, Bundlers q-9..q-11 | Free-practice: bundle growth incident + DevTools performance note |
quality-gate | Как доказать, что изменение безопасно | Senior q-16..q-17, Playbook q-7 | Free-practice: test plan, quality gate checklist, rollback trigger |
Algorithmic Patterns
| Pattern | Признаки задачи | Representative sandbox tasks | Questions / learning |
|---|---|---|---|
hash-lookup | Нужно быстро проверить наличие, частоту или индекс | Two Sum, Valid Anagram, Contains Duplicate | Algorithmic lesson 1 |
two-pointers | Два края, отсортированный ввод, перенос/сжатие | Move Zeroes, Valid Palindrome, Merge Sorted Arrays | Practice bridges |
binary-search | Монотонное условие или отсортированный массив | Binary Search, First Position | Algorithmic lesson 2 |
sliding-window | Подстрока/подмассив, окно расширяется и сжимается | Longest Unique Substring, Sliding Window Maximum, Min Window Substring | Algorithmic lesson 3 |
prefix-sum | Нужно быстро считать сумму/количество на отрезке | Subarray Sum K, Product Except Self | Algorithmic lesson 3 |
interval-merge | Пересечения отрезков, расписания, комнаты | Merge Intervals, Meeting Rooms | Algorithmic lesson 2 |
stack-invariant | Нужно помнить последний открытый/ожидающий элемент | Valid Parentheses, Daily Temperatures | Algorithmic lesson 1 |
graph-traversal | Узлы, ребра, достижимость, компоненты | Number of Islands, Connected Components, Course Schedule | Algorithmic lesson 2 |
heap-top-k | Нужно быстро выбирать максимум/minimum/top K | Kth Largest, Top K Frequent, Merge K Sorted Arrays | Algorithmic lesson 4 |
cache-eviction | Ограниченная память, порядок доступа, eviction policy | LRU Process | Senior q-6 |
Algorithmic Readiness Packs
| Pack | Сделать | Observable output | Ready when |
|---|---|---|---|
| Core | Two Sum, Valid Anagram, Move Zeroes, Binary Search | core pattern log: pattern, invariant, complexity, 2 edge-cases | Pattern и invariant названы до кода в 4/4 задачах |
| Middle mixed | First Position, Subarray Sum K, Merge Intervals, Kth Largest | mixed-pattern scorecard: guessed/actual pattern, failed test, repeat date | 3/4 patterns угаданы до кода, нет повторной ошибки после fail-review |
| Senior defense | LRU Process, Sliding Window Maximum, Dijkstra, Merge K Sorted Arrays | senior algorithm defense sheet: data model, time, space, memory risk, invalid input | Решение защищено через complexity, memory и failure mode, не только через код |
Unlabelled Practice
Сначала решайте без подсказки паттерна. Затем сверяйте с taxonomy.
| Drill | Что сделать | Как проверить |
|---|---|---|
blind-5 | Откройте 5 случайных sandbox задач и до кода запишите предполагаемый pattern | ready, если 4/5 patterns названы до решения и совпали после разбора |
why-not-this | Для одной задачи назовите 2 неподходящих pattern и почему они хуже | ready, если причина связана с инвариантом или сложностью, а не с ощущением |
topic-to-pattern | Возьмите один вопрос из банка и перепишите его как pattern check | ready, если появился observable output: код, runbook, table, checklist |
mixed-round | 20 минут: 1 frontend question, 1 algorithm task, 1 Playbook correction | ready, если все три ответа имеют mechanism, risk, edge case and validation |
Naming Decisions
- Pattern names короткие и action-oriented:
execution-order,mutation-boundary,render-ownership. - Topic names не используются как pattern:
JavaScript,React,TypeScript- это области, а не проверяемый навык. - Один вопрос может тренировать несколько patterns, но в этой версии указан главный pattern.
- Компания-специфичная частотность не указывается без данных.
Gaps
- No automated tags yet: taxonomy is docs-level, not a UI filter.
- No component sandbox yet for
effect-lifecycleandrender-ownership. - No TypeScript type-checking sandbox yet for
data-boundary. - No test-runner sandbox yet for
quality-gate.
Use Gap Practice Packs for exact no-code drills while executable sandbox support is missing.
Next Step
- If you are planning a week, start with 7/14/30-дневные маршруты.
- If you are repairing one weak skill, use Practice bridges.
- If you fail a mock, classify the miss by this taxonomy before choosing the next drill.