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

3.8 KiB
Raw Blame History

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

Как проходить

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.