# Диагностика уровня — пакет (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`.