Linux для разработчиков: команды, процессы и сети на собеседовании
Глубокий разбор Linux для backend-разработчиков. Управление процессами, диагностика сетей и системные вызовы для интервью в 2026 году.
Разбор сложных вопросов по Linux: eBPF, управление памятью, контейнеризация и отладка системных вызовов. Подготовьтесь к интервью.
На собеседованиях часто спрашивают, как ядро Linux распределяет память и что происходит, когда она заканчивается. Важно понимать механизм Overcommit. По умолчанию Linux разрешает выделять больше виртуальной памяти, чем есть физической (RAM + Swap). Это работает, пока процессы не начинают активно использовать выделенные страницы.
Когда свободная память исчерпана, включается OOM (Out Of Memory) Killer. Он выбирает жертву на основе параметра oom_score. На этот балл влияет объем используемой памяти и время жизни процесса. Разработчику полезно знать про /proc/[pid]/oom_score_adj — этот файл позволяет вручную защитить критически важные процессы (например, базу данных) от завершения ядром.
Если программа падает с Segmentation Fault при глубокой рекурсии, это признак переполнения стека. В Linux размер стека потока обычно ограничен (посмотрите ulimit -s, стандарт — 8 МБ). В отличие от кучи, стек выделяется и освобождается автоматически при выходе из области видимости, что делает его быстрее, но менее гибким.
В Linux нет жесткого разделения между процессами и потоками на уровне реализации — и то, и другое создается через системный вызов clone(). Разница лишь в флагах: разделяют ли сущности адресное пространство, таблицу файловых дескрипторов и обработчики сигналов.
Кандидат должен различать состояния: R (Running/Runnable), S (Interruptible Sleep) и D (Uninterruptible Sleep). Состояние D критично для диагностики: процесс «завис» в ожидании ответа от железа или сетевой ФС (NFS). Его нельзя убить сигналом SIGKILL, так как он находится в контексте ядра.
В Linux «все есть файл». Это означает, что работа с сокетами, пайпами и устройствами идет через одинаковый интерфейс. Лимит на открытые файлы (file-max) часто становится узким местом в высоконагруженных Go или Java приложениях.
Частая задача на интервью: «Место на диске есть (df -h показывает свободные ГБ), но создать файл нельзя. Почему?». Ответ: закончились иноды (df -i). Инода — это структура данных, описывающая файл (права, владелец, ссылки на блоки данных), но не содержащая его имени. Имена хранятся в специальных файлах-директориях.
Инженер уровня Senior должен уметь «заглянуть под капот» работающего приложения без доступа к исходному коду. Основные инструменты:
bpftrace заменяют собой старые методы отладки.Понимание работы TCP/IP в Linux включает знание очередей backlog. Если приложение не успевает вызывать accept(), очередь заполняется, и новые клиенты получают Connection Refused. Настройка параметров net.core.somaxconn и tcp_max_syn_backlog — база для оптимизации нагруженных систем.
Docker — это не магия, а комбинация двух функций ядра:
Load Average (LA) показывает среднее количество процессов в состоянии R (выполняются) и D (ожидают ввода-вывода) за последние 1, 5 и 15 минут. Если значения растут, система перегружена. В 2026 году важно также смотреть на PSI (Pressure Stall Information), который точнее показывает задержки из-за нехватки ресурсов.
Жесткая ссылка (hard link) — это еще одно имя для той же иноды; она не может указывать на другой диск или директорию. Мягкая ссылка (symlink) — это отдельный файл, содержащий путь к цели. Если удалить оригинал, жесткая ссылка продолжит работать, а мягкая станет «битой».
Используйте команду ss -tlpn | grep :8080 или lsof -i :8080. Это покажет PID процесса и его имя, что необходимо для быстрой диагностики конфликтов при деплое.
Процесс-зомби уже завершил работу, но остался в таблице процессов, потому что родительский процесс еще не прочитал его код завершения через вызов wait(). Сами по себе зомби не потребляют память, но занимают место в таблице PID.
Swap — это область на диске для вытеснения редко используемых страниц памяти. В современных системах с SSD полное отключение Swap не рекомендуется: ядру сложнее управлять кэшем, что может привести к преждевременному срабатыванию OOM Killer даже при наличии свободной памяти.
Linux — ключевой навык для DevOps. Узнайте зарплаты
Смотреть зарплаты