Skip to content

About

Алгоритмы и структуры данных «с нуля» на Python и Go для SRE/DevOps: лабораторные, теоретический курс, Go-трек и задачи с собеседований. Документация на MkDocs Material.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

dsa-for-ops

tests go docs Сайт курса MkDocs Material Python 3.14 Go 1.25

База для будущих SRE / DevOps / Ops, которые хотят вырасти из bash-скриптов в инженеров-программистов. Репозиторий объединяет три направления: структуры данных и алгоритмы «с нуля» (Python и Go), теоретический курс «Основы алгоритмизации и программирования» и полноценный трек Go.

📖 Документация опубликована на GitHub Pages: https://jtprogru.github.io/dsa-for-ops/

Что внутри

  • DSA — лабораторные на Python (lab01–lab05) и их зеркальные реализации на Go, плюс прикладные расширения под эксплуатацию (lab00, lab06–lab11): графы, куча, LRU-кэш, rate limiting, разбор логов, consistent hashing.
  • Основы программирования — теоретический курс (темы 01–09): алгоритмизация, Python, процедуры и файлы, ООП, IDE, этапы разработки, иерархия классов.
  • Эксплуатация — темы 10–12: стандартные модули (HTTP, regex, SQLite, конкурентность), разработка приложений (логирование, Django, standalone), качество кода и тестирование.
  • Go — темы 13–14 и самостоятельные модули в src/golang/: основы Go и продвинутый трек (конкурентность, context, net/http, бенчмарки и pprof).
  • Собеседования — задачи с собеседований (LeetCode/CodeWars) на Python с тестами и Go-версиями, сгруппированные по структурам данных из лаб. Подробнее — в разделе «Задачи с собеседований».

Требования

  • Python >= 3.14 и uv для управления зависимостями.
  • Go >= 1.25 для Go-трека и Go-версий лабораторных.

Установка

make sync

Запуск лабораторных

make py-run              # список доступных Python-лабораторных
make py-run lab01        # запустить конкретную лабораторную
make py-run lab06

Новая лабораторная

make py-newlab           # создать следующую по номеру лабу (labNN.py + тест + docs/labNN.md)
make py-newlab lab15     # либо задать номер явно

Линтинг и форматирование

make lint                # ruff check + ruff format --check (как в CI)
make fmt                 # ruff check --fix + ruff format

Тесты

make test                # pytest + coverage
make go-test             # go test по всем модулям в src/golang
make go-build            # go build по всем модулям
make go-vet              # go vet по всем модулям
make test-interview      # только interview-тесты (Python + Go)

Документация

Сайт собирается из каталога docs/ через MkDocs с темой Material (mermaid-диаграммы, формулы MathJax, даты ревизий) и автоматически публикуется на GitHub Pages при пуше в main (workflow .github/workflows/docs.yml).

make docs                # локальный сервер на http://127.0.0.1:8000
make docs-build          # собрать статический сайт в site/ (mkdocs build --strict)

Прочие команды

make help                # список всех команд
make clean               # удалить кэш и временные файлы

Структура

src/python/
  labs/               # DSA-лабы на Python
    common/           # переиспользуемые утилиты (array_length, generate_array, custom_range)
    lab01.py … lab05.py # академические лабы (массив/стек, список/очередь/дерево, сортировки, поиск, hash map)
    lab00.py          # Python для эксплуатации (файлы, argparse, исключения, генераторы)
    lab06.py … lab11.py # прикладные: графы, куча, LRU, rate limiting, разбор логов, consistent hashing
  tasks/loops/        # разминочные упражнения на циклы
  tasks/interview/    # задачи с собеседований, сгруппированы по структурам из лаб
src/golang/
  basics/             # Go — основы (тема 13)
  advanced/           # Go — продвинутый трек (тема 14)
  dsa/                # Go-версии lab01–lab05 + table-driven тесты
tests/                # pytest к каждой лабораторной
docs/                 # сайт MkDocs (DSA, foundations, ops, go, interview, practice, tickets)
mkdocs.yml            # конфигурация сайта документации

Лабораторные (DSA)

Лабораторные сделаны «с нуля», без сторонних библиотек, чтобы было видно внутреннее устройство структур:

  • Академические (lab01–lab05) — массив и стек, связный список / очередь / дерево, сортировки, поиск, hash map.
  • Прикладные под эксплуатацию (lab00, lab06–lab11) — Python для эксплуатации, графы и топосортировка, куча и top-K, LRU-кэш, rate limiting, разбор логов, consistent hashing и bloom filter.

Подробный разбор каждой структуры (что это, зачем, сложность операций, блок «где это в проде») — в конспекте: https://jtprogru.github.io/dsa-for-ops/notes/. Go-версии lab01–lab05 лежат в src/golang/dsa/ с table-driven тестами; конспекты в docs/ приводят примеры на Python и Go во вкладках.

Задачи с собеседований

Если в лабах структуры данных реализуются «с нуля», то здесь они применяются — на готовых dict, set, list — для решения классических задач с собеседований (LeetCode/CodeWars). Задачи сгруппированы по структуре, которую закрепляют: хеш-таблица, массив/стек/два указателя, поиск, биты и арифметика.

make test-interview      # прогнать только interview-тесты (Python + Go)

Развитие

Направление развития курса — для кого он, какой стиль выдерживаем и что ещё хочется углубить — в docs/roadmap.md.

About

Алгоритмы и структуры данных «с нуля» на Python и Go для SRE/DevOps: лабораторные, теоретический курс, Go-трек и задачи с собеседований. Документация на MkDocs Material.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages