Files
eduplan-cpp-eltex/diag/results_quiz.json
T
2026-09-23 16:39:50 +07:00

312 lines
12 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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 хоста."
}
]
}