Files
eduplan-cpp-eltex/README.md
T
2026-09-24 13:39:14 +07:00

87 lines
6.3 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, карточки 11/60). День устроен так:
**урок (теория + разбор) → карточки → ступени задачи → зачёт `grade.py`**.
- `lessons/` — уроки по дням: теория по-русски, рабочие примеры кода с разбором, готовые
ответы на вопросы собеседования, ссылки на первопартийные материалы. Начинать с них.
- `PLAN.md` — полный трек M1–M10 на пост-офферный период (модули, артефакты, материалы).
- `diag/cards_src.tsv` — выжимка фактов из уроков и задач под карточки (level/domain/question/answer/ref).
- `HR_BASE_deep.md` — та же база в 152 вопросах, но каждый ответ — объяснение механизма
(«почему так» и «что ломается»), а не тезис. Это версия для чтения перед скринингом.
- `diag/cards_src.tsv` — выжимка фактов из уроков и задач под карточки (level/domain/question/answer/ref).
- `HR_BASE.md` — короткая база вопрос-ответ под тех-скрининг (ООП, C/C++, STL, Linux, сети, Git,
Docker, GDB, bash, embedded, вопросы HR) + шпаргалка чисел.
- `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` — 101 карточка «числа и факты» с пояснениями и
уровнями: `base` 41 (начинать отсюда, у каждой есть объяснение), `core` 52,
`deep` 8 (нишевое, в базовый прогон не попадает);
- `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
lessons/D1_algo.md # или открыть в редакторе
cd diag
python3 facts_drill.py --level base --learn # 41 карточка базы, ошибки объясняются
python3 facts_drill.py --level base,core # когда база закрыта (>=80%)
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 --level base --learn # база с пояснениями
python3 facts_drill.py --level all --all # все 101 карточка
python3 facts_drill.py --list --level base # вывести вопросы с ответами и пояснениями
```
Нужны `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 (НСК).