проверка права записи

This commit is contained in:
2026-09-23 17:16:04 +07:00
parent 165dd5619d
commit 469bc1f4e7
2 changed files with 522 additions and 0 deletions
+505
View File
@@ -0,0 +1,505 @@
{
"seed": 42,
"correct": 60,
"total": 60,
"per_domain": {
"net": {
"total": 14,
"ok": 14
},
"linux": {
"total": 14,
"ok": 14
},
"c_cpp": {
"total": 12,
"ok": 12
},
"algo": {
"total": 20,
"ok": 20
}
},
"details": [
{
"n": 1,
"domain": "net",
"q": "Какое поле IPv4-заголовка уменьшается на 1 на каждом маршрутизаторе?",
"answer": "ttl",
"ok": true,
"correct": "TTL"
},
{
"n": 2,
"domain": "linux",
"q": "Сложность select против epoll на большом числе дескрипторов?",
"answer": "select o(n), epoll o(1)",
"ok": true,
"correct": "select — O(n) по всем, epoll — O(1) на готовое событие"
},
{
"n": 3,
"domain": "c_cpp",
"q": "Что делает const после сигнатуры метода?",
"answer": "this const",
"ok": true,
"correct": "делает this const, запрещает менять поля"
},
{
"n": 4,
"domain": "algo",
"q": "Как найти цикл в связном списке за O(1) дополнительной памяти?",
"answer": "флойд",
"ok": true,
"correct": "алгоритм Флойда: черепаха и заяц"
},
{
"n": 5,
"domain": "algo",
"q": "Насколько быстро работают операции union-find с эвристиками?",
"answer": "почти o(1)",
"ok": true,
"correct": "почти O(1), O(α(n))"
},
{
"n": 6,
"domain": "linux",
"q": "Что делает fork()?",
"answer": "создаёт новый процесс",
"ok": true,
"correct": "создаёт новый процесс (свой PID, COW-копия памяти)"
},
{
"n": 7,
"domain": "c_cpp",
"q": "Определён ли стандартом порядок вычисления аргументов f(a(), b())?",
"answer": "нет",
"ok": true,
"correct": "нет, порядок не задан"
},
{
"n": 8,
"domain": "c_cpp",
"q": "Правило трёх/пяти — в чём суть?",
"answer": "деструктор + копирование + перемещение",
"ok": true,
"correct": "владеющий ресурсом класс задаёт деструктор, копирование и перемещение"
},
{
"n": 9,
"domain": "linux",
"q": "Сколько байт в заголовке TCP без опций?",
"answer": "20",
"ok": true,
"correct": "20"
},
{
"n": 10,
"domain": "algo",
"q": "Структура для поиска слов по префиксу за O(len)?",
"answer": "trie",
"ok": true,
"correct": "trie (префиксное дерево)"
},
{
"n": 11,
"domain": "algo",
"q": "Средняя сложность quicksort и mergesort?",
"answer": "o(n log n)",
"ok": true,
"correct": "O(n log n)"
},
{
"n": 12,
"domain": "net",
"q": "Сколько адресов узлов в подсети /26?",
"answer": "62",
"ok": true,
"correct": "62"
},
{
"n": 13,
"domain": "linux",
"q": "Что делает ulimit -n?",
"answer": "лимит дескрипторов",
"ok": true,
"correct": "показывает/меняет лимит открытых файловых дескрипторов"
},
{
"n": 14,
"domain": "net",
"q": "По какому протоколу и порту работает DNS?",
"answer": "udp 53",
"ok": true,
"correct": "UDP/53 (при больших ответах TCP/53)"
},
{
"n": 15,
"domain": "linux",
"q": "Что такое TID (Thread ID) в /proc?",
"answer": "номер задачи",
"ok": true,
"correct": "номер задачи в /proc/<pid>/task/"
},
{
"n": 16,
"domain": "c_cpp",
"q": "Что такое UB?",
"answer": "undefined behavior",
"ok": true,
"correct": "undefined behavior: стандарт не накладывает требований"
},
{
"n": 17,
"domain": "algo",
"q": "При каком условии применим алгоритм Дейкстры?",
"answer": "неотрицательные веса",
"ok": true,
"correct": "веса рёбер неотрицательны"
},
{
"n": 18,
"domain": "linux",
"q": "Что происходит со страницами памяти при fork()?",
"answer": "cow",
"ok": true,
"correct": "copy-on-write: копируются при первой записи"
},
{
"n": 19,
"domain": "c_cpp",
"q": "Что делает std::move сам по себе?",
"answer": "static_cast к rvalue",
"ok": true,
"correct": "static_cast к rvalue-ссылке; перемещение делает конструктор/присваивание"
},
{
"n": 20,
"domain": "algo",
"q": "Чем заменить Дейкстру при отрицательных рёбрах?",
"answer": "беллман-форд",
"ok": true,
"correct": "Беллман–Форд"
},
{
"n": 21,
"domain": "linux",
"q": "Что означает errno EAGAIN на неблокирующем сокете?",
"answer": "повторить позже",
"ok": true,
"correct": "данных сейчас нет, повторить позже"
},
{
"n": 22,
"domain": "algo",
"q": "Для какого графа возможна топологическая сортировка?",
"answer": "dag",
"ok": true,
"correct": "для ациклического (DAG)"
},
{
"n": 23,
"domain": "c_cpp",
"q": "Чем unique_ptr отличается от shared_ptr?",
"answer": "единственный владелец",
"ok": true,
"correct": "unique_ptr — единственный владелец без счётчика; shared_ptr считает ссылки"
},
{
"n": 24,
"domain": "linux",
"q": "Какой механизм держит десятки тысяч соединений в одном потоке?",
"answer": "epoll",
"ok": true,
"correct": "epoll"
},
{
"n": 25,
"domain": "net",
"q": "Размер MTU Ethernet по умолчанию?",
"answer": "1500",
"ok": true,
"correct": "1500 байт"
},
{
"n": 26,
"domain": "linux",
"q": "Что даёт mmap() на файл?",
"answer": "отображает файл в память",
"ok": true,
"correct": "отображает файл в память; страницы подгружаются по обращению"
},
{
"n": 27,
"domain": "algo",
"q": "Средняя сложность поиска в хеш-таблице при разумной загрузке?",
"answer": "o(1)",
"ok": true,
"correct": "амортизированное O(1)"
},
{
"n": 28,
"domain": "net",
"q": "Сколько байт в минимальном IPv4-заголовке?",
"answer": "20",
"ok": true,
"correct": "20"
},
{
"n": 29,
"domain": "linux",
"q": "Зачем родителю waitpid()?",
"answer": "забрать код возврата",
"ok": true,
"correct": "чтобы забрать код возврата и не оставлять зомби"
},
{
"n": 30,
"domain": "c_cpp",
"q": "Класс владеет ресурсом и имеет деструктор, копирование не объявлено. Что будет?",
"answer": "двойное освобождение",
"ok": true,
"correct": "сгенерируется поверхностное копирование — двойное освобождение"
},
{
"n": 31,
"domain": "algo",
"q": "Какова нижняя оценка сложности сортировки сравнениями?",
"answer": "o(n log n)",
"ok": true,
"correct": "O(n log n)"
},
{
"n": 32,
"domain": "linux",
"q": "Код возврата 139 — что это?",
"answer": "sigsegv",
"ok": true,
"correct": "SIGSEGV (128+11) — падение по памяти"
},
{
"n": 33,
"domain": "net",
"q": "Правильная последовательность установки TCP-соединения?",
"answer": "syn, syn-ack, ack",
"ok": true,
"correct": "SYN -> SYN-ACK -> ACK"
},
{
"n": 34,
"domain": "linux",
"q": "Что такое процесс-зомби?",
"answer": "завершившийся процесс без wait",
"ok": true,
"correct": "завершившийся процесс, чья запись ждёт wait/waitpid"
},
{
"n": 35,
"domain": "c_cpp",
"q": "Чему равен sizeof(struct S { char a; int b; char c; }) на x86-64 без pack?",
"answer": "12",
"ok": true,
"correct": "12 (паддинг до выравнивания)"
},
{
"n": 36,
"domain": "algo",
"q": "BFS или DFS даёт кратчайший путь в невзвешенном графе?",
"answer": "bfs",
"ok": true,
"correct": "BFS"
},
{
"n": 37,
"domain": "net",
"q": "Сколько байт добавляет VLAN-тег 802.1Q?",
"answer": "4",
"ok": true,
"correct": "4"
},
{
"n": 38,
"domain": "net",
"q": "На каком уровне OSI работает обычный коммутатор?",
"answer": "l2",
"ok": true,
"correct": "L2 (канальный)"
},
{
"n": 39,
"domain": "linux",
"q": "Сигнал с номером 15?",
"answer": "sigterm",
"ok": true,
"correct": "SIGTERM — запрос на завершение"
},
{
"n": 40,
"domain": "c_cpp",
"q": "Зачем нужен виртуальный деструктор у базового класса?",
"answer": "деструктор наследника не вызовется",
"ok": true,
"correct": "иначе delete через Base* — UB, деструктор наследника не вызовется"
},
{
"n": 41,
"domain": "algo",
"q": "Сложность Дейкстры на priority_queue (двоичная куча)?",
"answer": "o((v+e) log v)",
"ok": true,
"correct": "O((V+E) log V)"
},
{
"n": 42,
"domain": "net",
"q": "Что означает маска /30 в адресах?",
"answer": "4 адреса, 2 узла",
"ok": true,
"correct": "4 адреса: сеть, 2 узла, broadcast"
},
{
"n": 43,
"domain": "c_cpp",
"q": "Что проверяет UBSAN?",
"answer": "undefined behavior",
"ok": true,
"correct": "неопределённое поведение: overflow, сдвиги, выравнивание"
},
{
"n": 44,
"domain": "algo",
"q": "Сколько сравнений в худшем случае у бинарного поиска в массиве из 1 000 000 элементов?",
"answer": "20",
"ok": true,
"correct": "20"
},
{
"n": 45,
"domain": "linux",
"q": "Код возврата 137 — что это?",
"answer": "sigkill",
"ok": true,
"correct": "SIGKILL (128+9) — убит"
},
{
"n": 46,
"domain": "net",
"q": "Сколько адресов узлов в подсети /24?",
"answer": "254",
"ok": true,
"correct": "254"
},
{
"n": 47,
"domain": "algo",
"q": "Сложность построения кучи (heapify) из произвольного массива?",
"answer": "o(n)",
"ok": true,
"correct": "O(n)"
},
{
"n": 48,
"domain": "net",
"q": "Сколько байт в Ethernet-заголовке без VLAN?",
"answer": "14",
"ok": true,
"correct": "14"
},
{
"n": 49,
"domain": "c_cpp",
"q": "Чем new отличается от malloc?",
"answer": "вызывает конструктор",
"ok": true,
"correct": "new вызывает конструктор и возвращает типизированный указатель"
},
{
"n": 50,
"domain": "net",
"q": "На каком уровне OSI работает маршрутизатор?",
"answer": "l3",
"ok": true,
"correct": "L3 (сетевой)"
},
{
"n": 51,
"domain": "algo",
"q": "Сложность вставки одного элемента в кучу?",
"answer": "o(log n)",
"ok": true,
"correct": "O(log n)"
},
{
"n": 52,
"domain": "c_cpp",
"q": "Что проверяет ASAN?",
"answer": "выходы за границы",
"ok": true,
"correct": "выходы за границы, use-after-free, утечки"
},
{
"n": 53,
"domain": "algo",
"q": "Худшая сложность quicksort?",
"answer": "o(n^2)",
"ok": true,
"correct": "O(n²)"
},
{
"n": 54,
"domain": "algo",
"q": "За какую сложность ищется НВП (LIS) в оптимальном решении?",
"answer": "o(n log n)",
"ok": true,
"correct": "O(n log n)"
},
{
"n": 55,
"domain": "algo",
"q": "Сложность задачи о рюкзаке 0/1 через ДП по вместимости?",
"answer": "o(n*w)",
"ok": true,
"correct": "O(n * W)"
},
{
"n": 56,
"domain": "algo",
"q": "Какова сложность по памяти рекурсивного DFS в графе в худшем случае?",
"answer": "o(v)",
"ok": true,
"correct": "O(V) — глубина стека рекурсии"
},
{
"n": 57,
"domain": "net",
"q": "Что делает ICMP Time Exceeded?",
"answer": "ttl истёк",
"ok": true,
"correct": "сообщает, что TTL истёк (используется в traceroute)"
},
{
"n": 58,
"domain": "algo",
"q": "Худшая сложность поиска в хеш-таблице (все ключи в одну корзину)?",
"answer": "o(n)",
"ok": true,
"correct": "O(n)"
},
{
"n": 59,
"domain": "algo",
"q": "Какая сортировка устойчивая: merge, quick, heap или selection?",
"answer": "merge",
"ok": true,
"correct": "merge sort"
},
{
"n": 60,
"domain": "net",
"q": "Что делает ARP?",
"answer": "mac по ip",
"ok": true,
"correct": "находит MAC по IP в локальном сегменте"
}
]
}