86 lines
6.2 KiB
Markdown
86 lines
6.2 KiB
Markdown
# ИУП: подготовка к собеседованию 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 вопросах, но каждый ответ — объяснение механизма
|
||
(«почему так» и «что ломается»), а не тезис. Это версия для чтения перед скринингом.
|
||
- `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 (НСК).
|