# gRPC (Go) > Protocol Buffers, dịch vụ gRPC, streaming, interceptor, xử lý lỗi, metadata - 22 câu hỏi phỏng vấn - Mid-Level - [Câu hỏi phỏng vấn: Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van.md) ## 1. gRPC là gì? **Câu trả lời** gRPC là một framework RPC (Remote Procedure Call) mã nguồn mở do Google phát triển, sử dụng HTTP/2 làm giao thức truyền tải và Protocol Buffers làm định dạng serialization mặc định. Khác với REST sử dụng JSON và HTTP/1.1, gRPC mang lại hiệu năng tốt hơn nhờ định dạng nhị phân của Protocol Buffers và các tính năng nâng cao của HTTP/2 (multiplexing, nén header, server push). gRPC được sử dụng rộng rãi cho giao tiếp giữa các microservice vì nó hỗ trợ nguyên bản streaming hai chiều, sinh mã client/server và kiểu dữ liệu được định kiểu chặt chẽ. ## 2. Vai trò chính của Protocol Buffers trong gRPC là gì? **Câu trả lời** Protocol Buffers (protobuf) là ngôn ngữ định nghĩa giao diện (IDL) và định dạng serialization nhị phân được dùng mặc định trong gRPC. Nó cho phép định nghĩa cấu trúc của các message và dịch vụ trong các file .proto, sau đó được biên dịch để tự động sinh mã client và server trong nhiều ngôn ngữ khác nhau. Định dạng nhị phân của protobuf nhỏ gọn hơn JSON từ 3 đến 10 lần và mang lại hiệu năng serialization/deserialization vượt trội đáng kể (nhanh hơn tới 20 lần). Điều này khiến gRPC đặc biệt phù hợp cho giao tiếp tần suất cao giữa các microservice. ## 3. Sự khác biệt giữa một lệnh gọi gRPC Unary và một lệnh gọi Server Streaming là gì? **Câu trả lời** Lệnh gọi Unary là loại lệnh gọi gRPC đơn giản nhất: client gửi một request duy nhất và nhận một response duy nhất, tương tự một request HTTP REST cổ điển. Lệnh gọi Server Streaming cho phép client gửi một request duy nhất nhưng nhận một luồng (stream) gồm nhiều response từ server. Ví dụ, một API thông báo có thể dùng Server Streaming để gửi nhiều cập nhật cho client mà không cần client phải polling. Điều này giảm độ trễ và tải mạng so với các lệnh gọi Unary lặp lại. ## Còn 19 câu hỏi nữa - Package Go nào được dùng để tạo một server gRPC? - Làm thế nào để định nghĩa một dịch vụ gRPC trong file .proto? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn Go khác - [Kiến thức cơ bản về Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-basics.md): 25 câu hỏi, Junior - [Cấu trúc dữ liệu Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-data-structures.md): 20 câu hỏi, Junior - [Interface trong Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-interfaces.md): 18 câu hỏi, Junior - [Xử lý lỗi](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/error-handling.md): 20 câu hỏi, Junior - [Cơ bản về Goroutine](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/goroutines-basics.md): 20 câu hỏi, Junior - [Channels](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/channels.md): 22 câu hỏi, Junior - [Go Modules](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-modules.md): 18 câu hỏi, Mid-Level - [Máy chủ HTTP](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-server.md): 24 câu hỏi, Mid-Level - [HTTP Client](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-client.md): 18 câu hỏi, Mid-Level - [Mã hóa JSON](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/json-encoding.md): 20 câu hỏi, Mid-Level - [Database/SQL](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/database-sql.md): 22 câu hỏi, Mid-Level - [Gói context](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/context-package.md): 20 câu hỏi, Mid-Level - [Testing](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/testing.md): 22 câu hỏi, Mid-Level - [Các mẫu Concurrency](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/concurrency-patterns.md): 24 câu hỏi, Mid-Level - [Primitive đồng bộ hóa](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/sync-primitives.md): 22 câu hỏi, Mid-Level - [Framework web Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-web-frameworks.md): 20 câu hỏi, Mid-Level - [Thiết kế API REST](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/rest-api-design.md): 20 câu hỏi, Mid-Level - [Reflection](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/reflection.md): 20 câu hỏi, Senior - [Quản lý bộ nhớ](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/memory-management.md): 24 câu hỏi, Senior - [Tối ưu hóa hiệu năng](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/performance-optimization.md): 22 câu hỏi, Senior - [Generics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/generics.md): 20 câu hỏi, Senior - [Go Design Patterns](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/design-patterns.md): 24 câu hỏi, Senior - [Microservices](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/microservices.md): 24 câu hỏi, Senior - [Bảo mật và Xác thực](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/security-authentication.md): 24 câu hỏi, Senior - [Docker & Containerization](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/docker-containerization.md): 20 câu hỏi, Senior - [Kubernetes Basics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/kubernetes-basics.md): 22 câu hỏi, Senior - [Go Nâng cao](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/advanced-go.md): 20 câu hỏi, Senior - [Phát triển CLI](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/cli-development.md): 20 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/grpc