ИУП: интенсив 7 дней + диагностический пакет (32 вопроса, 9 задач с автопроверкой)

This commit is contained in:
Kodlo-chan
2026-09-23 16:05:09 +07:00
commit 4cd63b3d4d
40 changed files with 2464 additions and 0 deletions
+145
View File
@@ -0,0 +1,145 @@
# ИУП — интенсив 7 дней (фуллтайм, собеседование ≤ 1 неделя)
Срок: собеседование максимум через неделю, подготовка — фуллтайм (~8 ч/день).
Цель интенсива: закрыть ровно то, что спросят на входе в Eltex (C/C++, базовые алгоритмы и
структуры данных, Linux, L2/L3-сети, инструменты), и не утонуть в глубине.
## Правила интенсива
1. Каждый день — три блока: **утро (3 ч) алгоритмы**, **день (3 ч) системное/язык**,
**вечер (2 ч) практика + разбор**. Блок не начинается, пока не закрыта вчерашняя точка.
2. День закрыт, только если: решены задачи дня **без подсказки**, написан/починен код дня,
сделана **одна задача вслух на таймер** (10 мин: 2 мин на разбор + код + сложность).
3. Всё пишем, а не читаем: теория — только под конкретную задачу, максимум 40 минут.
4. Трекер: `/home/pi/eduplan/diag/submissions/` или файл у себя — что решено, где встал,
сколько минут. Это вход для калибровки на следующий день.
5. Что осознанно НЕ лезет в неделю: полноценное ядро (модуль+драйвер), электроника,
Docker-продакшн. Ядро — обзорно на D6, электроника — после оффера (см. `PLAN.md`).
6. Если день провален — не догоняем всё, а переносим хвост в D7 (день повтора) и режем
второстепенное (M8-обзор, docker).
Материалы: cppreference (C и C++), man7.org (разделы 2/3/7), LKMPG, docs.kernel.org,
OSTEP (главы про процессы/память), Beej's Guide to Network Programming, RFC 791/793,
Wireshark wiki. Задачи: Codeforces с фильтром по тегам и рейтингу 800–1400
(`https://codeforces.com/problemset?tags=two+pointers,800-1400` — менять тег),
Яндекс Тренировки по алгоритмам (бесплатные контесты с разборами,
`https://yandex.ru/yaintern/training/algorithm-training`), классика LeetCode — по названию
(ссылки на leetcode.com открываются только в браузере).
---
## D0 — 23.09, диагностика (3–4 ч)
- Квиз: `python3 quiz.py` (или ответы строкой в чат), 32 вопроса, 4 домена.
- Задачи: `python3 grade.py` — 9 задач с автопроверкой (ASAN/UBSAN).
- Разбор промахов вместе со мной, калибровка: какие дни усилить, что срезать.
- **Точка:** есть `results_quiz.json` и `results_tasks.json`, названы 3 слабейших темы.
## D1 — 24.09: массивы/строки + память в C + процессы Linux
- Утро (3 ч) — алгоритмы: два указателя, скользящее окно, префиксные суммы, бинарный
поиск и `lower_bound` руками. Задачи: Two Sum, Valid Palindrome, Container With Most
Water, Longest Substring Without Repeating Characters, Binary Search + 6–8 задач с
Codeforces по тегам `two pointers` и `binary search`, рейтинг 800–1400.
- День (3 ч) — C и память: указатели и арифметика, выравнивание и padding, UB
(signed overflow, strict aliasing, неинициализированная память), malloc/free,
переполнение буфера; сборка с `-Wall -Wextra -Werror -fsanitize=address,undefined`.
Практика: переписать `tasks/01_bits` и `tasks/03_ring` на чистом C (без C++-обёрток),
прогнать под санитайзерами.
- Вечер (2 ч) — Linux: `fork/exec/wait`, зомби, сигналы, коды возврата. Практика: свой
мини-шелл (fork + exec + wait, обработка `exit`) — это прямой вопрос на собеседовании.
- **Точка:** 10+ задач решены; мини-шелл запускает `ls`/`cat`; ASAN чистый; лог дня.
## D2 — 25.09: хеш-таблицы и сортировки + C++ (RAII, владение, STL) + git/Makefile
- Утро (3 ч) — алгоритмы: хеш-таблицы и множества (коллизии, открытая адресация vs
цепочки), сортировки и компараторы, stability. Задачи: Group Anagrams, Top K Frequent
Elements, Two Sum II, Merge Intervals, Sort Colors + 6–8 задач с тегами `hashing`,
`sortings`.
- День (3 ч) — C++: RAII, правило 0/3/5, move-семантика и `std::move`, умные указатели
(unique/shared/weak, циклы ссылок), контейнеры STL и итераторы, лямбды, исключения и
гарантии безопасности. Практика: свой `unique_ptr` и свой `vector` (упрощённый), класс-
владелец с правилом пяти; сборка с `-Werror`.
- Вечер (2 ч) — git (ветки, rebase, конфликты, `bisect`) и сборка: Makefile руками, затем
CMake для своих задач. Практика: репозиторий с 3 задачами, где сборка/тесты — одной
командой.
- **Точка:** мини-библиотека собирается с `-Werror`; git-сценарии (rebase, bisect) пройдены
руками; 10+ задач.
## D3 — 26.09: списки/стек + многопоточность + gdb
- Утро (3 ч) — алгоритмы: связные списки (разворот, цикл Флойда, k-й с конца), стек/
очередь/ring buffer, монотонный стек. Задачи: Reverse Linked List, Merge Two Sorted
Lists, Linked List Cycle, Valid Parentheses, Daily Temperatures + 6–8 задач с тегами
`linked list`, `stack`.
- День (3 ч) — многопоточность: `std::thread`, mutex/`lock_guard`, `condition_variable`
и predicate-цикл, атомики и `memory_order`, гонки, дедлоки, ложные пробуждения;
паттерны producer/consumer и пул потоков. Практика: довести `tasks/06_threads` до
продакшн-вида + написать пул потоков. TSan на этой машине недоступен (VMA) — проверяем
инвариантами + ASAN, в логе это помечено.
- Вечер (2 ч) — gdb: breakpoints, `watch`, `bt`, `frame`, отладка потоков, разбор
падения. Практика: `tasks/09_gdb` + своё падение (переполнение буфера) с письменным
разбором.
- **Точка:** 10+ задач; пул потоков проходит счётчики 4×4×20k; падение разобрано в gdb
письменно.
## D4 — 27.09: деревья/куча + Linux-системное (epoll) + L2/L3
- Утро (3 ч) — алгоритмы: бинарные деревья и BST, обходы (рекурсия и итерация), куча и
`priority_queue`, heapify за O(n), top-K, LCA. Задачи: Invert Binary Tree, Validate
Binary Search Tree, Binary Tree Level Order Traversal, Kth Largest Element, Lowest
Common Ancestor + 6–8 задач с тегами `trees`, `heaps`.
- День (3 ч) — Linux: файловый ввод-вывод (`open/read/write/lseek`), `mmap`,
мультиплексирование `select → poll → epoll` (LT/ET), неблокирующие сокеты,
`SO_REUSEADDR`, обработка `EAGAIN/EINTR`. Практика: `tasks/07_epoll` — эхо-сервер
довести до вида «не падает под нагрузкой» + клиент, нагрузочный тест своими руками.
- Вечер (2 ч) — сети L2/L3: OSI и TCP/IP, инкапсуляция, Ethernet (14 байт заголовка),
MAC, ARP, VLAN 802.1Q, IPv4-заголовок и контрольная сумма, маски и подсети, ICMP.
Практика: `tasks/04_ipv4` + два письменных разбора дампов (`tcpdump`: ARP-обмен и
TCP-handshake).
- **Точка:** сервер держит 3+ одновременных соединения и не течёт по дескрипторам;
2 разбора дампов письменно; 10+ задач.
## D5 — 28.09: графы + TCP глубоко + bash/proc
- Утро (3 ч) — алгоритмы: представления графа, BFS/DFS, топологическая сортировка,
компоненты связности, Дейкстра (неотрицательные веса), union-find. Задачи: Number of
Islands, Course Schedule, Clone Graph, Network Delay Time, Redundant Connection + 6–8
задач с тегами `graphs`, `dfs and similar`, `dsu`.
- День (3 ч) — сети глубже: TCP-автомат состояний, окно и подтверждения, ретрансмиссии и
таймеры, закрытие соединения, UDP, порты, NAT, DNS/DHCP минимум; работа с
`tcpdump`/Wireshark. Практика: 3 письменных разбора дампов (ретрансмиссия, ICMP
unreachable, DNS) + свой захват трафика своей же программой.
- Вечер (2 ч) — Linux-быт: `/proc`, `ulimit`, systemd-юниты обзорно; bash (пайплайны,
`set -euo pipefail`, awk/sed для логов). Практика: `tasks/08_bash` + свой скрипт
диагностики сети/логов.
- **Точка:** 8+ задач; 3 разбора дампов; скрипт работает на логе в 100k строк за секунды.
## D6 — 29.09: ДП + ядро/embedded обзорно + docker + резюме
- Утро (3 ч) — алгоритмы: ДП — состояния и переходы, рюкзак, LIS за O(n log n), строковые
задачи. Задачи: Climbing Stairs, House Robber, Coin Change, Longest Increasing
Subsequence, Edit Distance, Word Break + 5–6 задач с тегом `dp`, рейтинг 800–1400.
- День (3 ч) — ядро и embedded обзорно: модуль ядра (сборка, insmod/rmmod, printk,
параметры, `/proc`), символьный драйвер (`file_operations`), device tree и cross-compile
— по касательной, ровно чтобы отвечать словами. Практика: hello-модуль + простейший
символьный драйвер (в QEMU, если на этой машине сборка не встанет).
- Вечер (2 ч) — docker (образ под сборку/тесты) и **резюме + сопроводительное под Eltex**
(учесть: рассматривают офисный формат).
- **Точка:** модуль грузится/выгружается; черновик резюме отревьюен.
## D7 — 30.09: повтор, два мок-интервью, выход
- 2 ч — утренний повтор: только слабые места из трекера (не всё подряд).
- 3 ч — мок-интервью №1: алгоритмы, 2 задачи вслух с таймером, я веду и разбираю.
- 2 ч — мок-интервью №2: C/C++ + Linux + сети (вопросы по кругу, включая разбор дампа).
- 1 ч — вопросы работодателю, легенда по опыту, финальная вычитка резюме.
- **Точка:** ≤ 1 грубая ошибка на сессию; резюме и сопроводительное готовы.
---
## После собеседования
Незакрытое (полный трек `PLAN.md`): M2 хвост (битовые/строковые алгоритмы, математика),
M6 глубина (STP, маршрутизация, HTTP), M7 полностью (Docker в бою, bisect на реальном
репозитории), M8 ядро (полноценный драйвер, uboot/bringup), M9 электроника.