Gernar
Frontend DeveloperHTTP, API и сеть

Интервью-вопрос

Что такое DNS

DNS связывает доменное имя с адресами и служебными записями, которые нужны до HTTP-запроса. Для фронтендера это важно при деплое, подключении CDN, настройке домена, TLS и диагностике сетевых ошибок.

Добавлен
Редакция

Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.

🐰0
🥚0

Мини-квиз

Проверка перед разбором

Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.

Вопрос 1 из 50 правильно

Как лучше коротко ответить, что такое DNS?

Вы начинаете ответ на интервью и хотите дать точное первое предложение.

Варианты ответа

Разбор

Разобраться, а не зазубрить

Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.

Базовая идея

DNS отвечает на вопрос: какие данные связаны с этим доменным именем. Чаще всего браузеру нужен IP-адрес, чтобы подключиться к серверу. Поэтому пользователь вводит example.com, а не запоминает адрес вроде 203.0.113.10.

На интервью не останавливайтесь только на аналогии с телефонной книгой. Скажите, что DNS распределен. Ответ может прийти из кеша, от рекурсивного резолвера или через цепочку серверов, которая приводит к авторитетному серверу домена.

Практический вывод простой: если DNS не сработал, HTTP-запрос еще не начался. Вы не получите нормальный ответ API, HTML-страницу или HTTP-статус. Для пользователя это выглядит как недоступный сайт. Для фронтенда это сетевой сбой до приложения.

Как проходит запрос имени

Что происходит до запроса
  1. 1Пользователь вводит домен или кликает ссылку
  2. 2Клиент проверяет локальные кеши
  3. 3Резолвер ищет авторитетный ответ, если кеша нет
  4. 4Браузер получает адрес и открывает соединение
  5. 5После этого начинается TLS и HTTP-запрос
Где часто ищут не там
  1. 1Ждут HTTP-статус при ошибке резолвинга
  2. 2Очищают только кеш браузера и забывают про DNS-кеш
  3. 3Меняют TTL уже после начала переезда
  4. 4Путают CNAME с редиректом
  5. 5Проверяют один регион и считают, что у всех так же

Упрощенная цепочка такая. Браузер или ОС сначала проверяет кеш. Если ответа нет, запрос уходит к рекурсивному резолверу. Это может быть резолвер провайдера, корпоративной сети или публичный DNS. У резолвера тоже может быть кеш. Если кеша нет, он ищет ответ через корневые серверы, TLD-серверы и авторитетные серверы нужного домена.

После получения адреса браузер открывает соединение. Для HTTPS дальше идет TLS-рукопожатие и проверка сертификата для имени хоста. Только после этого начинается HTTP-запрос. Поэтому не стоит говорить, что если DNS работает, то сайт полностью настроен. Еще могут сломаться TLS, серверная конфигурация, CORS, cookies или приложение.

Что важно знать про записи

DNS-записи, которые часто встречаются во фронтенде

Домен приложенияA / AAAA

Указывают на IPv4 или IPv6 адрес. Ошибка приведет к недоступному сайту или к попаданию на старый сервер.

Поддомен для CDN или хостингаCNAME

Делает имя алиасом другого имени. Не путайте это с HTTP-редиректом и учитывайте ограничения на apex-домене.

Проверка владения доменомTXT

Нужна для Vercel, Google, почтовых сервисов и политик безопасности. Если TXT еще в кеше или записана неверно, интеграция не подтвердит домен.

Почта с доменаMX / SPF / DKIM / DMARC

Не влияет на загрузку SPA напрямую, но влияет на письма регистрации, сброса пароля и доставляемость уведомлений.

Безопасность сертификатовCAA

Может ограничивать центры сертификации, которые выпускают сертификат. Неверная политика мешает выпустить TLS-сертификат для домена.

В ответе не нужно перечислять все типы записей. Достаточно назвать самые частые и связать их с задачами. A и AAAA ведут к адресам. CNAME делает алиас на другое имя. TXT часто нужен для подтверждения домена или политик безопасности.

Важная ловушка: CNAME не является HTTP-редиректом. Он не меняет путь, не добавляет https, не отправляет статус 301 и не управляет маршрутом внутри SPA. Если нужно перенести /old-page на /new-page, это делают на уровне сервера, CDN, edge-функции или приложения.

TTL и кеширование

TTL, или Time To Live, показывает, как долго DNS-ответ можно хранить в кеше. Это не гарантия мгновенного обновления у всех пользователей. Это настройка времени жизни ответа. Если до переезда у записи был большой TTL, старые адреса могут жить в кешах еще какое-то время.

Для деплоя это важно. Если вы переносите домен на новый хостинг или CDN, безопаснее заранее уменьшить TTL и дождаться распространения этой настройки. Потом можно менять запись. После стабилизации TTL можно снова увеличить, чтобы снизить количество DNS-запросов и сделать ответы быстрее.

Пример проверки:

dig example.com A
dig example.com CNAME
nslookup example.com 1.1.1.1
nslookup example.com 8.8.8.8

Такой пример показывает не только адрес. Он также показывает, что разные резолверы могут отвечать по-разному во время изменения записей.

Как это влияет на UI и fetch

DNS-ошибка в браузере обычно приходит в приложение как сетевая ошибка, если запрос делает ваш код. Это не ответ API. У него нет надежного status, тела JSON и серверного сообщения. Поэтому опасно писать обработчик, который для любой ошибки делает await response.json() или показывает, что сервер вернул 500.

Безопаснее разделять два случая. Если ответ пришел, проверяйте response.ok и статус. Если запрос упал до ответа, показывайте понятный error state: нет соединения, домен недоступен или сервис временно недоступен. Кнопка повтора полезна, но не запускайте бесконечные повторы без паузы. Это ухудшает UX и создает лишние запросы, когда сеть восстановится.

В React также важно отменять запрос через AbortController или игнорировать устаревший результат при размонтировании и смене параметров. DNS сам по себе не вызывает race condition, но сетевые сбои и повторы легко приводят к неверному состоянию UI, если старый запрос перезапишет новый результат.

Практический ответ для фронтендера

На интервью можно ответить так:

DNS это система доменных имен. Она помогает клиенту по имени вроде example.com получить адрес или другую запись. После этого клиент открывает соединение и делает HTTP-запрос. DNS распределен и кешируется, поэтому изменения записей не всегда видны всем пользователям сразу. Для фронтенда это важно при деплое, подключении CDN, настройке домена, TLS и диагностике ошибок, когда запрос до API вообще не дошел.

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

Диагностика типичной проблемы

Плохой подход: поменять DNS-запись, открыть сайт у себя, увидеть новый сервер и сказать, что для всех пользователей все уже обновилось.

Лучше проверьте несколько резолверов, посмотрите TTL и убедитесь, что старый сервер еще какое-то время может обслуживать трафик. Не удаляйте его сразу после переключения. Иначе часть пользователей попадет на нерабочий адрес, а вы получите плавающую ошибку, которую сложно воспроизвести.

Еще один частый сценарий связан с фронтенд-хостингом. Вы добавляете домен в Vercel, Netlify, Cloudflare Pages или другой сервис. Сервис просит создать CNAME, A или TXT. Если запись сделана неверно или еще не обновилась в кеше, в панели будет ошибка валидации домена, а сайт может открываться только по техническому адресу.

В ответе полезно сказать, что DNS решает только часть задачи. После успешного резолвинга нужно проверить сертификат, настройки хоста, правила CDN, заголовки, CORS и cookies для нужного домена.

Частые ошибки

Где обычно ошибаются

Проверьте формулировки, которые звучат уверенно, но на интервью быстро выдают пробелы.

  1. 1

    Путать DNS с HTTP-редиректом

    DNS помогает найти адрес для имени, но не говорит браузеру перейти на другой URL. Редирект с example.com на www.example.com делает сервер, CDN или edge-правило через HTTP-статус. Если назвать CNAME редиректом, вас легко спросят про смену пути или протокола.
  2. 2

    Обещать мгновенное обновление записей

    DNS-ответы кешируются на разных уровнях. Даже если вы поменяли запись у провайдера, часть пользователей еще может видеть старый адрес до истечения TTL. Лучше сказать, что изменения доходят постепенно и зависят от кешей.
  3. 3

    Останавливаться на фразе про телефонную книгу

    Аналогия помогает начать ответ, но для интервью ее мало. Добавьте, что система распределенная, есть рекурсивный резолвер и авторитетные серверы. Затем свяжите DNS с деплоем, CDN, TLS и подключением домена.
  4. 4

    Не связывать DNS с пользовательской ошибкой

    При DNS-сбое у клиента не будет нормального HTTP-ответа. Обработчик fetch получит сетевую ошибку. В интерфейсе это стоит показывать как проблему подключения или доступности сервиса, а не как ответ API с кодом 500. Опасный вариант: сразу вызывать response.json() без проверки, потому что при network error объекта response может не быть. Безопаснее отделять HTTP-ошибки от ошибок сети и показывать состояние, что подключиться не удалось.
  5. 5

    Забывать про разные ответы в разных местах

    CDN, geoDNS и разные резолверы могут вернуть разные IP-адреса. Если вы проверили домен только со своего ноутбука, это еще не доказывает, что проблема решена для всех пользователей. Для диагностики полезно проверять несколько DNS-серверов и регионов.

Follow-up

Что могут спросить дальше

Короткие ответы на вопросы, которыми проверяют понимание DNS, кеширования и связи с фронтендом.

Живые ответы

Видео с похожим вопросом

Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.

Пока видео нет. Когда появятся подходящие публичные интервью, добавим их в этот блок, чтобы можно было сравнить разбор с тем, как отвечают реальные кандидаты.

Содержание