Honeywell Salesforce Developer Interview Questions

1. How do you debug an integration if any failure occurs?
2. Best practices in SQL queries
3. Querying Product & Product Line data
4. What is the Maximum number of Batch classes can be created in an org?
5. What is the maximum number of triggers can be created on an object?
6. Actual difference between Batch vs Queueable
7. Asset Object scenario:
▪ India region → show only Hardware
▪ China region → show only Software
8. How to enforce this during record creation?
9. Asset Object scenario:
▪ User1 → should see only Software records
▪ User2 → should see only Hardware
10.How to achieve?
11. Difference between View vs View All
12.Difference between View All vs View All Data
13.Difference between Modify All vs Modify All Data
14. If a user is deactivated → how to reactivate, and how to check why they were deactivated?
15. Common errors found during code reviews
16. In a Community profile → if a user cannot see an Account, how do you debug?

1.How do you debug an integration if any failure occurs?

  • Check Debug Logs: Enable logs for the integration user and review Apex logs.
  • Monitor Integration User: Verify API limits, authentication errors, and permission sets.
  • Check Integration Tool Logs: (Mulesoft, Dell Boomi, Informatica, etc.) for detailed failure points.
  • Use Platform Events / Error Logs: Implement custom error logging tables or platform events.
  • Retry Mechanism: Ensure the integration has a retry/queue system for transient failures.

Best Practice: Always centralize logging & use correlation IDs to track requests end-to-end.

2.Best practices in SQL queries (SOQL in Salesforce)

Use bind variables instead of hardcoded values.

Select only required fields (avoid SELECT *).

Use WHERE filters with indexed fields to improve performance.

Avoid nested queries inside loops.

Use batching for large data sets (Batch Apex / QueryMore).

3.Querying Product & Product Line data

Example:

SELECT Id, Name, ProductCode, Family
FROM Product2
WHERE IsActive = TRUE
  • Product Line: Typically a custom field or Family field categorizing products.
  • Join with PricebookEntry if you need price details:

SELECT Id, Product2.Name, Product2.Family, UnitPrice FROM PricebookEntry WHERE Pricebook2Id = ‘<Standard_Pricebook_ID>’

Maximum number of Batch classes in an org

  • No hard limit on how many batch classes you can create.
  • But 5 concurrent batch jobs per org (can be increased to 100 with Salesforce support).

Maximum number of triggers on an object

Best Practice: Keep one trigger per object and use a Trigger Handler framework to avoid recursion and confusion.

Technically, up to 50 triggers per object.

Actual difference between Batch vs Queueable

  • Batch Apex:
    • Handles large volumes (up to 50M records).
    • Breaks into batches of 200 records.
    • Supports stateful processing.
    • Scheduled.
  • Queueable Apex:
    • Lightweight, good for chaining jobs.
    • Handles smaller async jobs.
    • Simpler than Batch Apex, but limited (can enqueue another Queueable only once).

🔹 Asset Object scenario (Record Creation restriction)

Requirement:

  • India region → only Hardware.
  • China region → only Software.

Solution Options:

  1. Validation Rule:
AND(
 ISPICKVAL(Region__c, "India"),
 ISPICKVAL(Type__c, "Software")
)

→ Prevent creation.

  1. Record Types + Page Layouts: Assign region-specific record types with pre-filtered values.

🔹 Asset Object scenario (Record Visibility restriction)

Requirement:

  • User1 → only Software.
  • User2 → only Hardware.

Solution Options:

  1. Criteria-Based Sharing Rules: Share records based on Type field.
  2. Apex Managed Sharing: For complex scenarios.
  3. Row-Level Security via Custom Permission + Criteria.

🔹 Difference between View vs View All

  • View (Object Permission): User can see records they own or are shared with them.
  • View All: User can see all records of that object, ignoring sharing rules.

🔹 Difference between View All vs View All Data

  • View All: Object-level (all records of a specific object).
  • View All Data: Org-level (all records of all objects).

🔹 Difference between Modify All vs Modify All Data

  • Modify All: On a single object (Read, Edit, Delete all records of that object).
  • Modify All Data: Across the org (Admin-level permission).

🔹 If a user is deactivated → how to reactivate & check reason

  • Go to Setup → Users → Select user → Activate.
  • If grayed out, check:
    • License availability.
    • Permission set group conflicts.
    • Login history to see last activity.
    • Audit logs for deactivation reason.

🔹 Common errors found during code reviews

  • SOQL queries inside loops.
  • Hardcoded IDs (instead of using Custom Metadata/Settings).
  • Missing null checks → NullPointerExceptions.
  • Not using bulkification (no handling for >200 records).
  • Improper error handling/logging.
  • Failing to use with sharing keyword where required.

🔹 Community profile debugging (Account not visible)

  1. Check Sharing settings for Accounts.
  2. Verify if user has correct role & profile permission.
  3. Check Sharing rules (external vs internal users).
  4. Verify Account record ownership.
  5. Ensure Organization-Wide Default (OWD) is not too restrictive.

1️⃣ Difference between with sharing and without sharing in Apex (with real-time scenario).
2️⃣ Governor limits you’ve hit in a project — how did you fix it?
3️⃣ How to handle bulk record operations in Apex? (Show code if asked).
4️⃣ Write a query to get Accounts with latest Opportunities.
🔹 LWC & Aura
5️⃣ How do you handle parent → child communication in LWC?
6️⃣ How do you improve LWC performance?
7️⃣ Explain a scenario where you migrated Aura to LWC.
8️⃣ How do you use wire adapters vs imperative calls?
🔹 Integration & Async Apex
9️⃣ Difference between Queueable, Batch, and Future — when do you use each?
🔟 Explain real-time REST integration you built.
1️⃣1️⃣ How do you handle callout from a trigger?
🔹 Flows & Automation
1️⃣2️⃣ Difference between Record-Triggered Flow and Before-Save Flow with example.
1️⃣3️⃣ Have you replaced Process Builder / Workflow with Flows in projects? Explain.
🔹 Deployment & Best Practices
1️⃣4️⃣ What’s your strategy for CI/CD deployment in Salesforce?
1️⃣5️⃣ How do you ensure test class coverage with bulk data & negative scenarios?

Apex

1️⃣ Difference between with sharing and without sharing in Apex

  • with sharing: Enforces the org’s sharing rules. Users see only the records they are allowed to access.
  • without sharing: Ignores sharing rules; class runs in system context and can access all records.

Scenario:

  • Suppose a Sales Manager should see only Accounts they own.
  • If you write an Apex class without sharing, they’ll see all Accounts, even those owned by other managers.
  • If you write with sharing, they’ll see only their Accounts, respecting role hierarchy & sharing rules.

Best Practice: Always use with sharing unless there’s a specific admin/system requirement.


2️⃣ Governor limits you’ve hit in a project — how did you fix it?

Example: Hit the “Too many SOQL queries: 101” limit.

  • Issue: Query written inside a loop.
  • Fix: Moved queries outside loops, used collections (Set/Map) to query data in bulk.

Other limits I’ve encountered:

  • DML rows exceeded (fixed using Batch Apex).
  • Heap size limit (fixed by selective queries & pagination).
  • CPU time exceeded (fixed with asynchronous processing).

3️⃣ How to handle bulk record operations in Apex?

  • Always bulkify code: handle multiple records at once.
  • Avoid SOQL/DML inside loops.
  • Use Maps/Sets to store queried data.

Example: Update related contacts when accounts are updated.

trigger UpdateContacts on Account(after update) {
    Set<Id> accIds = new Set<Id>();
    for(Account acc : Trigger.new) {
        accIds.add(acc.Id);
    }
    List<Contact> cons = [SELECT Id, AccountId FROM Contact WHERE AccountId IN :accIds];
    for(Contact con : cons) {
        con.Description = 'Parent Account Updated';
    }
    update cons;
}

4️⃣ Write a query to get Accounts with latest Opportunities

Use subquery with ORDER BY and LIMIT:

SELECT Id, Name,
   (SELECT Id, Name, Amount, CloseDate
    FROM Opportunities
    ORDER BY CloseDate DESC
    LIMIT 1)
FROM Account

🔹 LWC & Aura

5️⃣ Parent → Child Communication in LWC

  • Use @api property in child component.
  • Parent passes value via HTML attribute.

Example:

<!-- Parent -->
<c-child message="Hello Child"></c-child>
// Child.js
import { api, LightningElement } from 'lwc';
export default class Child extends LightningElement {
   @api message;
}

6️⃣ How do you improve LWC performance?

  • Use Lightning Data Service (LDS) instead of SOQL when possible.
  • Cache frequently used data with @wire and @AuraEnabled(cacheable=true).
  • Use lazy loading for heavy components.
  • Minimize DOM re-renders by tracking only required fields.
  • Avoid nested loops in JS.

7️⃣ Scenario: Migrated Aura → LWC

  • Case: Custom Opportunity page built in Aura with modals & data tables.
  • Migrated to LWC for performance and modern UI.
  • Benefits: Faster rendering, reusable components, better testing.
  • Approach: Broke Aura bundle into multiple LWCs (datatable, modal, filter component) → used composition.

8️⃣ Wire adapters vs Imperative calls

  • Wire adapters (@wire): For reactive, cached, auto-updating data. Example: display Accounts list.
  • Imperative calls: For actions triggered by user events (e.g., button click, form submit).

🔹 Integration & Async Apex

9️⃣ Difference between Queueable, Batch, and Future

  • Future:
    • Simple async processing.
    • No chaining, limited features.
    • Example: Send email after record update.
  • Queueable:
    • Supports chaining, complex logic.
    • Can handle larger payloads.
    • Example: Call external API after DML.
  • Batch:
    • For large volumes (up to 50M).
    • Executes in chunks of 200.
    • Example: Clean old data nightly.

🔟 Real-time REST integration you built

  • Scenario: Integrated Salesforce with Payment Gateway.
  • Flow:
    1. User clicks “Pay” → Apex makes REST callout to gateway.
    2. Gateway returns transaction status → stored in custom object.
    3. If failure → user gets error message.
  • Handled retries, callout limits, and async processing via Queueable jobs.

1️⃣1️⃣ How do you handle callout from a trigger?

  • Direct callouts from triggers are not allowed.
  • Solution:
    • Put callout logic in Future/Queueable Apex.
    • Trigger enqueues async job.

Example:

@future(callout=true)
public static void callExternal(Id accId) {
    Account acc = [SELECT Name FROM Account WHERE Id = :accId];
    // HTTP callout here
}

🔹 Flows & Automation

1️⃣2️⃣ Difference between Record-Triggered Flow and Before-Save Flow

  • Before-Save Flow:
    • Runs before DML commit.
    • Super fast (no extra DML).
    • Example: Auto-populate field values before save.
  • After-Save (Record-Triggered) Flow:
    • Runs after record commit.
    • Can perform actions like sending emails, creating related records, or making callouts.

1️⃣3️⃣ Replacing Process Builder / Workflow with Flows

  • Scenario: Old Process Builder was sending email + updating related records.
  • Migrated to Flow because it’s faster and scalable.
  • Used before-save flow for field updates and after-save flow for notifications.
  • Benefits: Reduced execution time, fewer limits hit, future-proof (as PB/WF are deprecated).

🔹 Deployment & Best Practices

1️⃣4️⃣ Strategy for CI/CD Deployment in Salesforce

  • Use Source Control (Git) as the single source of truth.
  • Branching Strategy: Feature → Dev → QA → UAT → Main.
  • CI/CD Tools: GitHub Actions, Jenkins, or Copado for Salesforce deployments.
  • Automated Testing: Run Apex tests on every push.
  • Validation Deployments: Before full deployment.
  • Static Code Analysis: PMD, CodeScan to enforce quality.

1️⃣5️⃣ Ensuring Test Class Coverage with Bulk & Negative Scenarios

  • Cover both positive & negative cases.
  • Write tests with bulk data (200+ records).
  • Use Test.startTest() and Test.stopTest() to test async jobs.
  • Example negative tests:
    • Invalid field values.
    • User with insufficient permissions.
    • Null data handling.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top