GraphQL là ngôn ngữ truy vấn cho API, trong đó client mô tả chính xác dữ liệu mình cần và server trả về đúng shape đó. REST thì mỗi endpoint có response shape cố định, nên client hoặc bị over-fetching, hoặc phải gọi nhiều lần rồi tự ghép.
Hai vấn đề GraphQL sinh ra để giải quyết là over-fetching và under-fetching. Với màn hình cần dữ liệu từ ba nguồn, REST thường tốn ba round trip còn GraphQL chỉ một.
Trade-off cần nói rõ trong phỏng vấn: cache ở tầng HTTP khó hơn nhiều vì mọi truy vấn đi qua một địa chỉ; việc giới hạn chi phí truy vấn trở thành trách nhiệm của server; và execution layer phức tạp hơn. GraphQL không phải database và không thay thế database — nó là tầng contract giữa client và server.