Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Что такое gRPC и для чего его используют?
gRPC — это фреймворк от Google для удалённого вызова процедур (RPC) поверх HTTP/2 с сериализацией через Protocol Buffers. Его используют для высокопроизводительного, строготипизированного общения между сервисами, с поддержкой стриминга и автоматической генерацией кода на разных языках.
Опишите пошагово, как клиент отправляет сообщение gRPC-сервису.
Клиент:
Инициализирует соединение grpc.Dial с адресом сервиса.
Создаёт сгенерированный клиент из NewYourServiceClient(conn).
Вызывает метод клиента, передавая контекст и сообщение (структуру).
gRPC кодирует сообщение в protobuf, упаковывает в HTTP/2, отправляет.
Получает ответ, декодирует обратно в Go-структуру и возвращает её в приложение.
Что такое отражение (Reflection) в gRPC?
Reflection в gRPC — это сервис, который позволяет клиентам динамически узнать зарегистрированные сервисы, методы и структуры сообщений без .proto файлов. Клиент может через Reflection API получить список доступных RPC, их сигнатуры и запрашивать типы сообщений, что удобно для отладки и динамических клиентов.
Какие существуют типы вызовов в gRPC?
gRPC поддерживает четыре вида вызовов: одиночный RPC (Unary) — один запрос/ответ, серверный стриминг — один запрос, поток ответов, клиентский стриминг — поток запросов, один ответ, и двунаправленный стриминг (Bidirectional) — поток запросов и поток ответов.
В чём преимущества и недостатки gRPC по сравнению с REST?
gRPC даёт высокую производительность и двоичную сериализацию Protobuf, поддерживает стриминг, строгую типизацию и автоматическую генерацию кода, но требует HTTP/2, сложнее дебажить и не так широко поддерживается браузерами. REST с JSON проще в освоении, более совместим с HTTP/1.1 и широко поддерживается в инструментах, но уступает по скорости и полноте контрактов.
Какие сетевые (TCP/UDP) и веб-протоколы (HTTP, gRPC) ты знаешь?
Как работает gRPC поверх HTTP/2?
Как балансируется нагрузка в gRPC?
Какие альтернативные технологии клиент-серверного взаимодействия вы знаете (gRPC, GraphQL)?
Как микросервисы взаимодействуют между собой (REST, RabbitMQ, Kafka, gRPC)?
Рейтинг:
2
Сложность:
6
TCP и UDP — это основные транспортные протоколы: TCP надежный, а UDP быстрый. HTTP — протокол для веб-запросов, а gRPC — современный RPC-фреймворк, работающий поверх HTTP/2.
Рейтинг:
2
Сложность:
5
gRPC использует HTTP/2 для передачи бинарных данных (Protocol Buffers). Это позволяет мультиплексировать запросы, уменьшая задержки. Сервер может даже отправлять данные без запроса (server push).
Рейтинг:
2
Сложность:
6
gRPC использует клиентскую балансировку нагрузки через resolver и picker. Поддерживаются различные стратегии (round-robin, weighted). Для управления сервисами часто используют service mesh (например, Istio) или балансировщики (например, Envoy).
Рейтинг:
2
Сложность:
6
Популярные альтернативы:
gRPC: Вызов функций между сервисами через бинарные Protobuf (быстрее REST).
GraphQL: Клиент сам запрашивает нужные данные (гибкость, меньше пересылок).
WebSockets: Двустороннее общение в реальном времени (чаты, уведомления).
Рейтинг:
2
Сложность:
5
Микросервисы могут общаться синхронно (REST, gRPC) через HTTP/gRPC‑вызовы или асинхронно (RabbitMQ, Kafka) через очереди и топики. Выбор зависит от требований к задержке, надёжности и согласованности данных.
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
6
Рейтинг:
2
Сложность:
7
Рейтинг:
1
Сложность:
7
Рейтинг:
2
Сложность:
6