Files
eduplan-cpp-eltex/diag
..

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

    Добор под слабые домены (добавлено 23.09 после диагностики — квиз 14/32):

    # Задача Что проверяется
    10 10_hash хеш-таблица с открытой адресацией: пробирование, перехеширование, erase
    11 11_heap куча: heapify снизу вверх O(n), kth_largest, top_k на 3M
    12 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.