Bird
Raised Fist0
HLDsystem_design~20 mins

REST API design for systems in HLD - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
REST API Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding REST API Statelessness

Which statement best describes the statelessness principle in REST API design?

AAPI requests can depend on previous requests to complete successfully.
BThe server must store session information to track user state between requests.
CEach API request must contain all information needed to process it, without relying on stored context on the server.
DClients should maintain no state and rely on the server to remember previous interactions.
Attempts:
2 left
💡 Hint

Think about how REST APIs handle client-server communication without storing session data.

❓ Architecture
intermediate
2:00remaining
Choosing HTTP Methods for REST API

Which HTTP method is the most appropriate for updating an existing resource completely in a REST API?

APUT
BPOST
CGET
DDELETE
Attempts:
2 left
💡 Hint

Consider which method replaces the entire resource at the given URI.

❓ scaling
advanced
2:30remaining
Scaling REST APIs with Caching

Which caching strategy best improves REST API scalability by reducing server load for frequently requested data?

ADisable caching to always serve fresh data.
BUse client-side caching with cache-control headers and ETags.
CStore all responses permanently on the server without expiration.
DCache only POST request responses on the client.
Attempts:
2 left
💡 Hint

Think about how HTTP headers help clients avoid unnecessary requests.

❓ tradeoff
advanced
2:30remaining
Tradeoffs in REST API Versioning

What is a common tradeoff when using URI versioning (e.g., /v1/resource) in REST API design?

AIt eliminates the need for documentation since versions are clear in the URI.
BIt allows seamless backward compatibility without any extra server maintenance.
CIt forces clients to always use the latest API version without choice.
DIt simplifies client requests but can lead to duplicated code and maintenance overhead on the server.
Attempts:
2 left
💡 Hint

Consider how versioning affects server code and client flexibility.

❓ estimation
expert
3:00remaining
Estimating API Throughput for a High-Traffic REST Service

A REST API server handles 10,000 requests per second on average. Each request takes 50ms of server processing time. How many concurrent requests must the server handle to sustain this throughput without queuing?

A500 concurrent requests
B200 concurrent requests
C50 concurrent requests
D1000 concurrent requests
Attempts:
2 left
💡 Hint

Use Little's Law: Concurrent = Throughput × Latency.

Practice

(1/5)
1. Which HTTP method is typically used to retrieve data from a REST API without modifying it?
easy
A. DELETE
B. POST
C. GET
D. PUT

Solution

  1. Step 1: Understand HTTP methods in REST

    GET is used to request data without changing the server state.
  2. Step 2: Match method to action

    POST creates or modifies data, PUT updates, DELETE removes data.
  3. Final Answer:

    GET -> Option C
  4. Quick Check:

    Retrieve data = GET [OK]
Hint: GET is for reading data only, no changes [OK]
Common Mistakes:
  • Confusing POST with GET
  • Using PUT for data retrieval
  • Thinking DELETE retrieves data
2. Which of the following is the correct URL format to access a specific user with ID 123 in a REST API?
easy
A. /users/123
B. /users/getUser?id=123
C. /getUser/123
D. /users?id=123

Solution

  1. Step 1: Identify RESTful URL design

    REST URLs use resource names and IDs as path segments, not actions or query for specific resource.
  2. Step 2: Compare options

    /users/123 correctly points to user resource with ID 123; others use verbs or query parameters incorrectly.
  3. Final Answer:

    /users/123 -> Option A
  4. Quick Check:

    Resource ID in path = /users/123 [OK]
Hint: Use resource path + ID, avoid verbs in URL [OK]
Common Mistakes:
  • Using verbs like getUser in URL
  • Using query params for resource ID
  • Mixing action names with resource paths
3. Given the following REST API call: DELETE /orders/456, what is the expected outcome?
medium
A. It deletes order 456 from the system
B. It updates order 456's status
C. It retrieves order 456's details
D. It creates a new order with ID 456

Solution

  1. Step 1: Understand HTTP DELETE method

    DELETE is used to remove a resource identified by the URL.
  2. Step 2: Analyze the URL and method

    /orders/456 points to order with ID 456; DELETE removes it.
  3. Final Answer:

    It deletes order 456 from the system -> Option A
  4. Quick Check:

    DELETE + resource ID = delete resource [OK]
Hint: DELETE method removes resource at given URL [OK]
Common Mistakes:
  • Thinking DELETE retrieves data
  • Confusing DELETE with POST
  • Assuming DELETE creates or updates
4. A developer designed a REST API endpoint as POST /users/123/updateEmail to update a user's email. What is the main issue with this design?
medium
A. Using POST instead of GET for update
B. Including action 'updateEmail' in the URL violates REST principles
C. Missing user ID in the URL
D. Using query parameters instead of path variables

Solution

  1. Step 1: Review REST URL design principles

    REST APIs should use resource paths, not actions in URLs.
  2. Step 2: Identify the problem in the URL

    Including 'updateEmail' is an action, which breaks REST design; updates should use PUT or PATCH on /users/123.
  3. Final Answer:

    Including action 'updateEmail' in the URL violates REST principles -> Option B
  4. Quick Check:

    URLs represent resources, not actions [OK]
Hint: Avoid verbs in URLs; use HTTP methods for actions [OK]
Common Mistakes:
  • Using verbs in URL paths
  • Confusing POST with GET for updates
  • Omitting resource IDs
5. You need to design a REST API for a system managing books and their authors. Which design best follows REST principles for retrieving all books by a specific author with ID 789?
hard
A. /books/authors/789
B. /books?author=789
C. /getBooksByAuthor/789
D. /authors/789/books

Solution

  1. Step 1: Understand resource hierarchy in REST

    Authors and books are resources; books by an author are a sub-resource of author.
  2. Step 2: Evaluate URL options

    /authors/789/books clearly shows books belonging to author 789, following REST resource nesting.
  3. Step 3: Consider query vs path

    While query parameters can filter, nested resource path is more RESTful for related resources.
  4. Final Answer:

    /authors/789/books -> Option D
  5. Quick Check:

    Nested resource path shows relationship [OK]
Hint: Use nested paths for related resources [OK]
Common Mistakes:
  • Using verbs in URL
  • Overusing query parameters
  • Ignoring resource relationships
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard