{ "correct": 8, "total": 32, "per_domain": { "c_cpp": { "total": 8, "correct": 0 }, "algo": { "total": 8, "correct": 5 }, "linux": { "total": 8, "correct": 0 }, "net": { "total": 8, "correct": 3 } }, "details": [ { "n": 1, "domain": "c_cpp", "question": "Чему равен sizeof(struct S { char a; int b; char c; }) на 64-битной платформе без pack-атрибутов?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "a = 1 байт + 3 паддинга, b = 4, c = 1 + 3 хвостового паддинга = 12 (выравнивание структуры по 4)." }, { "n": 2, "domain": "c_cpp", "question": "Что означает undefined behavior (UB)?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "UB — стандарт не накладывает требований: компилятор может что угодно, вплоть до выкидывания проверок." }, { "n": 3, "domain": "c_cpp", "question": "std::move(x) — что он делает сам по себе?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "move — это static_cast к rvalue; фактическое перемещение выполняет конструктор/оператор присваивания." }, { "n": 4, "domain": "c_cpp", "question": "Чем new отличается от malloc?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "new = выделение + конструктор + типизированный указатель + исключение; malloc возвращает void* и nullptr при неудаче." }, { "n": 5, "domain": "c_cpp", "question": "Класс владеет ресурсом и имеет деструктор, освобождающий его. Копирующий конструктор/присваивание не объявлены. Что будет?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "Правило трёх/пяти: владеющий ресурсом класс должен определить копирование/перемещение или запретить их." }, { "n": 6, "domain": "c_cpp", "question": "Для чего нужен виртуальный деструктор у базового класса?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "Без virtual-деструктора delete через Base* — UB, деструктор производного не вызовется." }, { "n": 7, "domain": "c_cpp", "question": "Что делает ключевое слово const после сигнатуры метода (int size() const)?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "const-метод получает this как const-указатель; на изменении поля — ошибка компиляции." }, { "n": 8, "domain": "c_cpp", "question": "Определён ли стандартом порядок вычисления аргументов функции (f(a(), b()))?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "Порядок аргументов не специфицирован; с C++17 вычисления не чередуются (indeterminately sequenced), но порядок всё равно не задан." }, { "n": 9, "domain": "algo", "question": "Средняя сложность поиска в хеш-таблице (при разумной нагрузке)?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "Амортизированно O(1) в среднем; худший случай при всех коллизиях — O(n)." }, { "n": 10, "domain": "algo", "question": "Какая структура лучше подходит для задачи «поиск слов по префиксу»?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "Trie даёт проход по префиксу за O(len) и общий префикс хранит один раз." }, { "n": 11, "domain": "algo", "question": "Сколько сравнений нужно бинарному поиску в худшем случае в отсортированном массиве из 1 000 000 элементов?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "log2(1e6) ≈ 19.9 → 20 итераций." }, { "n": 12, "domain": "algo", "question": "При каком условии применим алгоритм Дейкстры?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "Отрицательные рёбра ломают инвариант «кратчайший путь найден»; тогда Беллман–Форд." }, { "n": 13, "domain": "algo", "question": "Какова сложность построения кучи (heapify) из произвольного массива?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "Просеивание снизу вверх даёт сумму геометрической прогрессии — O(n), хотя каждый push по отдельности O(log n)." }, { "n": 14, "domain": "algo", "question": "Какая из сортировок устойчивая (stable)?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "Merge sort сохраняет порядок равных элементов; quicksort/heapsort/selection — нет." }, { "n": 15, "domain": "algo", "question": "Для какого графа возможна топологическая сортировка?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "Цикл делает линейный порядок невозможным; топосорт — признак DAG." }, { "n": 16, "domain": "algo", "question": "Как найти цикл в связном списке за O(1) дополнительной памяти?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "«Черепаха и заяц»: если цикл есть, указатели встретятся." }, { "n": 17, "domain": "linux", "question": "Что делает fork()?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "fork = новый процесс (свой PID, COW-копия памяти); execve меняет образ, clone — поток." }, { "n": 18, "domain": "linux", "question": "Чем поток отличается от процесса в Linux?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "clone с CLONE_VM/CLONE_FILES — потоки; у каждого свой стек и регистры." }, { "n": 19, "domain": "linux", "question": "Что такое процесс-зомби?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "Запись остаётся в таблице процессов до wait/waitpid; «потерявший родителя» — это сирота (переходит к init)." }, { "n": 20, "domain": "linux", "question": "Какой механизм в Linux штатно обслуживает десятки тысяч сетевых соединений в одном потоке?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "epoll — O(1) на готовое событие; select линейно по всем дескрипторам." }, { "n": 21, "domain": "linux", "question": "Что происходит со страницами памяти при fork()?", "your_answer": 1, "correct_answer": 3, "ok": false, "explain": "COW: страницы помечаются read-only и копируются по факту записи." }, { "n": 22, "domain": "linux", "question": "Процесс завершился с кодом 137. Что это значит?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "137 = 128 + 9: завершение по SIGKILL; код 139 = 128 + 11 (SIGSEGV)." }, { "n": 23, "domain": "linux", "question": "Что даёт вызов mmap() на файл?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "Страницы подгружаются по обращению; запись уходит в файл (или в MAP_SHARED-память)." }, { "n": 24, "domain": "linux", "question": "Зачем нужен waitpid() родителю?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "Без wait завершившиеся дети остаются зомби и держат запись в таблице процессов." }, { "n": 25, "domain": "net", "question": "Сколько байт в Ethernet-заголовке кадра без VLAN-тега?", "your_answer": 1, "correct_answer": 2, "ok": false, "explain": "dst MAC (6) + src MAC (6) + EtherType (2) = 14; VLAN 802.1Q добавляет 4 байта." }, { "n": 26, "domain": "net", "question": "На каком уровне OSI работает обычный коммутатор (switch)?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "Коммутация по MAC-адресам и таблице обучения — канальный уровень (L2); маршрутизатор — L3." }, { "n": 27, "domain": "net", "question": "Что делает протокол ARP?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "ARP-запрос broadcast, ответ unicast; DHCP раздаёт адреса, DNS — имена." }, { "n": 28, "domain": "net", "question": "Какое поле IPv4-заголовка уменьшается на единицу на каждом маршрутизаторе?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "TTL защищает от петель; при 0 пакет отбрасывается и уходит ICMP Time Exceeded. Контрольная сумма при этом пересчитывается, но не «уменьшается на 1»." }, { "n": 29, "domain": "net", "question": "Правильная последовательность установки TCP-соединения?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "Клиент SYN, сервер SYN-ACK, клиент ACK; номера подтверждения = seq+1." }, { "n": 30, "domain": "net", "question": "Ключевое отличие TCP от UDP?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "UDP — дейтаграммы «как есть», без гарантий и порядка." }, { "n": 31, "domain": "net", "question": "Что делает VLAN-тег 802.1Q?", "your_answer": 1, "correct_answer": 1, "ok": true, "explain": "Тег EtherType 0x8100 + PCP/DEI + 12 бит VID; логически разделяет L2-сегменты." }, { "n": 32, "domain": "net", "question": "Сколько адресов узлов доступно в подсети /26?", "your_answer": 1, "correct_answer": 4, "ok": false, "explain": "/26 = 64 адреса, минус адрес сети и broadcast → 62 хоста." } ] }