Bird
Raised Fist0
Expressframework~20 mins

Microservice communication basics in Express - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
๐ŸŽ–๏ธ
Microservice Communication Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
๐Ÿง  Conceptual
intermediate
2:00remaining
Understanding synchronous vs asynchronous communication

Which statement correctly describes the difference between synchronous and asynchronous communication in microservices?

ASynchronous communication waits for a response before continuing, while asynchronous communication does not wait and proceeds immediately.
BSynchronous communication never waits for a response, asynchronous always waits for a response.
CAsynchronous communication requires both services to be online at the same time, synchronous does not.
DSynchronous communication uses message queues, asynchronous uses direct HTTP calls.
Attempts:
2 left
๐Ÿ’ก Hint

Think about whether the sender waits for the receiver to reply before moving on.

โ“ Architecture
intermediate
2:00remaining
Choosing communication method for microservices

You have two microservices: one handles user authentication and the other processes payments. Which communication method is best when the payment service must confirm user identity before processing?

AUse synchronous HTTP calls so the payment service waits for authentication response before proceeding.
BUse asynchronous messaging with a message queue to send user identity and wait for confirmation.
CUse asynchronous event broadcasting without waiting for any response.
DUse direct database access by the payment service to check user identity.
Attempts:
2 left
๐Ÿ’ก Hint

Consider if the payment service needs immediate confirmation before continuing.

โ“ scaling
advanced
2:00remaining
Scaling microservices with asynchronous communication

Which benefit does asynchronous communication provide when scaling microservices?

AIt requires all services to be tightly coupled, improving coordination.
BIt forces all services to process requests in a strict order, reducing complexity.
CIt allows services to handle requests independently without waiting, improving throughput and resilience.
DIt eliminates the need for message brokers or queues.
Attempts:
2 left
๐Ÿ’ก Hint

Think about how asynchronous communication affects service independence and load handling.

โ“ tradeoff
advanced
2:00remaining
Tradeoffs of using message queues in microservices

What is a common tradeoff when using message queues for microservice communication?

AGuaranteed real-time responses but no fault tolerance.
BImproved decoupling and reliability but increased complexity and potential message delays.
CNo need for service discovery but requires synchronous calls.
DSimpler architecture but no support for retrying failed messages.
Attempts:
2 left
๐Ÿ’ก Hint

Consider what message queues add and what challenges they introduce.

โ“ estimation
expert
2:00remaining
Estimating message queue capacity for microservices

You expect 10,000 requests per minute between two microservices communicating asynchronously via a message queue. Each message is about 1 KB. What is the minimum required throughput of the message queue in MB per second?

AApproximately 1.67 MB/s
BApproximately 0.017 MB/s
CApproximately 16.7 MB/s
DApproximately 0.17 MB/s
Attempts:
2 left
๐Ÿ’ก Hint

Calculate total KB per minute, convert to MB, then divide by 60 seconds.

Practice

(1/5)
1. Which of the following is a common way for microservices to communicate synchronously in an Express-based system?
easy
A. Sharing global variables in memory
B. Direct database access by all services
C. Using HTTP REST API calls between services
D. Using local file system for message passing

Solution

  1. Step 1: Understand synchronous communication in microservices

    Synchronous communication means one service waits for a response from another before continuing.
  2. Step 2: Identify common synchronous methods in Express

    HTTP REST API calls are widely used for synchronous communication between microservices in Express.
  3. Final Answer:

    Using HTTP REST API calls between services -> Option C
  4. Quick Check:

    Synchronous communication = HTTP REST API calls [OK]
Hint: Sync communication usually uses HTTP requests [OK]
Common Mistakes:
  • Thinking direct DB access is common for microservices
  • Assuming shared memory works across services
  • Using file system for communication
2. Which Express code snippet correctly sends a JSON response from one microservice to another?
easy
A. res.json({ data: 'value' })
B. res.write({ data: 'value' })
C. res.send("{ data: 'value' }")
D. res.render({ data: 'value' })

Solution

  1. Step 1: Identify Express method for JSON response

    Express provides res.json() to send JSON formatted responses easily.
  2. Step 2: Compare other methods

    res.send() can send JSON but res.json() is preferred for clarity; res.write() is low-level and res.render() is for templates.
  3. Final Answer:

    res.json({ data: 'value' }) -> Option A
  4. Quick Check:

    Express JSON response = res.json() [OK]
Hint: Use res.json() to send JSON responses in Express [OK]
Common Mistakes:
  • Using res.send() without JSON stringification
  • Confusing res.render() with JSON response
  • Using res.write() incorrectly
3. Consider two microservices where Service A calls Service B using HTTP GET. What will Service A receive if Service B responds with res.status(200).json({ message: 'Success' })?
medium
A. A JSON object { message: 'Success' }
B. A plain text 'Success' string
C. An HTTP 404 error
D. An empty response

Solution

  1. Step 1: Understand Service B's response

    Service B sends HTTP status 200 with JSON body { message: 'Success' }.
  2. Step 2: Determine what Service A receives

    Service A receives the JSON object exactly as sent, since status 200 means OK and body is JSON.
  3. Final Answer:

    A JSON object { message: 'Success' } -> Option A
  4. Quick Check:

    HTTP 200 + res.json() = JSON object response [OK]
Hint: HTTP 200 with res.json() returns JSON object [OK]
Common Mistakes:
  • Assuming plain text instead of JSON
  • Confusing status codes with response body
  • Expecting empty or error response
4. In an Express microservice, the following code is used to call another service asynchronously. What is the main issue?
fetch('http://service-b/api/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.log(error))
medium
A. Missing await keyword for fetch call
B. fetch is not defined in Node.js by default
C. No error handling for non-JSON responses
D. Using console.log instead of res.send

Solution

  1. Step 1: Check environment support for fetch

    Node.js versions before 18 do not have fetch globally defined by default.
  2. Step 2: Identify the main issue in Express microservice

    Without importing or enabling fetch, this code will cause a ReferenceError in Node.js.
  3. Final Answer:

    fetch is not defined in Node.js by default -> Option B
  4. Quick Check:

    Node.js needs fetch polyfill or version 18+ [OK]
Hint: Node.js needs fetch polyfill or v18+ for fetch [OK]
Common Mistakes:
  • Thinking await is mandatory with then() chains
  • Ignoring fetch availability in Node.js
  • Confusing console.log with response sending
5. You want to design communication between two Express microservices where Service A sends a task to Service B and does not wait for a response. Which approach is best to ensure reliable, scalable communication?
hard
A. Use WebSocket connection for real-time two-way communication
B. Use HTTP POST with immediate response from Service B
C. Use direct database writes by Service A for Service B to poll
D. Use a message queue like RabbitMQ for asynchronous messaging

Solution

  1. Step 1: Understand asynchronous communication needs

    Service A sends a task and does not wait, so async messaging is needed.
  2. Step 2: Evaluate options for reliability and scalability

    Message queues like RabbitMQ provide reliable, scalable async communication with delivery guarantees.
  3. Final Answer:

    Use a message queue like RabbitMQ for asynchronous messaging -> Option D
  4. Quick Check:

    Async + reliable + scalable = message queue [OK]
Hint: Async tasks use message queues for reliability [OK]
Common Mistakes:
  • Using HTTP POST expecting async without waiting
  • Relying on database polling which is inefficient
  • Using WebSocket for one-way async tasks
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