Вопросы для собеседования бэкенд-разработчика
Различия протоколов TCP и UDP
TCP – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью. UDP – транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети. Разница между протоколами TCP и UDP – в так называемой "гарантии доставки". TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Также протокол TCP считается надежным, тогда как UDP получил даже именование “протокол ненадежных датаграмм. TCP исключает потери данных, дублирование и перемешивание пакетов, задержки. UDP все это допускает, и соединение для работы ему не требуется. Процессы, которым данные передаются по UDP, должны обходиться полученным, даже и с потерями. TCP контролирует загруженность соединения, UDP не контролирует ничего, кроме целостности полученных датаграмм.
Что такое HTTP и HTTPS?
HTTP (от англ. HyperText Transfer Protocol — протокол передачи гипертекста) — это прикладной протокол передачи данных в сети. На текущий момент используется для получения информации с веб-сайтов. Протокол HTTP основан на использовании технологии «клиент-сервер»: клиент, отправляющий запрос, является инициатором соединения; сервер, получающий запрос, выполняет его и отправляет клиенту результат. HTTPS (от англ. HyperText Transfer Protocol Secure — безопасный протокол передачи гипертекста) — это расширение протокола HTTP, поддерживающее шифрование посредством криптографических протоколов SSL и TLS. Чем отличаются HTTP и HTTPS: - HTTPS не является отдельным протоколом передачи данных, а представляет собой расширение протокола HTTP с надстройкой шифрования; - передаваемые по протоколу HTTP данные не защищены, HTTPS обеспечивает конфиденциальность информации путем ее шифрования; - HTTP использует порт 80, HTTPS — порт 443.
Какие HTTP-запросы вы знаете?
HTTP определяет множество методов запроса, которые указывают, какое желаемое действие выполнится для данного ресурса. Несмотря на то, что их названия могут быть существительными, эти методы запроса иногда называются HTTP глаголами. Каждый реализует свою семантику, но каждая группа команд разделяет общие свойства: так, методы могут быть безопасными, идемпотентными или кешируемыми. GET запрашивает представление ресурса. Запросы с использованием этого метода могут только получать данные. HEAD запрашивает ресурс так же, как и метод GET, но без тела ответа. POST используется для отправки сущностей к определённому ресурсу. Часто вызывает изменение состояния или какие-то сайд-эффекты на сервере. PUT заменяет все текущие представления ресурса данными запроса. DELETE удаляет указанный ресурс. CONNECT устанавливает "туннель" к серверу, определённому по ресурсу. OPTIONS используется для описания параметров соединения с ресурсом. TRACE выполняет вызов возвращаемого тестового сообщения с ресурса. PATCH используется для частичного изменения ресурса.
Разница между HTTP/1.1 и HTTP/2?
В отличие от HTTP/1.1, в котором все запросы и ответы хранятся в простом текстовом формате, HTTP/2 использует двоичный уровень кадрирования для инкапсуляции всех сообщений в двоичном формате, при этом сохраняя семантику HTTP (методы, заголовки). API прикладного уровня по-прежнему создает сообщения в обычных форматах HTTP, но нижележащий уровень преобразовывает эти сообщения в двоичные. Благодаря этому веб-приложения, созданные до HTTP/2, могут продолжать работать как обычно при взаимодействии с новым протоколом. Преобразование сообщений в двоичные позволяет HTTP/2 применять новые подходы к доставке данных, недоступные в HTTP/1.1.