SALESFORCE CERTIFICATION
Certified Platform Developer II Practice Exam
Exam Number: 3705 | Last updated 14-Apr-26 | 2283+ questions across 5 vendor-aligned objectives
The Certified Platform Developer II exam is the advanced developer credential in the Salesforce ecosystem. It targets experienced developers who architect complex solutions involving advanced Apex design patterns, Lightning component frameworks, and enterprise integration strategies.
The largest portion of the exam — 28% — focuses on Advanced Apex and Salesforce APIs, covering design patterns, custom web services, REST/SOAP callouts, and platform events. Roughly 22% of the questions address user interface development, covering advanced LWC patterns, Aura-to-LWC migration, and component communication. Process Automation at Scale carries the heaviest weight at 20%, covering async Apex patterns, bulk processing, and governor limit optimization. These high-weight domains should anchor your study plan and receive the deepest attention.
Additional sections test your breadth across the platform. A full 15% of the exam targets testing and debugging, which spans mocking frameworks, test data factories, and performance profiling. At 15%, Integration Architecture represents the single largest exam section, which spans middleware patterns, event-driven architecture, and external data access. Do not overlook these sections — the exam regularly weaves them into multi-concept scenarios.
Every answer links to the source. Each explanation below includes a hyperlink to the exact Salesforce documentation page the question was derived from. PowerKram is the only practice platform with source-verified explanations. Learn about our methodology →
545
practice exam users
94.3%
satisfied users
91.4%
passed the exam
4.7/5
quality rating
Test your Certified Platform Developer Ii knowledge
10 of 2283+ questions
Question #1 - Design and deploy async Apex patterns, bulk processing, and governor limit optimization to eliminate repetitive manual work and enforce consistent business logic across teams
A senior developer is designing a service layer for a complex Salesforce application that manages insurance claims. Multiple triggers, flows, and batch jobs all need to create and update Claim records through the same validation and processing logic.
Which design pattern should the developer implement?
A) A Service Layer pattern with a centralized ClaimService class that encapsulates all business logic
B) A Singleton pattern that caches Claim records in a static variable
C) A Factory pattern that generates different Claim record types dynamically
D) A Decorator pattern that wraps each DML operation with additional logic
Show solution
Correct answers: A – Explanation:
The Service Layer pattern centralizes business logic in dedicated service classes, ensuring consistency across all callers. The Singleton pattern manages instances. Decorator adds behavior to objects. Factory is for object creation. Source: Salesforce Docs: Apex Developer Guide
Question #2 - Design and deploy async Apex patterns, bulk processing, and governor limit optimization to eliminate repetitive manual work and enforce consistent business logic across teams
A developer needs to build an integration where Salesforce sends real-time notifications to an external ERP system whenever a high-value Order is created.
Which asynchronous pattern should the developer use to ensure reliability?
A) A Queueable Apex class with an HttpRequest, implementing retry logic and chaining on failure
B) A Platform Event published from a flow, consumed by an external subscriber
C) A scheduled batch job that queries new Orders every 5 minutes
D) A @future(callout=true) method called from the Order trigger
Show solution
Correct answers: A – Explanation:
Queueable Apex supports callouts, complex processing, and can chain additional jobs for retry logic. @future methods cannot be chained. Platform Events shift responsibility to the external system. Batch jobs introduce unacceptable latency. Source: Trailhead: Asynchronous Apex
Question #3 - Design and deliver advanced LWC patterns, Aura-to-LWC migration, and component communication to deliver intuitive, responsive interfaces that drive user adoption and productivity
A developer is migrating a complex Aura component to a Lightning Web Component. The Aura component uses application events to communicate with sibling components.
How should the developer handle cross-component communication in the LWC architecture?
A) Pass callback functions through the component hierarchy
B) Use the Lightning Message Service (LMS) with a message channel for pub-sub communication
C) Import the Aura application event library into the LWC
D) Use a shared static JavaScript module to store and broadcast state
Show solution
Correct answers: B – Explanation:
Lightning Message Service provides publish-subscribe communication between LWCs, Aura components, and Visualforce pages across the DOM hierarchy. Aura event libraries cannot be imported into LWC. Shared static modules break encapsulation. Callback passing does not work for unrelated components. Source: Salesforce Docs: LWC Developer Guide
Question #4 - Test and harden mocking frameworks, test data factories, and performance profiling to catch issues before they reach production and maintain code quality across releases
A developer is creating a test data factory for a complex org where test methods need Account records with related Contacts, Opportunities, and Cases. Different tests need different combinations.
Which testing pattern should the developer implement?
A) Static resource CSV files loaded with Test.loadData() for each scenario
B) A Test Data Factory class with builder methods that accept parameters for flexible record creation
C) A @TestSetup method that creates all possible record combinations upfront
D) Individual test methods that each create their own complete data set
Show solution
Correct answers: B – Explanation:
A Test Data Factory with builder methods provides flexible, parameterized test data creation while keeping code DRY. @TestSetup creates a fixed set that may not cover all scenarios. Individual creation per test leads to duplication. Static resources are inflexible. Source: Salesforce Docs: Apex Developer Guide
Question #5 - Design and deploy async Apex patterns, bulk processing, and governor limit optimization to eliminate repetitive manual work and enforce consistent business logic across teams
A developer notices that a record-triggered flow and an Apex trigger both fire on the same object during an update, causing unexpected field overwrites and recursion.
How should the developer prevent this recursion?
A) Disable the flow and consolidate all logic into the Apex trigger
B) Use a static Boolean variable in the Apex trigger handler to prevent re-entry, and ensure the flow runs in the correct trigger context
C) Set the flow to run only on create, leaving the trigger for updates
D) Move the flow logic into a @future method to execute asynchronously
Show solution
Correct answers: B – Explanation:
A static Boolean variable prevents recursive trigger execution within the same transaction. Combined with understanding the order of execution, both automation paths can work without conflicting. Disabling the flow loses declarative logic. @future methods cannot prevent same-transaction recursion. Splitting by DML type is artificial. Source: Salesforce Docs: Apex Developer Guide
Question #6 - Wire up and maintain design patterns, custom web services, and REST/SOAP callouts to keep data flowing reliably between Salesforce and external systems with minimal latency
A developer is building a custom REST API endpoint that creates and links multiple related records (Account, Contact, and Opportunity) in a single request.
How should the developer ensure data integrity across all three record creations?
A) Use Platform Events to create each record independently
B) Use Database.insert() with allOrNone=true for each object sequentially
C) Insert each record in a separate @future method to isolate failures
D) Wrap all DML operations with explicit savepoints and rollback on failure
Show solution
Correct answers: D – Explanation:
Database savepoints allow rolling back all DML if any insert fails. Sequential allOrNone inserts without savepoints could leave orphaned records. @future methods run in separate transactions. Platform Events provide eventual consistency, not transactional integrity. Source: Salesforce Docs: Apex Developer Guide
Question #7 - Design and deploy async Apex patterns, bulk processing, and governor limit optimization to eliminate repetitive manual work and enforce consistent business logic across teams
A developer is optimizing a Batch Apex class that processes 2 million Contact records. The current implementation uses a batch size of 200 and takes 10 hours.
What optimization should the developer consider?
A) Replace Batch Apex with a Queueable chain
B) Use Database.QueryLocator with an optimized SOQL query and consider increasing batch size within governor limits
C) Switch to synchronous Apex to avoid batch processing overhead
D) Increase the batch size to 2,000 to reduce execute invocations
Show solution
Correct answers: B – Explanation:
Optimizing the QueryLocator’s SOQL query and increasing batch size reduces both query time and execute calls. Batch sizes above 2,000 are not supported. Queueable is not designed for 2M records. Synchronous Apex hits governor limits immediately. Source: Trailhead: Asynchronous Apex
Question #8 - Wire up and maintain design patterns, custom web services, and REST/SOAP callouts to keep data flowing reliably between Salesforce and external systems with minimal latency
A developer needs to implement a feature where changes to a custom Pricing object should be immediately reflected in an external dashboard without the external system polling Salesforce.
Which technology should the developer use?
A) A Visualforce page that the external system scrapes for updates
B) Platform Events published from an Apex trigger, with the external system subscribing via Pub/Sub API
C) Outbound Messages configured in a workflow rule
D) A scheduled Apex job that pushes changes every minute
Show solution
Correct answers: B – Explanation:
Platform Events provide real-time, event-driven architecture. The external system subscribes via Pub/Sub API for immediate notification. Outbound messages are limited and use older SOAP delivery. Scheduled jobs introduce latency. Page scraping is unreliable. Source: Trailhead: Platform Events
Question #9 - Design and deploy async Apex patterns, bulk processing, and governor limit optimization to eliminate repetitive manual work and enforce consistent business logic across teams
A developer inherits a utility class with DML methods called from different contexts. These methods are difficult to test without side effects.
Which refactoring approach should the developer take to improve testability?
A) Apply dependency injection by extracting DML operations into an interface that can be mocked
B) Convert all DML methods to @future to isolate them
C) Add @IsTest(SeeAllData=true) to all test classes
D) Move all DML logic into triggers
Show solution
Correct answers: A – Explanation:
Dependency injection allows replacing actual DML with mock implementations during testing. SeeAllData creates fragile tests. @future methods add complexity without improving testability. Consolidating into triggers does not solve testability. Source: Salesforce Docs: Apex Developer Guide
Question #10 - Wire up and maintain design patterns, custom web services, and REST/SOAP callouts to keep data flowing reliably between Salesforce and external systems with minimal latency
A developer is tasked with creating a custom SOAP web service on Salesforce that must handle requests from an external system sending XML payloads with customer data.
How should the developer expose this functionality?
A) Create an @RestResource class with @HttpPost method
B) Use a Connected App with OAuth to expose standard SOAP API endpoints
C) Create a global class with a webservice static method that accepts the XML parameters
D) Build an Apex trigger that listens for inbound SOAP requests
Show solution
Correct answers: C – Explanation:
Custom SOAP web services use the webservice keyword on a global class with static methods, which automatically generates a WSDL. @RestResource is for REST endpoints. Connected Apps manage authentication but do not create custom endpoints. Triggers cannot listen for inbound web service requests. Source: Salesforce Docs: Apex Developer Guide
Get 2283+ more questions with source-linked explanations
Every answer traces to the exact Salesforce documentation page — so you learn from the source, not just memorize answers.
Exam mode & learn mode · Score by objective · Updated 14-Apr-26
Learn more...
What the Certified Platform Developer Ii exam measures
- Wire up and maintain design patterns, custom web services, and REST/SOAP callouts to keep data flowing reliably between Salesforce and external systems with minimal latency
- Design and deploy async Apex patterns, bulk processing, and governor limit optimization to eliminate repetitive manual work and enforce consistent business logic across teams
- Design and deliver advanced LWC patterns, Aura-to-LWC migration, and component communication to deliver intuitive, responsive interfaces that drive user adoption and productivity
- Test and harden mocking frameworks, test data factories, and performance profiling to catch issues before they reach production and maintain code quality across releases
- Integrate and monitor middleware patterns, event-driven architecture, and external data access to keep data flowing reliably between Salesforce and external systems with minimal latency
How to prepare for this exam
- Review the official exam guide and Apex developer guide for final preparation
- Complete the Platform Developer II trail on Trailhead, with special focus on advanced Apex and integration modules
- Build a complex integration project in a scratch org — implement REST services, callouts with mock testing, and platform event consumers
- Participate in a Salesforce implementation project that involves custom code architecture, or refactor an existing codebase using enterprise patterns
- Tackle the heaviest-weighted objective first — Advanced Apex and Salesforce APIs demands the most preparation
- Use PowerKram’s learn mode to work through advanced scenario questions with detailed walkthroughs
- Test your readiness with PowerKram’s exam mode to identify remaining knowledge gaps
Career paths and salary outlook
Advanced developers command top-tier salaries and often move into architectural or leadership roles:
- Senior Salesforce Developer — $130,000–$175,000 per year, designing enterprise solutions with advanced Apex patterns (Glassdoor salary data)
- Salesforce Architect — $155,000–$210,000 per year, defining technical strategy and overseeing large implementations (Indeed salary data)
- Salesforce Engineering Manager — $160,000–$200,000 per year, leading developer teams and driving technical standards (Glassdoor salary data)
Official resources
Follow the Platform Developer II Learning Path on Trailhead. The official exam guide contains the full objective breakdown and recommended resources.
