Files
eduplan-cpp-eltex/diag/README.md
T

55 lines
3.8 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.
# Диагностика уровня — пакет (C/C++, алгоритмы, Linux, сети)
Собран под вакансию Eltex «Разработчик C/C++» (Новосибирск, hh #136775547).
Цель — не «проверить себя на ощупь», а получить машинную оценку по доменам и список дыр.
## Что внутри
- `quiz.json` + `quiz.py` — 32 вопроса по 4 доменам (C/C++ и память, алгоритмы и структуры
данных, Linux/ОС, сети L2/L3 и TCP/IP). 24+ верных — уверенный вход.
- `tasks/` — 9 практических задач, у каждой автопроверка:
| # | Задача | Что проверяется |
|---|--------|-----------------|
| 01 | `01_bits` | битовые операции, без встроенных popcount |
| 02 | `02_list` | связный список: разворот, середина, цикл (Флойд) |
| 03 | `03_ring` | кольцевой буфер, wrap-around, ASAN |
| 04 | `04_ipv4` | разбор IPv4-заголовка из буфера + контрольная сумма |
| 05 | `05_lis` | НВП за O(n log n), тест на 100 000 элементов |
| 06 | `06_threads` | ограниченная очередь: mutex/condvar, ThreadSanitizer |
| 07 | `07_epoll` | TCP-эхо-сервер на epoll: несколько соединений, SIGTERM |
| 08 | `08_bash` | разбор лога доступа: TOTAL/TOP-3/5XX, 110k строк |
| 09 | `09_gdb` | отладка ASAN-падения + письменный разбор в `answer.txt` |
- `grade.py` — прогон задач с автооценкой (`PASS/FAIL`, число проверок, время).
- `solutions/` — **эталонные решения, в руки не отдавать**: они лежат здесь, чтобы
автопроверка не «протухла» (эталон → все PASS, заглушка → FAIL).
## Как проходить
```bash
cd diag
python3 quiz.py # вопросы по одному; ответы — номер варианта 1-4
python3 quiz.py --export # вывести вопросы текстом (можно отвечать в чате)
python3 grade.py # все задачи (с ASAN/UBSAN/TSAN)
python3 grade.py 01 04 # только выбранные
python3 grade.py --fast # без санитайзеров, быстрее
python3 grade.py --submit # результаты + свои файлы в submissions/
```
Порядок: сначала квиз, потом задачи с 01 по 09. Зависание = FAIL (есть таймауты).
Правила честности: без встроенных `popcount`/`reverse`-хелперов, без копирования чужих
решений, `answer.txt` в задаче 09 — обязательная часть (оценивается ход разбора).
## Что считается результатом
- `results_quiz.json`: балл по каждому домену + разбор промахов с пояснениями.
- `results_tasks.json`: по задаче — PASS/FAIL, число проверок, время, полный лог сборки.
- Итог и решение по плану (с каких модулей стартовать) собираются по этим двум файлам.
## Публикация и доступ
- Пакет в каталоге: `/home/pi/eduplan/diag` (мир читает; каталог доступен на исполнение).
- Инбокс для ответов: `/home/pi/eduplan/diag/submissions/` (0777).
- Архив для скачивания: `/home/pi/eduplan/diag/dist/eduplan_diag.tar.gz`.