Диагностика уровня — пакет (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_epollTCP-эхо-сервер на epoll: несколько соединений, SIGTERM 08 08_bashразбор лога доступа: TOTAL/TOP-3/5XX, 110k строк 09 09_gdbотладка ASAN-падения + письменный разбор в answer.txtДобор под слабые домены (добавлено 23.09 после диагностики — квиз 14/32):
# Задача Что проверяется 10 10_hashхеш-таблица с открытой адресацией: пробирование, перехеширование, erase 11 11_heapкуча: heapifyснизу вверх O(n),kth_largest,top_kна 3M12 12_dijkstraДейкстра на priority_queue: неотрицательные веса, 100k вершин13 13_subnetарифметика IPv4: сеть/broadcast/узлы, /31,/32, подбор префикса -
facts.json+facts_drill.py— тренажёр «числа и факты»: 60 карточек (algo 20, linux 14, net 14, c_cpp 12) под конкретные промахи квиза: сложности, байты заголовков,/26 = 62, TTL, порядок SYN/SYN-ACK/ACK, паддинг структур, правило трёх/пяти. Маркеры итога:>=80%ок,50–79%добор,<50%дыра. -
grade.py— прогон задач с автооценкой (PASS/FAIL, число проверок, время). -
solutions/— эталонные решения, в руки не отдавать: они лежат здесь, чтобы автопроверка не «протухла» (эталон → все PASS, заглушка → FAIL).
Как проходить
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/
python3 facts_drill.py # 20 карточек, интерактивно
python3 facts_drill.py --all # все 60
python3 facts_drill.py --domain algo # только алгоритмы
python3 facts_drill.py --answers "20|62|ttl|..." # проверить строку ответов разом
Порядок: сначала квиз, потом задачи с 01 по 09 (диагностика), затем 10–13 как добор.
Требования: Linux/WSL (или MinGW-w64 для задач 01–06, 10–13). Задачи 07/08/09 под
Windows-native пропускаются с пометкой ПРОПУСК — это не провал, гоняй их в WSL. Зависание = FAIL (есть таймауты).
Правила честности: без встроенных popcount/reverse-хелперов, без копирования чужих
решений, answer.txt в задаче 09 — обязательная часть (оценивается ход разбора).
Что считается результатом
results_quiz.json: балл по каждому домену + разбор промахов с пояснениями.results_tasks.json: по задаче — PASS/FAIL, число проверок, время, полный лог сборки.results_facts.json: тренажёр карточек — балл по доменам и список промахов.- Итог и решение по плану (с каких модулей стартовать) собираются по этим файлам.
- Рабочий план недели:
WEEK7.mdв корне репозитория; трекер дня —TRACKER.md.
Публикация и доступ
Репозиторий: https://git.kodlo.art/Kodlo/eduplan-cpp-eltex — клонируется без пароля,
обновляется по ходу недели. Результаты можно присылать веткой answers/<день>, файлами
в чат или через grade.py --submit.
Репозиторий: https://git.kodlo.art/Kodlo/eduplan-cpp-eltex (клонируется без пароля,
обновляется по ходу недели). Результаты можно присылать веткой answers/<день>,
файлами в чат или через grade.py --submit.
- Пакет в каталоге:
/home/pi/eduplan/diag(мир читает; каталог доступен на исполнение). - Инбокс для ответов:
/home/pi/eduplan/diag/submissions/(0777). - Архив для скачивания:
/home/pi/eduplan/diag/dist/eduplan_diag.tar.gz.