Интервью-вопрос
Что такое DNS
DNS связывает доменное имя с адресами и служебными записями, которые нужны до HTTP-запроса. Для фронтендера это важно при деплое, подключении CDN, настройке домена, TLS и диагностике сетевых ошибок.
- Добавлен
- Редакция
Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.
Мини-квиз
Проверка перед разбором
Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.
Вопрос 1 из 50 правильно
Разбор
Разобраться, а не зазубрить
Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.
Базовая идея
DNS отвечает на вопрос: какие данные связаны с этим доменным именем. Чаще всего браузеру нужен IP-адрес, чтобы подключиться к серверу. Поэтому пользователь вводит example.com, а не запоминает адрес вроде 203.0.113.10.
На интервью не останавливайтесь только на аналогии с телефонной книгой. Скажите, что DNS распределен. Ответ может прийти из кеша, от рекурсивного резолвера или через цепочку серверов, которая приводит к авторитетному серверу домена.
Практический вывод простой: если DNS не сработал, HTTP-запрос еще не начался. Вы не получите нормальный ответ API, HTML-страницу или HTTP-статус. Для пользователя это выглядит как недоступный сайт. Для фронтенда это сетевой сбой до приложения.
Как проходит запрос имени
- 1Пользователь вводит домен или кликает ссылку
- 2Клиент проверяет локальные кеши
- 3Резолвер ищет авторитетный ответ, если кеша нет
- 4Браузер получает адрес и открывает соединение
- 5После этого начинается TLS и HTTP-запрос
- 1Ждут HTTP-статус при ошибке резолвинга
- 2Очищают только кеш браузера и забывают про DNS-кеш
- 3Меняют TTL уже после начала переезда
- 4Путают CNAME с редиректом
- 5Проверяют один регион и считают, что у всех так же
Упрощенная цепочка такая. Браузер или ОС сначала проверяет кеш. Если ответа нет, запрос уходит к рекурсивному резолверу. Это может быть резолвер провайдера, корпоративной сети или публичный DNS. У резолвера тоже может быть кеш. Если кеша нет, он ищет ответ через корневые серверы, TLD-серверы и авторитетные серверы нужного домена.
После получения адреса браузер открывает соединение. Для HTTPS дальше идет TLS-рукопожатие и проверка сертификата для имени хоста. Только после этого начинается HTTP-запрос. Поэтому не стоит говорить, что если DNS работает, то сайт полностью настроен. Еще могут сломаться TLS, серверная конфигурация, CORS, cookies или приложение.
Что важно знать про записи
DNS-записи, которые часто встречаются во фронтенде
A / AAAAУказывают на IPv4 или IPv6 адрес. Ошибка приведет к недоступному сайту или к попаданию на старый сервер.
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
Путать DNS с HTTP-редиректом
DNS помогает найти адрес для имени, но не говорит браузеру перейти на другой URL. Редирект сexample.comнаwww.example.comделает сервер, CDN или edge-правило через HTTP-статус. Если назватьCNAMEредиректом, вас легко спросят про смену пути или протокола. - 2
Обещать мгновенное обновление записей
DNS-ответы кешируются на разных уровнях. Даже если вы поменяли запись у провайдера, часть пользователей еще может видеть старый адрес до истечения TTL. Лучше сказать, что изменения доходят постепенно и зависят от кешей. - 3
Останавливаться на фразе про телефонную книгу
Аналогия помогает начать ответ, но для интервью ее мало. Добавьте, что система распределенная, есть рекурсивный резолвер и авторитетные серверы. Затем свяжите DNS с деплоем, CDN, TLS и подключением домена. - 4
Не связывать DNS с пользовательской ошибкой
При DNS-сбое у клиента не будет нормального HTTP-ответа. Обработчикfetchполучит сетевую ошибку. В интерфейсе это стоит показывать как проблему подключения или доступности сервиса, а не как ответ API с кодом500. Опасный вариант: сразу вызыватьresponse.json()без проверки, потому что при network error объектаresponseможет не быть. Безопаснее отделять HTTP-ошибки от ошибок сети и показывать состояние, что подключиться не удалось. - 5
Забывать про разные ответы в разных местах
CDN, geoDNS и разные резолверы могут вернуть разные IP-адреса. Если вы проверили домен только со своего ноутбука, это еще не доказывает, что проблема решена для всех пользователей. Для диагностики полезно проверять несколько DNS-серверов и регионов.
Follow-up
Что могут спросить дальше
Короткие ответы на вопросы, которыми проверяют понимание DNS, кеширования и связи с фронтендом.
Живые ответы
Видео с похожим вопросом
Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.
Пока видео нет. Когда появятся подходящие публичные интервью, добавим их в этот блок, чтобы можно было сравнить разбор с тем, как отвечают реальные кандидаты.
Чем POST отличается от DELETE 😎
POST отправляет данные для создания ресурса или запуска операции. DELETE удаляет уже известный ресурс. Разбираем поведение при повторах, body, статусы ответа и работу фронтенда после удаления.
Что такое API 😎
API это контракт, по которому одна программа обращается к другой. На странице разбираем, как объяснить API на интервью и какие риски важны для frontend: формат данных, ошибки, безопасность и изменение контракта.