Визуальные опоры

Диаграммы

Десять схем, которые удобно держать перед глазами: фреймворк ответа на System Design, слои клиентской архитектуры iOS, потоки данных для ключевых кейсов, дерево алгоритмических паттернов и общий график подготовки. Все диаграммы рендерятся в браузере и подхватывают тёмную/светлую тему.

10 схемMermaid SD + алгоритмыплан подготовки

D1 · Фреймворк System Design интервью (5 шагов)

Универсальная канва ответа с тайм-боксами. При смене требований возвращайтесь к шагу архитектуры — это сигнал зрелости для лида.

flowchart LR A["1. Requirements
& Scope
5-10 мин"] --> B["2. API &
Data needs
5-10 мин"] B --> C["3. High-level
Architecture
10-15 мин"] C --> D["4. Deep Dive
15-20 мин"] D --> E["5. Wrap-up
1-5 мин"] E -. "адаптация при смене требований" .-> C

D2 · Слои клиентской архитектуры iOS

Чистое разделение слоёв с repository-паттерном и offline-first кэшем — то, что ждут от senior/lead в SD-секции.

flowchart TB UI["UI Layer
SwiftUI / UIKit"] --> P["Presentation
ViewModel / Presenter"] P --> DOM["Domain
Use Cases"] DOM --> REPO["Repository"] REPO --> NET["Network
URLSession"] REPO --> CACHE[("Local Cache
memory + disk")] NET --> API["Backend API"] CACHE -. "offline-first" .-> REPO

D3 · Mental checklist на интервью

Линейная памятка, чтобы ничего не забыть в ходе обсуждения: от пользователей до мониторинга.

flowchart LR U["Users"] --> L["Load"] --> AR["Architecture"] --> AP["API"] --> S["State"] --> O["Offline"] --> SE["Security"] --> M["Monitoring"]

D4 · Кейс «Лента» (Feed) — поток данных

Пагинация, кэш картинок и пре-фетч, офлайн ранее загруженного, CDN для медиа.

flowchart TB subgraph Client["iOS Client"] V["Feed View
pagination"] --> VM["FeedViewModel"] VM --> FR["Feed Repository"] FR --> MEM[("Memory cache")] FR --> DISK[("Disk cache
offline")] FR --> IMG["Image cache
+ prefetch"] end FR --> GW["API Gateway"] GW --> FS["Feed Service"] FS --> DB[("Posts DB")] FS --> CDN["CDN
media"] IMG --> CDN

D5 · Кейс «Чат / Мессенджер» — архитектура

Real-time через WebSocket, очередь исходящих с идемпотентностью, локальная БД и E2E-шифрование на клиенте.

flowchart TB subgraph Client["iOS Client"] CV["Chat View"] --> CVM["ChatViewModel"] CVM --> OUTQ["Outbox queue
retry/idempotency"] CVM --> LDB[("Local DB
messages")] CVM --> WS["WebSocket client"] end WS <--> CG["Chat Gateway
WebSocket"] CG --> MS["Message Service"] MS --> MQ[["Message Queue"]] MS --> MDB[("Messages DB")] MS --> PUSH["Push Notif
APNs"] OUTQ -. "resend on reconnect" .-> WS

D6 · Кейс «Ride-sharing (Uber)» — real-time tracking

Гео-индекс, матчинг, потоки геолокации от водителя и пассажира, состояние поездки.

flowchart TB subgraph Rider["iOS Rider App"] RV["Map View"] --> RVM["RideViewModel"] RVM --> LOC["Location stream"] RVM --> RWS["WebSocket"] end subgraph Driver["iOS Driver App"] DLOC["Location publisher"] end RWS <--> GS["Geo / Match Service"] DLOC --> GS GS --> GEO[("Geo index
quadtree/geohash")] GS --> MATCH["Matching engine"] GS --> TRIP[("Trip state DB")] GS --> MAPS["Maps / Routing"]

D7 · Кэширование: стратегии

Решение «отдать из кэша или сходить в сеть», обновление с TTL и три стратегии записи.

flowchart LR REQ["Request"] --> CHK{"В кэше?"} CHK -- "да, свежо" --> RET["Вернуть из кэша"] CHK -- "нет/устарело" --> SRC["Источник / сеть"] SRC --> UPD["Обновить кэш
TTL"] UPD --> RET subgraph Стратегии direction TB CA["cache-aside"] WT["write-through"] WB["write-back"] end

D8 · Воронка собеседования в РФ-бигтех (техлид iOS)

Типичная последовательность секций от скрининга до оффера.

flowchart LR S0["Скрининг
HR + tech"] --> S1["Алго-секция
лайвкодинг"] S1 --> S2["iOS tech-блок
Swift/рантайм/память"] S2 --> S3["System Design
Mobile Architecture"] S3 --> S4["Лид-секция
команда/продукт"] S4 --> OFF["Оффер"]

D9 · Дерево паттернов алгоритмов

Карта основных паттернов, по которой удобно повторять и закрывать пробелы.

flowchart TB ROOT["Алго-паттерны"] --> ARR["Массивы/строки"] ROOT --> SEARCH["Поиск"] ROOT --> TREE["Деревья/графы"] ROOT --> DP["Динамика"] ARR --> TP["Two Pointers"] ARR --> SW["Sliding Window"] ARR --> HASH["Hashing"] SEARCH --> BS["Binary Search"] SEARCH --> HEAP["Heap / Top-K"] TREE --> DFS["DFS/BFS"] TREE --> UF["Union-Find"] TREE --> BT["Backtracking"] DP --> DP1["1D DP"] DP --> DP2["2D DP"]

D10 · Общий план подготовки (12 недель)

Алгоритмы — основной поток на 8 недель, System Design — параллельно с 4-й недели, затем финальный спринт.

gantt dateFormat X axisFormat %s section Алгоритмы (Курс A) Основной поток :a1, 0, 8 section System Design (Курс B) Параллельный поток :b1, 3, 6 section Финал Микс-ревью :c1, 9, 1 Мок-марафон :c2, 10, 1 Полировка :c3, 11, 1