Сети и операционные системы: вопросы на собеседовании

TCP/IP, HTTP, DNS, TLS, процессы и потоки, виртуальная память, дедлоки, Git. Сильная сторона выпускника технического вуза.

#1Сетиjunior

Что происходит после ввода URL в браузере и нажатия Enter?

Вопрос-«зонтик»: интервьюер смотрит, насколько глубоко вы понимаете стек. Опорные точки:

  1. Разбор URL, проверка HSTS-списка, поиск в кешах браузера.
  2. DNS-резолв: кеш браузера → кеш ОС → hosts → рекурсивный резолвер провайдера → корневые серверы → TLD → авторитативный сервер. Результат — IP-адрес.
  3. TCP-соединение: трёхэтапное рукопожатие SYN → SYN-ACK → ACK. (Для HTTP/3 — QUIC поверх UDP, рукопожатие совмещено с TLS.)
  4. TLS-рукопожатие: согласование версии и шифров, проверка сертификата по цепочке до доверенного корня, выработка сеансовых ключей.
  5. HTTP-запрос с заголовками и cookies; на пути — прокси, CDN, балансировщик, кеши.
  6. Ответ сервера, возможно с кодом перенаправления или из кеша (304 Not Modified).
  7. Рендеринг: парсинг HTML → DOM, CSS → CSSOM, построение дерева рендеринга, layout, paint, composite. Синхронный <script> в <head> блокирует парсинг.
  8. Догрузка ресурсов, выполнение JS, гидратация, события DOMContentLoaded и load.

Как отвечать: дайте карту целиком за минуту, затем спросите, какой слой раскрыть подробнее. Это показывает и широту, и умение управлять диалогом.

  • Что происходит при TLS-рукопожатии?
  • Почему script в head блокирует рендеринг?
#2Сетиjunior

Чем TCP отличается от UDP? Где применяется каждый?

TCP — с установлением соединения, надёжный: гарантирует доставку и порядок, подтверждения и повторные передачи, управление потоком (скользящее окно) и перегрузкой. Цена — задержка на рукопожатие и на восстановление потерь (head-of-line blocking: потеря одного сегмента тормозит все последующие).

UDP — датаграммы без соединения: нет гарантий доставки, порядка и защиты от дублей, нет контроля перегрузки. Зато минимальная задержка и накладные расходы.

Где TCP: HTTP/1.1 и HTTP/2, почта, SSH, передача файлов, базы данных — всюду, где важна целостность.

Где UDP: DNS (один короткий запрос дешевле, чем рукопожатие), видеозвонки и стриминг (устаревший кадр не нужен — лучше пропустить), онлайн-игры, VPN, DHCP, а также QUIC, на котором работает HTTP/3: надёжность реализована поверх UDP в пространстве пользователя, что убирает head-of-line blocking между потоками и ускоряет установку соединения.

Формулировка для собеседования: выбор не «что лучше», а что дороже — потеря пакета или задержка.

  • Что такое трёхэтапное рукопожатие?
  • Почему HTTP/3 построен на UDP?
#3HTTPjunior

Назовите основные коды состояния HTTP и когда какой применять.

2xx — успех: 200 OK; 201 Created при создании ресурса (с заголовком Location); 204 No Content — успех без тела, типично для DELETE.

3xx — перенаправление: 301 постоянное (кешируется браузером надолго — осторожно), 302/307 временное, 304 Not Modified — ответ из кеша по ETag или If-Modified-Since.

4xx — ошибка клиента:

  • 400 Bad Request — некорректный синтаксис или невалидные данные;
  • 401 Unauthorized — не аутентифицирован (нет или невалиден токен);
  • 403 Forbidden — аутентифицирован, но нет прав;
  • 404 Not Found;
  • 409 Conflict — конфликт состояния (дубликат, параллельное изменение);
  • 422 Unprocessable Entity — синтаксис верен, семантика нет;
  • 429 Too Many Requests — сработал лимит, полезно отдать Retry-After.

5xx — ошибка сервера: 500 внутренняя, 502 плохой ответ от апстрима, 503 сервис недоступен (перегрузка, обслуживание), 504 таймаут апстрима.

Что проверяют этим вопросом: различие 401/403 и понимание, что ошибку валидации нельзя отдавать как 500. Ошибки клиента не должны попадать в алерты, ошибки сервера — должны.

  • Чем 401 отличается от 403?
  • Что такое идемпотентность HTTP-методов?
#4HTTPmiddle

Что такое идемпотентность и безопасность HTTP-методов?

Безопасный (safe) метод не изменяет состояние на сервере: GET, HEAD, OPTIONS.
Идемпотентный метод при повторе даёт тот же результат состояния: GET, PUT, DELETE, HEAD, OPTIONS.

МетодБезопасныйИдемпотентный
GETдада
POSTнетнет
PUTнетда
PATCHнетнет*
DELETEнетда

\* PATCH идемпотентен, если операция — установка значения, и не идемпотентен, если это инкремент.

Почему это важно на практике: сеть ненадёжна, и клиент не всегда знает, дошёл ли запрос. Идемпотентный запрос можно безопасно повторить, неидемпотентный — нет: повтор POST /payments спишет деньги дважды.

Решение для платежей и заказов — ключ идемпотентности: клиент генерирует уникальный Idempotency-Key, сервер запоминает результат первого выполнения и на повтор с тем же ключом возвращает сохранённый ответ, не выполняя операцию заново. Так работают Stripe и платёжные шлюзы.

Отдельно: DELETE идемпотентен по состоянию, хотя повторный вызов вернёт 404 — важен результат, а не код ответа.

  • Как реализовать ключ идемпотентности на сервере?
  • Почему GET не должен менять данные?
#5HTTPmiddle

Как работает HTTP-кеширование?

Две стратегии.

1. Свежесть (без обращения к серверу). Заголовок Cache-Control:

  • max-age=3600 — считать свежим час;
  • no-cache — можно хранить, но перед использованием валидировать (вопреки названию, это не запрет кеша);
  • no-store — не хранить вообще, для чувствительных данных;
  • private — только браузер, public — можно и CDN;
  • immutable — не перепроверять даже при перезагрузке.

2. Валидация (условный запрос). Если ресурс устарел, браузер шлёт If-None-Match с сохранённым ETag (или If-Modified-Since с Last-Modified). Если ничего не изменилось, сервер отвечает 304 Not Modified без тела — экономится трафик, но не задержка.

Практический приём — кеширование навсегда с хешем в имени файла: app.a3f9c1.js отдаётся с max-age=31536000, immutable, а при изменении содержимого меняется имя. HTML при этом кешировать нельзя — он содержит ссылки на новые файлы. Именно так работает сборка Vite и webpack.

Помните про слои: кеш браузера, Service Worker, CDN, обратный прокси — «сброс кеша» может требоваться в нескольких местах.

  • Чем ETag отличается от Last-Modified?
  • Как инвалидировать кеш CDN?

Ещё 7 вопросов в этом треке

  1. Чем процесс отличается от потока?
  2. Что такое виртуальная память и зачем она нужна?
  3. Что такое дедлок? Назовите условия его возникновения и способы борьбы.
  4. Как устроена модель OSI? Что происходит на каждом уровне?
  5. Чем аутентификация отличается от авторизации? Как работают JWT и сессии?
  6. Что такое XSS и CSRF? Чем они различаются и как защищаться?
  7. Как разрешить конфликт в Git? Чем merge отличается от rebase?