Подборка объединяет вопросы, отмеченные на этапах интервью в 2ГИС. Здесь можно понять структуру технической проверки и заранее повторить связанные темы. В подборке чаще встречаются темы: api, backend, microservices.
SO_REUSEPORT позволяет нескольким сокетам привязаться к одному адресу и порту при соблюдении условий Linux. Ядро распределяет входящие соединения между отдельными слушателями, уменьшая конкуренцию за общий accept.
L4 распределяет соединения по сетевым параметрам, а L7 понимает прикладной протокол и может маршрутизировать HTTP по пути или заголовкам. Для WebSocket подходят оба уровня при правильной поддержке соединений.
OOM Killer выбирает процесс для завершения при нехватке доступной памяти; учитываются потребление и oom_score_adj. Защита начинается с ограниченного расхода памяти, а не с запрета убивать процесс.
sendfile передаёт данные между файловыми дескрипторами внутри ядра, избегая промежуточного read/write через пользовательский буфер. Это уменьшает копирование и число переходов между приложением и ядром.
TCP Slow Start постепенно увеличивает окно перегрузки, чтобы не перегрузить сеть. Переиспользование соединений уменьшает затраты на новые TCP/TLS-handshake и повторный разгон передачи.
Виртуальная память отображает адресное пространство процесса на физические страницы и другие backing-объекты. Minor fault обрабатывается без загрузки страницы с диска, major fault требует соответствующего I/O.
fork создаёт дочерний процесс с отдельным адресным пространством, логически копирующим родителя. Linux использует copy-on-write: физические страницы сначала разделяются, а копирование происходит при записи.
TCP_NODELAY отключает алгоритм Нагла и уменьшает ожидание небольших записей. TCP_CORK, напротив, просит Linux удерживать неполные сегменты, чтобы собрать более крупную отправку.
TIME_WAIT удерживает состояние закрытого TCP-соединения для корректного завершения и защиты от старых сегментов. Частое создание исходящих соединений к одному адресу может исчерпать доступные пары портов.
Опишите реальный уровень детализации входящих задач и способ уточнения цели, критериев готовности и ограничений. Отсутствие полного ТЗ не означает, что требования можно угадывать.
Задайте поле как enum в поддерживаемой схеме или используйте constrained decoding, ограничивающий допустимые токены. Затем всё равно валидируйте результат и принадлежность ID списку на backend.