ИУП: интенсив 7 дней + диагностический пакет (32 вопроса, 9 задач с автопроверкой)
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Диагностика уровня — пакет (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`.
|
||||
Reference in New Issue
Block a user