Exam Day Playbook Read this in the final hour

T-Minus Checklist

Work through this before you sit down. Check items off as you go — your progress is saved locally.

68%To pass (~41/60)
60Scored Q (+5 unscored)
105Minutes total
~19You can miss

Logistics

Mental prep

Pacing & Exam Mechanics

The two-pass rule

Pass 1: answer every question you know instantly Flag anything needing code-tracing or that feels 50/50 Pass 2: return to flagged questions with remaining time
  • ~90 seconds per question average (105 min ÷ 60-65 questions) — if you're past 2 minutes on one question, flag it and move on.
  • Code-heavy and multi-select questions disproportionately burn time. Don't let one sink your pacing.
  • Do a time check every ~15 questions — you should be roughly on pace at 25/50/75/100% through the clock.
Read twiceScenario questions often bury the deciding constraint mid-paragraph, not at the end. If two options both look valid, re-read the scenario once — the real constraint (bulk-safe? guest user? no Apex allowed? must be automatic?) is usually sitting in a sentence you skimmed.

Multi-select — the highest-trap question type

  • All-or-nothing scoring. "Choose two" means exactly two — 1 of 2 correct still marks the whole question wrong.
  • The stem always tells you the count: "(Choose two.)" or "(Choose three.)" — obey it exactly, don't over- or under-select.
  • Distractors are designed so 3-4 options all sound individually plausible. Only the exact required count satisfies every constraint in the scenario simultaneously.
  • Eliminate the definitely-wrong options first (absolute wording like "always"/"never", swapped numbers, right-feature-wrong-context), then compare what's left against the scenario's specific constraint.

Decision Trees — Quick Lookups

The core of this page

Open the one you need mid-exam. These are the "which tool/feature is correct here" judgment calls that show up constantly in scenario questions.

Flow vs Apex — which one does the exam want?
Requirement can be built with clicks — field updates, simple branching, notificationsFlow
Both Flow and Apex COULD do it (the "gray zone")Flow (declarative-first bias)
Complex error handling/rollback, heavy bulk optimization, recursive/algorithmic logicApex
HTTP callout with complex parsing/authApex
Reusable logic called from trigger + Flow + batch alikeApex service class
Needs to update a field on the SAME record only, no other DMLBefore-save (fast field update) Flow
Needs to touch OTHER records or call invocable ApexAfter-save Flow (or trigger)
Async Apex — Future vs Queueable vs Batch vs Scheduled
Simple fire-and-forget, primitives only, no need to monitor@future
Needs sObjects as params, chaining, or a monitorable Job IdQueueable (preferred/modern default)
Millions of records, needs chunked processingBatch Apex
Time/cron-based executionScheduled Apex (often kicks off Batch)
Flow action needs to call Apex@InvocableMethod — parameter is ALWAYS a List, even for "one record"
Sharing & security keyword picker
"Respect the user's record visibility"with sharing
"Explicitly bypass sharing" (elevated access needed)without sharing
"Enforce object/field permissions IN the SOQL query itself"WITH USER_MODE (or WITH SECURITY_ENFORCED)
"Sanitize records you ALREADY retrieved" before returning/using themstripInaccessible()
"Grant a guest user access to specific records"Guest User Sharing Rule ONLY — public groups/manual/Apex sharing don't apply to guests
"Add extra access without changing the whole profile"Permission Set
Data model — Lookup vs Master-Detail vs Junction
Need roll-up summary (COUNT/SUM/MIN/MAX) or cascade deleteMaster-Detail (never Lookup)
Relationship is Lookup but you still need aggregationApex trigger, record-triggered Flow, or DLRS — NOT a native roll-up
Many-to-many relationship neededJunction object with 2 Master-Detail relationships
Child record should be independently owned/shared, optional parentLookup
Self-referencing relationship on the User object (e.g. "Manager")Hierarchical relationship (User object only)
Testing — which tool for which requirement
Need fresh governor limits before the code under test runsTest.startTest()
Need async Apex (Future/Queueable/Batch/Scheduled) to actually execute in the testTest.stopTest()
Need common test data created once, fresh per test method@testSetup
Need to test as a specific user (sharing/permissions) or avoid MIXED_DMLSystem.runAs()
Code makes an HTTP calloutHttpCalloutMock + Test.setMock()
"Should tests rely on existing org data?"No — SeeAllData=false (default) is correct; create your own data
Deployment & environments picker
Deploy metadata only between related orgs, UI-drivenChange Sets
Modern, source-driven, CI/CD pipelineSalesforce DX + Scratch Orgs
Need to validate a deployment without committing changesValidation (Quick Deploy needs a prior successful Validation)
Personal dev/unit testing, small metadata footprintDeveloper or Developer Pro Sandbox (1-day refresh)
QA/UAT needing real-like data volumePartial Copy (5 days) or Full Sandbox (29 days, all data)
AppExchange distribution, protected/hidden codeManaged Package
LWC communication picker
Parent needs to pass data down / invoke child method@api property or method
Child needs to notify parent of somethingCustom Event (data lives in event.detail)
Sibling components, or cross-technology (LWC ↔ Aura ↔ Visualforce)Lightning Message Service (LMS)
Need reactive Apex data with caching@wire — Apex method needs @AuraEnabled(cacheable=true)
Button-click-triggered Apex call, needs DMLImperative Apex call (cacheable methods can't do DML)

Must-Know Numbers — One Screen

LimitSyncAsync
SOQL queries100200
SOQL rows retrieved50,00050,000
DML statements150150
DML rows per statement10,00010,000
Heap size6 MB12 MB
CPU time10 s60 s
Callouts (timeout)100 (120s)100 (120s)
@future calls5050
  • 75% org-wide code coverage to deploy (not per-class); every trigger >0%
  • 2 Master-Detail relationships max per object
  • 40 Lookup relationships max per object
  • 25 Roll-up summary fields max per object
  • 16 trigger recursion/stack depth
  • Batch Apex default scope 200, max 2000
  • Sandboxes: Dev/Dev Pro 1 day, Partial Copy 5 days, Full 29 days
  • Data Import Wizard caps at 50,000 rows
  • Scratch orgs default/max 7 days (extendable to 30)

Order of execution — the 4-bucket version

① Before-save flow → before trigger → validation rules ② Save (uncommitted) ③ After trigger → workflow/assignment → after-save flow → roll-ups → sharing recalc ④ Commit → post-commit async

Trap Patterns to Recognize

  • Absolute wording ("always", "never", "must") is usually the wrong option — Salesforce behavior is almost always conditional.
  • Swapped numbers — governor limits, refresh intervals, and field-count maximums get shuffled between options. Know the exact number, not "roughly."
  • Right feature, wrong context — a plausible tool offered where the scenario's specific constraint rules it out (e.g. Process Builder where only Apex/Flow works, or manual sharing where the record involves a guest user).
  • Syntactically-close-but-wrong Apex — wrong collection type, missing bind variable, wrong trigger context variable used in the wrong context.
  • Single-sObject SOQL with 0 rows throws QueryException — it does not return null.
  • LimitException generally can't be caught-and-continued usefully — prevent it via bulkification, don't rely on catching it.
  • Execution order across multiple triggers on the same object+event is undefined — never "alphabetical" or "creation-date order."
  • Cascade delete on Master-Detail bypasses the deleting user's normal permissions on the children.
The buried constraintWhen two answers both look valid, scan the scenario one more time for a constraint you skimmed: "must not use Apex," "for a guest user," "without changing the profile," "in a single transaction," "declaratively only." That one clause is almost always what eliminates the wrong-but-tempting option.

If You Get Stuck

  1. Eliminate first. Cross out any option with absolute wording or an obviously wrong number.
  2. Re-read the scenario once — the deciding constraint is usually buried mid-paragraph.
  3. Flag it and move on if you're past ~2 minutes. Don't let one question wreck your pacing.
  4. Trust your first instinct on the second pass unless you find a concrete reason to change it.
  5. Box-breathe (4 seconds in, 4 hold, 4 out, 4 hold) if you feel your focus slipping — then return to easy questions to rebuild momentum.
  6. Remember the math: you can miss ~19 of 60 and still pass. One hard question is not the exam.
Last thought before you startYou've already done the studying. This page is just to keep your judgment sharp for the next 105 minutes. Go get the 68%.