Оценивает знание современных протоколов обмена данными.
Популярные альтернативы:
gRPC: Вызов функций между сервисами через бинарные Protobuf (быстрее REST).
GraphQL: Клиент сам запрашивает нужные данные (гибкость, меньше пересылок).
WebSockets: Двустороннее общение в реальном времени (чаты, уведомления).
Сравнение технологий:
gRPC:
Использует HTTP/2 и Protobuf.
Подходит для микросервисов.
// Определение сервиса в .proto
service UserService {
rpc GetUser (UserRequest) returns (User) {}
}
// Go-сервер
func (s *Server) GetUser(ctx context.Context, req *pb.UserRequest) (*pb.User, error) {
return &pb.User{Id: req.Id, Name: "Alice"}, nil
}GraphQL:
Клиент задаёт структуру ответа:
query {
user(id: "123") {
name
friends { name }
}
}Реализация в Go: библиотеки gqlgen или graphql-go.
WebSockets:
Постоянное соединение для потоковой передачи:
// Подключение клиента
conn, _ := websocket.Upgrade(w, r, nil, 1024, 1024)
conn.WriteMessage(websocket.TextMessage, []byte("Привет!"))Вывод: Выбирайте инструмент под задачу: gRPC для производительности, GraphQL для клиентского контроля данных.