GraphQL is a query language for your API, and a server-side runtime for executing queries using a type system you define for your data. The GraphQL specification was open-sourced in 2015 and has since been implemented in a variety of programming languages. GraphQL has been released simply as a specification, for a query language for APIs that allows clients to request exactly the data they need, nothing more and nothing less.
GraphQL server can be implemented in any preferred programming language.
Unlike REST, where multiple endpoints provide fixed data structures, GraphQL has a single endpoint and lets clients define the structure of the response.
This reduces the over-fetching and under-fetching of data.
It is strongly typed using Schema Definition Language
How would you fetch a list of users with their posts using GraphQL compared to a typical REST endpoint?
If a client only needs a user's name and email, what would the GraphQL query look like and how does that avoid over‑fetching?
What happens if you request a field that doesn't exist in the GraphQL schema?
We added a new field to the User type but some clients started receiving errors; how would you debug the issue?
When deciding between GraphQL and REST for a new feature that requires pagination and filtering, what trade‑offs would you consider?
If a GraphQL resolver is causing N+1 queries, how would you identify and fix it?
Design a gateway that serves both GraphQL and existing REST services; how would you handle authentication and caching across the two?
At scale, what are the performance implications of deeply nested GraphQL queries and how would you mitigate them?
How would you implement rate limiting for a public GraphQL API without impacting existing REST clients?
Our organization wants to migrate a large monolithic REST API to GraphQL over several years; outline a migration strategy that minimizes disruption for multiple product teams.
When multiple teams own different parts of the schema, how do you enforce versioning and backward compatibility?
What governance model would you set up to manage schema evolution and avoid breaking changes across services?