Какие ключевые отличия HTTP/2 от HTTP/1.1?
HTTP/2 использует бинарные frames, несколько streams в одном соединении и сжатие заголовков HPACK. HTTP-семантика методов и статусов сохраняется; TCP head-of-line blocking не исчезает.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
HTTP/2 использует бинарные frames, несколько streams в одном соединении и сжатие заголовков HPACK. HTTP-семантика методов и статусов сохраняется; TCP head-of-line blocking не исчезает.
Читать ответContext propagation переносит trace ID и связь с родительским span между компонентами. W3C traceparent задаёт общий формат; HTTP-заголовки, metadata gRPC и headers сообщений служат носителями.
Читать ответВ условии неточность: при работающем @Transactional HTTP-вызов обычно идёт до commit, а не после него. Однако откат БД не отменяет уже выполненное действие внешней системы.
Читать ответАсинхронный HTTP-метод должен проверить ответ, обработать данные и вернуть типизированный результат либо ошибку. Формат обработки нужно задавать контрактом.
Читать ответВ этом примере сетевых запросов вообще нет: fetchUrl всегда возвращает nil. При реальной реализации понадобятся ожидание, таймауты и закрытие тела ответа.
Читать ответЗапустите по горутине на URL, используйте общий HTTP-клиент с тайм-аутом и WaitGroup. Сетевая ошибка выводится отдельно от полученного HTTP-кода.
Читать ответОбрабатывайте URL потоком фиксированным числом работников, а HTTP-коды считайте одним агрегатором. Не размещайте миллиарды строк в памяти и не создавайте по горутине на каждую ссылку.
Читать ответВместо горутины на каждый URL создайте фиксированный пул работников. Уберите log.Fatal из работника: он завершает весь процесс, а не только обработку неудачного запроса.
Читать ответБраузеры обычно кешируют ответы GET и HEAD при подходящих заголовках. POST допускает кеширование при специальных условиях, но поддержка на практике ограничена.
Читать ответБез критерия единственного ответа нет. Обычно выделяют WebSocket как канал двунаправленного обмена, тогда как остальные связаны с HTTP-семантикой запросов.
Читать ответНеизвестное число URL удобно передавать каналом: источник закрывает его по окончании, работники завершаются, а координатор закрывает результаты после WaitGroup.
Читать ответСоздайте фиксированное число работников, канал заданий и канал результатов. Ограниченный пул не допускает горутину на каждый URL и учитывает отмену.
Читать ответ