Files
eduplan-cpp-eltex/README.md
T

71 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ИУП: подготовка к собеседованию Eltex (C/C++, алгоритмы, Linux, сети)
Личный учебный план и пакет задач с автопроверкой. Обновляется по ходу недели.
## Что внутри
- `WEEK7.md` — **рабочий документ**: интенсив на 7 дней (D0 23.09 → D7 30.09), пересобранный
по результату диагностики (квиз 14/32: алгоритмы 1/8, Linux 3/8, сети 3/8, C/C++ 7/8).
Каждый день: карточки 30 мин → алгоритмы 3 ч → системное 3 ч → разбор и код 1,5 ч.
- `PLAN.md` — полный трек M1–M10 на пост-офферный период (модули, артефакты, материалы).
- `TRACKER.md` — дневник: что решено, где встал, сколько минут. Это вход для калибровки.
- `diag/` — пакет:
- `quiz.py` + `quiz.json` — 32 вопроса по 4 доменам;
- `tasks/01..09` — диагностика: биты, список, ring buffer, IPv4-заголовок, НВП, потоки,
epoll-сервер, bash по логу, разбор падения в gdb;
- `tasks/10..13` — добор под слабые домены: хеш-таблица с открытой адресацией, куча
(`heapify` O(n), top-K), Дейкстра, арифметика подсетей;
- `facts_drill.py` + `facts.json` — 60 карточек «числа и факты» (сложности, байты
заголовков, `/26 = 62`, TTL, порядок TCP-хендшейка, паддинг структур);
- `grade.py` — автопроверка задач (ASAN/UBSAN, таймауты, PASS/FAIL + полный лог);
- `questions_export.txt` — вопросы квиза текстом.
## Требования
- **Linux / WSL / macOS**: `g++` (C++17), `gcc`, `gdb`, `python3`, `bash`, `awk`.
Одной строкой в Ubuntu: `sudo apt update && sudo apt install -y build-essential gdb python3`.
- **Windows-native (MinGW-w64/clang)**: работают задачи 01–06 и 10–13 (нужен `g++` в PATH),
а также карточки `facts_drill.py`. Задачи **07 (epoll), 08 (bash/awk) и 09 (ASAN+gdb)**
под Windows-native не запускаются — они помечаются `ПРОПУСК`, а не `FAIL`.
Полный прогон — в WSL:
```powershell
wsl --install -d Ubuntu
```
```bash
sudo apt update && sudo apt install -y build-essential gdb python3
cd /mnt/d/Projects/edu/eduplan-cpp-eltex/diag && python3 grade.py
```
- Если компилятора нет совсем, `grade.py` больше не падает трейсбеком: он печатает
`ПРОПУСК` с причиной по каждой задаче и подсказку, что доставить.
## Как начать
```bash
git clone https://git.kodlo.art/Kodlo/eduplan-cpp-eltex.git
cd eduplan-cpp-eltex/diag
python3 quiz.py # квиз (или --answers "1-3 2-4 ...")
python3 grade.py # все 13 задач с санитайзерами
python3 grade.py 10 11 13 # выборочно
python3 grade.py --fast # без санитайзеров
python3 facts_drill.py # 20 карточек интерактивно
python3 facts_drill.py --all # все 60
```
Нужны `g++` (C++17), `gcc`, `python3`; для `07_epoll` — Linux-сокеты, для `08_bash` —
bash/awk/sort. Внешних зависимостей нет. На Windows задачи 07 и 08 удобнее гонять в WSL.
## Правила честности
Эталонных решений в репозитории нет (лежат только на машинке студии) — иначе автопроверка
превращается в шпаргалку. Требования по сложности, которые тест не ловит (например
`heapify` за O(n)), проверяются на разборе по коду. `answer.txt` в задаче 09 — обязательная
часть оценки.
## Куда отдавать результаты
- ветка `answers/<день>` в этом репозитории;
- либо файлы/`results_*.json` в чат;
- либо `python3 grade.py --submit` — складывает результаты и решения рядом.
Ежедневный блок плана приходит в топик лейна в 09:00 (НСК).