SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
DVA-C02 · Domain 1

Development with AWS Services practice questions

Development with AWS Services is worth 32% of the DVA-C02 exam — the heaviest of the 4 domains. Writing cloud-native application code, developing AWS Lambda functions, and integrating data stores. 6 fully worked examples are further down this page, answers included.

Exam weight
32%
the heaviest of the 4 domains
Questions
60
across 3 topics
Free, no account
5/day
sign up free to remove the cap
Explanations
Every option
right and wrong

Build a practice session

5 free questions left today.

Domains

How many?

Mode

Ready when you are

10 fresh questions drawn across 1 of 4 domains, in Learn mode.

Focused review

Every question you answer incorrectly, and every question you flag while practising, is saved here automatically. Finish a session and you can come back to re-drill just those.

6 sample Development with AWS Services questions, fully explained

Questions from the DVA-C02 bank mapped to domain 1, with the answer key and the reasoning behind every option. None of them repeat the examples on the main DVA-C02 practice page.

Question 1Development with AWS Services

A developer building a serverless application wants an AI assistant available in the IDE that can generate code from natural-language prompts, suggest unit tests, and scan code for security issues. Which AWS tool should the developer use?

Choose one.

  • a
    Amazon Q Developer Correct

    Amazon Q Developer is the AWS AI assistant for development — in the IDE, CLI, and console it generates and explains code, suggests unit tests, and scans code for security issues.

  • b
    AWS CloudShell

    CloudShell is a browser-based shell environment for running CLI commands; it is not an AI coding assistant and does not generate code or tests.

  • c
    AWS X-Ray

    X-Ray traces requests through distributed applications to analyze performance and errors; it has nothing to do with authoring code.

  • d
    AWS CodeBuild

    CodeBuild compiles source and runs tests as part of CI/CD pipelines; it executes builds rather than assisting a developer with writing code.

The concept

Amazon Q Developer is the AWS AI assistant that supports developers with code generation, explanation, test suggestions, and security scanning.

Why that’s the answer

The requirements — IDE-based AI assistance, code generation, unit-test suggestions, and security scanning — describe Amazon Q Developer, which is newly in scope for DVA-C02. CloudShell is a terminal in the browser, useful for running AWS CLI commands but with no code-generation capability. X-Ray belongs to observability: it traces requests across services. CodeBuild is the managed build service in the CI/CD family — it runs your build and test commands but does not help write them. Knowing each tool's purpose is enough; the exam is unlikely to probe deep Q Developer features.

How to reason it out
  1. List the asks: AI assistance in the IDE, code generation, test suggestions, security scanning.
  2. Match them to Amazon Q Developer, the AWS AI development assistant.
  3. Eliminate CloudShell (terminal), X-Ray (tracing), and CodeBuild (CI builds) as tools with different jobs.
  4. Remember Q Developer is available in the IDE, CLI, and console.

Exam tip: Amazon Q Developer is the AWS AI development assistant: it generates and explains code, suggests unit tests, and scans for security issues.

Application Development Patterns on AWS: Architecture, APIs and Messaging — the lesson that teaches this.

Question 2Development with AWS Services

A video platform's transcoding backend is overwhelmed during evening traffic spikes: upload jobs sent directly to it are rejected and lost when it runs at capacity. The team wants to absorb the bursts so that no job is ever lost and the backend can work through jobs at its own pace. What should the developer do?

Choose one.

  • a
    Put an Amazon SQS queue between the front end and the transcoding backend. Correct

    A queue decouples the two sides: it durably buffers every job during spikes, and the backend polls and processes at its own pace, retrying until each message is processed and deleted.

  • b
    Increase the size of the backend instances so they can handle peak load.

    Vertical scaling raises the ceiling but keeps the tight coupling — a spike beyond the new capacity still rejects jobs, and the fleet is overprovisioned the rest of the day.

  • c
    Have the upload front end retry rejected jobs synchronously with more attempts.

    During a sustained spike the backend stays saturated, so retries keep failing while the front end burns time waiting; nothing durably holds the jobs.

  • d
    Publish each job directly to the backend's HTTP endpoint through an Amazon SNS subscription.

    SNS is push-based: it delivers as fast as events arrive rather than letting the consumer pull at its own pace, so the backend is still hit at spike rate without a durable buffer it controls.

The concept

Loose coupling with a queue: SQS buffers work between components so producers and consumers scale and fail independently.

Why that’s the answer

The trigger words — absorb spikes, no data loss, process at its own pace — all point at an asynchronous, queue-based answer. SQS durably holds every job, levels the load, and lets the backend pull messages when it has capacity; a job is only deleted after successful processing, so nothing is lost. Bigger instances keep the synchronous coupling and just move the failure threshold while overprovisioning off-peak. Synchronous retries fail for the duration of a sustained spike because the backend never gets headroom. SNS push delivery re-creates the original problem: events arrive at the consumer at spike rate, and there is no durable buffer the consumer drains on its own schedule unless a queue is added behind the topic.

How to reason it out
  1. Spot the trigger words: absorb spikes, no job lost, backend works at its own pace.
  2. Recognize these as the case for asynchronous decoupling with a buffer.
  3. Choose SQS: durable storage of each job, pull-based consumption, retry until deleted.
  4. Reject vertical scaling and synchronous retries (coupling remains) and bare SNS push (no consumer-paced durable buffer).

Exam tip: Buffer, absorb spikes, and no data loss during downstream saturation are SQS cues — put a queue between the producer and the overwhelmed consumer.

Application Development Patterns on AWS: Architecture, APIs and Messaging — the lesson that teaches this.

Question 3Development with AWS Services

After a customer completes checkout, an e-commerce application synchronously calls an email service to send a confirmation before returning the response. The email service occasionally slows down, which delays every checkout. The confirmation does not need to be sent instantly. What should the developer change so checkout latency no longer depends on the email service?

Choose one.

  • a
    Publish the email request to a queue and return the checkout response immediately; a separate consumer sends the email. Correct

    Sending the confirmation is work that can complete later, so handing it off asynchronously removes the email service from the checkout critical path entirely.

  • b
    Increase the timeout on the synchronous call to the email service.

    A longer timeout makes checkout wait even longer when the email service is slow; the latency coupling is unchanged.

  • c
    Retry the email call with exponential backoff inside the checkout request.

    Backoff retries are for transient failures — performed synchronously they add even more waiting to the checkout response.

  • d
    Scale the email service so it slows down less often.

    Scaling reduces how often the slowdown happens, but checkout still waits on the email call whenever it does — the synchronous coupling remains.

The concept

Choosing synchronous versus asynchronous communication: work the client does not need immediately should be handed off asynchronously.

Why that’s the answer

The scenario states the deciding fact: the confirmation does not need to be sent instantly. That makes it asynchronous work — hand it to a queue and return, and a consumer sends the email on its own schedule with its own retries. Checkout latency then depends only on checkout. Increasing the timeout and adding synchronous backoff retries both make the customer wait longer, not shorter, when the email service degrades. Scaling the email service treats the symptom but keeps the coupling: any future slowness still surfaces directly in checkout response times. The exam pattern is consistent: emails, order processing, and similar deferrable work are the canonical asynchronous examples, while login or a price check — where the client needs the answer now — stay synchronous.

How to reason it out
  1. Ask whether the caller needs the result of the email send before responding — it does not.
  2. Classify the email as deferrable work, which belongs on an asynchronous path.
  3. Move it behind a queue so a consumer sends it independently, with failures retried outside the checkout flow.
  4. Reject options that keep the synchronous dependency: longer timeouts, in-request retries, or scaling the dependency.

Exam tip: If the client does not need the result now, take the work off the synchronous path — hand it to a queue and respond immediately.

Application Development Patterns on AWS: Architecture, APIs and Messaging — the lesson that teaches this.

Question 4Development with AWS Services

A billing consumer processes payment messages from an SQS standard queue. After an incident in which processing slowed down, several customers were charged twice for the same order because the same message was delivered and processed more than once. What should the developer do to prevent duplicate charges?

Choose one.

  • a
    Store an idempotency key such as the order ID for each processed payment, and skip any message whose key has already been recorded. Correct

    At-least-once delivery guarantees duplicates will eventually arrive; an idempotent consumer that records processed keys makes reprocessing harmless, which is the only complete fix.

  • b
    Switch to a FIFO queue with content-based deduplication.

    FIFO deduplication suppresses duplicate sends within a short window; a message redelivered because processing outlived the visibility timeout is still delivered again, so the consumer must still be idempotent.

  • c
    Increase the queue's maxReceiveCount.

    maxReceiveCount controls how many receives happen before a message moves to the dead-letter queue; it does nothing to stop a redelivered message from being processed twice.

  • d
    Shorten the queue's visibility timeout.

    A shorter visibility timeout makes in-flight messages reappear sooner, increasing — not reducing — the chance of duplicate processing.

The concept

Idempotent consumers: queues deliver at least once, so handlers must make reprocessing a duplicate message harmless.

Why that’s the answer

SQS standard queues deliver at least once, and any redelivery — for example when slow processing outlives the visibility timeout — hands the same message to the consumer again. The durable fix is idempotency: carry a key such as the order ID with each payment, record processed keys, and on a duplicate skip the charge or return the stored result. FIFO content-based deduplication is tempting but addresses a different problem: it suppresses duplicate publishes within a deduplication window, while redelivery of an in-flight message after visibility-timeout expiry still occurs, so double-charging remains possible without an idempotent handler. Raising maxReceiveCount only changes when a failing message is shunted to the DLQ. Shortening the visibility timeout actively worsens the incident that caused the duplicates.

How to reason it out
  1. Recall that SQS standard queues are at-least-once: duplicates are guaranteed to occur eventually.
  2. Identify the failure mode: slow processing let the visibility timeout expire, so the message was redelivered.
  3. Conclude the consumer must be idempotent — record an idempotency key and skip already-processed messages.
  4. Reject FIFO deduplication (covers duplicate sends, not redelivery), maxReceiveCount (DLQ threshold), and a shorter visibility timeout (more redelivery).

Exam tip: At-least-once delivery means duplicates are inevitable — design consumers to be idempotent with a recorded idempotency key rather than trying to prevent redelivery.

Application Development Patterns on AWS: Architecture, APIs and Messaging — the lesson that teaches this.

Question 5Development with AWS Services

Hundreds of clients call an internal service that throttles under load. Each client currently retries immediately after a throttling error, and whenever the service starts to recover, the simultaneous retries push it back into overload. Which retry strategy should the developers implement in the clients?

Choose one.

  • a
    Retry with exponential backoff and jitter. Correct

    Doubling the wait gives the service breathing room, and randomizing each wait spreads clients apart so retries no longer arrive in synchronized waves.

  • b
    Retry at a fixed one-second interval until the call succeeds.

    A fixed interval keeps clients synchronized — they all retry at the same moments — and never gives the recovering service progressively more breathing room.

  • c
    Retry with exponential backoff but no randomization.

    Doubling the wait helps, but without jitter clients that failed together retry together at each doubled interval, so the synchronized waves persist.

  • d
    Increase the maximum retry attempts and keep retrying immediately.

    More immediate retries amplify the storm that is knocking the service over each time it recovers.

The concept

Exponential backoff with jitter: transient-error retries should wait progressively longer, with randomized waits so many clients do not retry simultaneously.

Why that’s the answer

The described failure — a recovering service knocked over by simultaneous retries — is exactly what jitter exists to prevent. Exponential backoff doubles the wait after each attempt so a struggling service gets breathing room, and jitter randomizes each wait so clients that failed at the same moment retry at different moments. Backoff without jitter fixes only half the problem: the waves still align at each doubled interval. A fixed interval keeps every client in lockstep, and raising the attempt count with immediate retries maximizes the thundering herd. Note that the AWS SDKs already implement backoff with jitter for throttling and 5xx errors; this pattern must also be applied in your own retry code for business operations and non-AWS calls.

How to reason it out
  1. Identify the anti-pattern: immediate, synchronized retries from many clients after throttling.
  2. Apply exponential backoff so each client waits progressively longer between attempts.
  3. Add jitter so the waits are randomized and clients desynchronize.
  4. Remember to retry only transient errors (throttling, 5xx, timeouts) — retrying a 4xx validation error just repeats the failure.

Exam tip: Retry transient errors with exponential backoff plus jitter — backoff protects the service, jitter breaks up the synchronized retry waves.

Application Development Patterns on AWS: Architecture, APIs and Messaging — the lesson that teaches this.

Question 6Development with AWS Services

A consumer application processes messages from an SQS queue. One malformed message fails processing every time it is received, so it keeps returning to the queue and being received again, delaying valid messages behind it. The team wants such messages taken out of the processing loop automatically so they can be inspected and replayed later. What should the developer configure?

Choose one.

  • a
    Add a redrive policy with a maxReceiveCount that moves the message to a dead-letter queue. Correct

    After the message has been received more than maxReceiveCount times, SQS moves it to the DLQ — out of the processing loop and available for inspection and replay.

  • b
    Enable long polling on the queue with WaitTimeSeconds set to 20.

    Long polling makes receive calls wait for messages instead of hammering an empty queue; it does nothing about a message that fails processing repeatedly.

  • c
    Increase the queue's visibility timeout.

    A longer visibility timeout only delays each reappearance; the poison message still returns to the queue forever.

  • d
    Enable content-based deduplication on the queue.

    Deduplication is a FIFO-queue feature for suppressing duplicate sends; it does not remove a message that repeatedly fails processing.

The concept

Dead-letter queues solve the poison-pill problem: a message that can never succeed is sidelined after a configured number of receives.

Why that’s the answer

A malformed payload will fail every retry forever — the classic poison pill. The purpose-built answer is a redrive policy: once the message has been received more than maxReceiveCount times, SQS moves it to the dead-letter queue, unblocking the main queue while preserving the message for inspection, fixing, and replay. Long polling is an efficiency feature for empty-queue receives and is irrelevant here. Raising the visibility timeout merely spaces out the failures. Content-based deduplication applies to FIFO queues and to duplicate publishes, not to failing messages. Production guidance goes one step further: every production queue should have a DLQ plus an alarm on its depth.

How to reason it out
  1. Recognize the poison-pill pattern: a message that fails processing on every receive and blocks the queue.
  2. Recall that SQS handles this with a redrive policy: maxReceiveCount plus a dead-letter queue.
  3. Configure the DLQ so failing messages are sidelined automatically and kept for inspection and replay.
  4. Eliminate options that tune receive behavior (long polling, visibility timeout) rather than removing the failing message.

Exam tip: A repeatedly failing message is a poison pill — configure a redrive policy with maxReceiveCount and a dead-letter queue, and alarm on DLQ depth.

Application Development Patterns on AWS: Architecture, APIs and Messaging — the lesson that teaches this.

What DVA-C02 domain 1 tests, topic by topic

The official exam guide breaks Development with AWS Services into 3 topics. The question bank follows the same split, so a weak topic shows up as a cluster of misses you can go back and read.

Published DVA-C02 practice questions per topic in Development with AWS Services
TopicWhat it coversQuestions
Develop code for applications hosted on AWSExam guide task 1.1 (guide v2.1). Architectural patterns — event-driven, microservices, monolithic, choreography vs orchestration, fanout; stateful vs stateless and tight vs loose coupling; sync vs async; fault-tolerant, resilient code (retry logic, circuit breakers, error handling); creating and extending APIs (transformations, validation, status-code overrides); messaging services, SDK/API calls, streaming data; unit tests (e.g. AWS SAM); event-driven patterns with Amazon EventBridge; development assistance with Amazon Q Developer.20
Develop code for AWS LambdaExam guide task 1.2. Function configuration — memory, concurrency, timeout, runtime, handler, layers, extensions, triggers, destinations; accessing VPC-private resources; the event lifecycle and error handling (Lambda Destinations, dead-letter queues); integrating Lambda with other AWS services; testing and performance tuning; near-real-time data processing and transformation.20
Use data stores in application developmentExam guide task 1.3. DynamoDB data modeling — high-cardinality partition keys, keys and indexing, query vs scan, strong vs eventual consistency; serialization/deserialization for persistence; managing data stores and data lifecycles; caching services; choosing specialized data stores by access pattern (e.g. Amazon OpenSearch Service).20
Total60

Revise Development with AWS Services before you drill it

Other DVA-C02 domains

Development with AWS Services: your questions

Development with AWS Services is domain 1 of the DVA-C02 exam guide and carries 32% of the scored content — the heaviest of the 4 domains. On a 65-question paper that works out to roughly 21 questions, though AWS does not publish an exact per-domain count and individual exam forms vary.

Source

The domain weight and topic list on this page come from the official DVA-C02 exam guide.