194 lines
11 KiB
Plaintext
194 lines
11 KiB
Plaintext
1. [C/C++ и системная память] Чему равен sizeof(struct S { char a; int b; char c; }) на 64-битной платформе без pack-атрибутов?
|
|
1) 6
|
|
2) 9
|
|
3) 12
|
|
4) 16
|
|
|
|
2. [C/C++ и системная память] Что означает undefined behavior (UB)?
|
|
1) Программа гарантированно завершится с ошибкой
|
|
2) Компилятор вправе сгенерировать любой код, программа не обязана иметь смысл
|
|
3) Поведение определено стандартом, но зависит от платформы
|
|
4) Это предупреждение компилятора, которое можно игнорировать
|
|
|
|
3. [C/C++ и системная память] std::move(x) — что он делает сам по себе?
|
|
1) Перемещает объект и обнуляет исходный
|
|
2) Вызывает конструктор перемещения
|
|
3) Приводит x к rvalue-ссылке, перемещение делает уже вызванный конструктор/присваивание
|
|
4) Освобождает память объекта
|
|
|
|
4. [C/C++ и системная память] Чем new отличается от malloc?
|
|
1) Только синтаксисом
|
|
2) malloc работает только со структурами
|
|
3) new не может вернуть nullptr
|
|
4) new вызывает конструктор, возвращает типизированный указатель и бросает исключение при неудаче
|
|
|
|
5. [C/C++ и системная память] Класс владеет ресурсом и имеет деструктор, освобождающий его. Копирующий конструктор/присваивание не объявлены. Что будет?
|
|
1) Всё нормально, компилятор сам сделает глубокую копию
|
|
2) Неявные копии дадут два владельца одного ресурса → double free/утечка
|
|
3) Программа не скомпилируется
|
|
4) Компилятор сгенерирует перемещение вместо копирования
|
|
|
|
6. [C/C++ и системная память] Для чего нужен виртуальный деструктор у базового класса?
|
|
1) Чтобы ускорить разрушение
|
|
2) Он не нужен, деструкторы всегда виртуальны
|
|
3) Чтобы поля базы не копировались
|
|
4) Чтобы при delete по указателю на базу вызвался деструктор производного класса
|
|
|
|
7. [C/C++ и системная память] Что делает ключевое слово const после сигнатуры метода (int size() const)?
|
|
1) Делает метод виртуальным
|
|
2) Запрещает копирование возвращаемого значения
|
|
3) Обязывает не менять поля объекта и позволяет вызывать метод на const-объекте
|
|
4) Ничего, это оформление
|
|
|
|
8. [C/C++ и системная память] Определён ли стандартом порядок вычисления аргументов функции (f(a(), b()))?
|
|
1) Слева направо
|
|
2) Справа налево
|
|
3) Не определён (порядок не специфицирован, но вычисления не пересекаются)
|
|
4) Зависит только от оптимизаций
|
|
|
|
9. [Алгоритмы и структуры данных] Средняя сложность поиска в хеш-таблице (при разумной нагрузке)?
|
|
1) O(n log n)
|
|
2) O(log n)
|
|
3) O(n)
|
|
4) O(1)
|
|
|
|
10. [Алгоритмы и структуры данных] Какая структура лучше подходит для задачи «поиск слов по префиксу»?
|
|
1) Префиксное дерево (trie)
|
|
2) Хеш-таблица
|
|
3) Двоичная куча
|
|
4) Связный список
|
|
|
|
11. [Алгоритмы и структуры данных] Сколько сравнений нужно бинарному поиску в худшем случае в отсортированном массиве из 1 000 000 элементов?
|
|
1) 20
|
|
2) 10
|
|
3) 100
|
|
4) 1 000
|
|
|
|
12. [Алгоритмы и структуры данных] При каком условии применим алгоритм Дейкстры?
|
|
1) Граф обязательно связный
|
|
2) Веса рёбер неотрицательны
|
|
3) Граф неориентированный
|
|
4) Граф разреженный
|
|
|
|
13. [Алгоритмы и структуры данных] Какова сложность построения кучи (heapify) из произвольного массива?
|
|
1) O(n)
|
|
2) O(log n)
|
|
3) O(1)
|
|
4) O(n log n)
|
|
|
|
14. [Алгоритмы и структуры данных] Какая из сортировок устойчивая (stable)?
|
|
1) Быстрая (quicksort)
|
|
2) Пирамидальная (heapsort)
|
|
3) Слиянием (merge sort)
|
|
4) Выбором (selection sort)
|
|
|
|
15. [Алгоритмы и структуры данных] Для какого графа возможна топологическая сортировка?
|
|
1) Для ориентированного ациклического (DAG)
|
|
2) Для любого связного
|
|
3) Для двудольного
|
|
4) Для полного
|
|
|
|
16. [Алгоритмы и структуры данных] Как найти цикл в связном списке за O(1) дополнительной памяти?
|
|
1) Алгоритм Флойда: медленный и быстрый указатели
|
|
2) Хранить посещённые узлы в хеш-таблице
|
|
3) Отсортировать список
|
|
4) Рекурсивно пройти до nullptr
|
|
|
|
17. [Linux / ОС] Что делает fork()?
|
|
1) Заменяет образ процесса
|
|
2) Создаёт поток в том же адресном пространстве
|
|
3) Создаёт копию процесса; в родителе возвращает PID ребёнка, в ребёнке — 0
|
|
4) Загружает библиотеку в процесс
|
|
|
|
18. [Linux / ОС] Чем поток отличается от процесса в Linux?
|
|
1) Ничем, это синонимы
|
|
2) Потоки делят адресное пространство и файловые дескрипторы, но имеют свои стеки
|
|
3) Поток всегда быстрее
|
|
4) Процессы не могут работать параллельно
|
|
|
|
19. [Linux / ОС] Что такое процесс-зомби?
|
|
1) Процесс, съедающий CPU
|
|
2) Завершившийся процесс, чей статус ещё не собран родителем через wait()
|
|
3) Процесс без терминала
|
|
4) Процесс, потерявший родителя
|
|
|
|
20. [Linux / ОС] Какой механизм в Linux штатно обслуживает десятки тысяч сетевых соединений в одном потоке?
|
|
1) select()
|
|
2) Неблокирующие сокеты в цикле опроса
|
|
3) epoll
|
|
4) fork на каждое соединение
|
|
|
|
21. [Linux / ОС] Что происходит со страницами памяти при fork()?
|
|
1) Сразу полностью копируются
|
|
2) Память обнуляется
|
|
3) Копируются при первой записи (copy-on-write)
|
|
4) Ребёнок получает те же физические страницы без защиты
|
|
|
|
22. [Linux / ОС] Процесс завершился с кодом 137. Что это значит?
|
|
1) Ошибка сегментации
|
|
2) Процесс убит сигналом 9 (SIGKILL) — типично OOM-killer или docker kill
|
|
3) Не найден файл
|
|
4) Процесс вышел штатно
|
|
|
|
23. [Linux / ОС] Что даёт вызов mmap() на файл?
|
|
1) Полное чтение файла в кучу
|
|
2) Отображение файла в адресное пространство: работа как с массивом в памяти
|
|
3) Блокировку файла
|
|
4) Копирование файла
|
|
|
|
24. [Linux / ОС] Зачем нужен waitpid() родителю?
|
|
1) Чтобы приостановить ребёнка
|
|
2) Чтобы сменить приоритет ребёнка
|
|
3) Чтобы получить доступ к памяти ребёнка
|
|
4) Чтобы собрать статус завершения и убрать зомби
|
|
|
|
25. [Сети L2/L3, TCP/IP] Сколько байт в Ethernet-заголовке кадра без VLAN-тега?
|
|
1) 8
|
|
2) 14
|
|
3) 18
|
|
4) 20
|
|
|
|
26. [Сети L2/L3, TCP/IP] На каком уровне OSI работает обычный коммутатор (switch)?
|
|
1) L2
|
|
2) L4
|
|
3) L3
|
|
4) L1
|
|
|
|
27. [Сети L2/L3, TCP/IP] Что делает протокол ARP?
|
|
1) Раздаёт IP-адреса
|
|
2) Проверяет целостность пакетов
|
|
3) Разрешает доменные имена
|
|
4) Сопоставляет IP-адрес и MAC-адрес в локальном сегменте
|
|
|
|
28. [Сети L2/L3, TCP/IP] Какое поле IPv4-заголовка уменьшается на единицу на каждом маршрутизаторе?
|
|
1) Total Length
|
|
2) IHL
|
|
3) Checksum
|
|
4) TTL
|
|
|
|
29. [Сети L2/L3, TCP/IP] Правильная последовательность установки TCP-соединения?
|
|
1) SYN → SYN-ACK → ACK
|
|
2) SYN → ACK → SYN-ACK
|
|
3) SYN-ACK → SYN → ACK
|
|
4) ACK → SYN → SYN-ACK
|
|
|
|
30. [Сети L2/L3, TCP/IP] Ключевое отличие TCP от UDP?
|
|
1) TCP быстрее
|
|
2) TCP работает только на L2
|
|
3) UDP не поддерживает порты
|
|
4) TCP даёт надёжный поток байт с подтверждениями, порядком и повторной передачей
|
|
|
|
31. [Сети L2/L3, TCP/IP] Что делает VLAN-тег 802.1Q?
|
|
1) Добавляет в кадр 4 байта с 12-битным идентификатором VLAN
|
|
2) Шифрует кадр
|
|
3) Увеличивает MTU
|
|
4) Превращает кадр в IP-пакет
|
|
|
|
32. [Сети L2/L3, TCP/IP] Сколько адресов узлов доступно в подсети /26?
|
|
1) 32
|
|
2) 126
|
|
3) 64
|
|
4) 62
|
|
|
|
Формат ответа: "1-2 2-4 3-1 ..." (номер вопроса - номер варианта)
|