Skip to content

andreyyarigin/de-interview-questions

Repository files navigation

DE Interview Questions

При изучении любой обширной темы неизбежно возникают конкретные вопросы: почему это работает именно так, чем один подход лучше другого, что стоит за термином, который все используют но никто не объясняет. Разобрать вопрос по-настоящему — значит дойти до определений отдельных понятий и выстроить связи между концепциями.

Этот проект решает такую задачу применительно к Data Engineering: вопросы (в том числе с реальных тех. собеседований) разбираются до уровня атомарных терминов, а между карточками строятся явные связи — чтобы можно было идти от вопроса к концепции и обратно, а не читать изолированные ответы.

Вопросы → структурированные ответы → сеть связанных терминов и концепций.


Что внутри

  • Тематические разделы: DWH, Data Lake, Lakehouse, ClickHouse, Spark, Airflow, SQL, Python, NoSQL, MPP, ETL, Other
  • Термины и технологии с определениями, механизмом работы и связями
  • Готовые тезисы для устного ответа в каждой карточке

Темы: Spark, ClickHouse, Kafka, Airflow, dbt, Iceberg, Trino, Flink, Greenplum, StarRocks, DuckDB, индексы PostgreSQL, паттерны доставки, слои DWH, оптимизация запросов и многое другое.


Структура папок

00_Inbox/           — входящие вопросы для обработки (inbox.txt)
01_Terminology/     — атомарные термины и статьи о технологиях (145+ файлов)
02_Frameworks/      — индекс всех технологий со ссылками
03_Questions/       — ответы на вопросы, сгруппированные по темам
  ├── Airflow/
  ├── ClickHouse/
  ├── DataLake/
  ├── DataLakehouse/
  ├── DWH/
  ├── ETL/
  ├── MPP/
  ├── NoSQL/
  ├── Other/
  ├── Python/
  ├── Spark/
  ├── SQL/
  └── _<Тема>.md    — индексный файл темы (список вопросов)
04_Processed/       — архив обработанных сессий (YYYY-MM-DD-N.md)
05_Meta/            — инструкции для Claude, промты, служебные файлы
  └── instructions/ — модульные инструкции по работе с базой

Точка входа для навигации: 00_Index.md.


Развёртывание в Obsidian

Требования

  • Obsidian — бесплатно, Desktop или Mobile
  • Рекомендуемые плагины: Graph View (встроен), Backlinks (встроен)

Установка

git clone <repo-url>

Или скачайте ZIP и распакуйте в удобное место.

Затем в Obsidian: Open folder as vault → выберите папку репозитория.

Рекомендуемые настройки Obsidian

  • Files & Links → Default location for new notes: указать конкретную папку (например 00_Inbox)
  • Files & Links → Use [[Wikilinks]]: включить (база использует формат [[термин]])
  • Editor → Strict line breaks: выключить

После открытия vault граф связей (Ctrl+G) покажет сеть из 145+ узлов — это нормально, база изначально строилась как связный граф.


Использование без Claude (статическая база)

База полностью читаема без AI — это обычные Markdown-файлы.

Навигация:

  • 00_Index.md → список всех тем и словарь терминов A–Z
  • 03_Questions/_<Тема>.md → индекс вопросов по теме
  • 02_Frameworks/index.md → список технологий
  • Клик по [[ссылке]] в тексте → переход к определению термина

Поиск:

  • Встроенный поиск Obsidian (Ctrl+Shift+F) по всему тексту и YAML
  • Поиск по тегу: tag:question, tag:clickhouse, tag:spark и т.д.
  • Поле aliases в каждом файле содержит точную формулировку вопроса — ищите по ней

Структура карточки вопроса:

Вопрос       — точная формулировка с собеседования
Суть         — 2–4 предложения, достаточных для понимания с нуля
Как работает — механизм, алгоритм, внутреннее устройство
Пример       — код или аналогия (где уместно)
Edge cases   — подводные камни и типичные заблуждения
Тезисы       — готовый устный ответ из 2–4 предложений

Использование с Claude Code (обогащение базы)

Claude Code используется для обработки новых вопросов: он читает инструкции из 05_Meta/instructions/, создаёт карточки, пишет определения терминов и обновляет индексы.

Что нужно

  • Claude Code (CLI или desktop-приложение)
  • Открыть папку репозитория как рабочую директорию Claude Code

Файл CLAUDE.md в корне репозитория автоматически загружается Claude Code при каждом запуске — дополнительная настройка не нужна.

Добавление новых вопросов

Способ 1 — через inbox.txt (пакетная обработка):

  1. Добавьте вопросы в 00_Inbox/inbox.txt — по одному на строку, в любой форме
  2. Напишите в Claude Code:
    Обработай вопросы из 00_Inbox/inbox.txt
    
  3. Claude создаст карточки, термины, обновит индексы и очистит inbox

Способ 2 — напрямую в диалог:

Обработай вопрос: Как работает partition pruning в ClickHouse?
Добавь в базу: чем отличается copy-on-write от merge-on-read в Iceberg?

Что делает Claude при обработке

  1. Определяет тему и создаёт файл 03_Questions/<Тема>/<slug>.md
  2. Пишет структурированный ответ с тезисами для собеседования
  3. Проходит по всем терминам в ответе — создаёт отсутствующие файлы в 01_Terminology/
  4. Обновляет индексный файл темы 03_Questions/_<Тема>.md
  5. Записывает сессию в 04_Processed/YYYY-MM-DD-N.md

Углубление существующих ответов

Углуби ответ про data skew в Spark — добавь edge cases и сравнение стратегий

Claude найдёт существующую карточку и дополнит её, не создавая дубликат.

Аудит базы

Проведи аудит базы: найди битые ссылки и файлы без тезисов

Формат файлов

Все файлы — Markdown с YAML-фронтматтером. Поле aliases содержит точную формулировку вопроса — именно по нему Obsidian строит граф и находит дубликаты. Поле status (draft / verified / expanded) отражает степень готовности карточки.

Файлы терминологии используют **Связи:** в теле для навигации. Файлы вопросов используют related в YAML. Правило не смешивать — намеренное: раздельные механизмы для машиночитаемого графа и человекочитаемой навигации.

About

База знаний по Data Engineering: вопросы с реальных технических собеседований, разобранные до уровня отдельных терминов и концепций. Ответы структурированы, термины связаны между собой. Работает как Obsidian vault, пополняется с помощью Claude Code.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors