Salesforce高级开发面试题

Salesforce高级开发面试题

一、基础平台能力

1. 简述Salesforce安全模型完整体系

答案

Salesforce安全模型由6层权限从上至下控制数据访问:

  1. 组织级访问:登录IP限制、登录时段、双因素认证;
  2. 对象权限(Profile/权限集):控制对象CRUD、字段级可见/编辑;
  3. 记录级共享:角色层级、共享规则、团队共享、手动共享、Apex共享;
  4. 字段级安全:字段集、Profile字段可见性,屏蔽敏感字段;
  5. FLS字段级校验 :代码中stripInaccessible()强制校验字段权限;
  6. 分享/数据权限上下文 :运行用户、系统上下文、with sharing/without sharing类修饰符。
    核心:Profile管能看到什么对象 ,共享规则管能看到哪条数据

2. Apex Governor Limits是什么?列举高频限制及优化方案

答案

Governor Limits是Salesforce多租户隔离的资源限制,防止单用户占用全部平台算力,高频限制:

  1. SOQL单次最多查询5万条;单次事务最多100条SOQL;
    优化:批量查询、外层循环查、子查询聚合,避免循环内写SOQL;
  2. DML单次事务150条;
    优化:集合批量插入/更新,循环外组装List;
  3. 异步Apex、触发器单独限制;
  4. 堆内存、CPU执行时间限制。
    通用优化:批量处理框架Batch Apex处理百万级数据;Queueable拆分高并发任务。

3. with sharing / without sharing 区别,什么场景使用

答案

  • with sharing:遵循当前执行用户的共享规则,业务查询类、报表逻辑必须使用,保证数据权限合规;
  • without sharing:忽略记录共享规则,仅遵循Profile对象权限;
    适用场景:后台数据同步、跨用户数据统计、系统批量清理任务;
    ⚠️ 注意:触发器默认without sharing;类继承时子类会继承父类共享声明。

二、全栈开发(Apex + VF + LWC,JD核心技能)

1. LWC、Aura、Visualforce三者选型差异,新项目为什么优先LWC

答案

  1. Visualforce:基于服务器渲染,页面刷新卡顿,老项目维护使用,不推荐新开发;
  2. Aura:早期前端框架,组件层级复杂、加载慢,官方停止新特性迭代;
  3. LWC(Lightning Web Component):原生Web标准(ES6、Web Component),轻量、加载速度快、浏览器原生支持;
    选型规则:
  • 全新功能:统一LWC;
  • 遗留老页面:保留VF/Aura逐步迁移;
  • 高性能表单、列表、弹窗组件全部使用LWC。

2. LWC父子组件传值、通信方式有几种

答案

  1. 父→子:@api装饰器,子组件接收父传入参数;
  2. 子→父:自定义事件this.dispatchEvent(),父组件监听onXXX事件;
  3. 跨无关联组件:使用Lightning Message Service(LMS)消息总线;
  4. 全局缓存:localStorage/sessionStorage(轻量临时数据);
  5. Apex后台:统一查询共享数据。

3. 触发器执行顺序,触发器最佳实践

答案

标准执行顺序:

  1. 加载原始记录;2. 执行系统校验;3. before触发器;4. 执行DML更新数据库;
  2. 加载更新后数据;6. after触发器;7. 分配共享规则;8. 工作流/流程构建器;9. 后流程触发器。
    最佳实践:
  3. 单对象仅写1个触发器,拆分Handler业务类,分离触发器与业务逻辑;
  4. 避免触发器写复杂逻辑,大量计算移至Batch/Queueable;
  5. 批量处理,不使用循环SOQL/DML;
  6. 递归控制:静态布尔标记防止触发器死循环。

三、系统集成(REST/SOAP API,对接ERP/OA场景)

1. Salesforce调用外部系统REST接口有几种方式,区别

答案

  1. Apex Callout:HttpRequest/HttpResponse,灵活适配复杂请求,适合动态参数;
  2. External Services外部服务:导入OpenAPI规范,自动生成Apex封装类,无需手写解析JSON;
  3. Flow外部操作:无代码集成,简单接口快速对接;
    限制:所有Callout有超时限制,事务内同步Callout次数有限;
    高并发方案:使用Queueable异步调用外部接口,避免阻塞主事务。

2. 外部系统推送数据到Salesforce,如何保证接口安全与幂等

答案

安全方案:

  1. 使用Named Credential命名凭证存储账号密钥,代码不硬编码账号密码;
  2. IP白名单限制外部系统服务器地址;
  3. OAuth2.0/JWT鉴权,拒绝明文账号密码传参;
    幂等(防止重复推送重复建单):
  4. 外部传入唯一业务单号作为外部ID(External Id);
  5. 使用upsert操作,存在则更新、不存在则新建;
  6. 接口接收后记录处理日志,重复单号直接返回成功,不执行DML。

3. SOAP与REST集成分别适用什么场景

答案

  • SOAP:传统ERP、老旧财务系统,强规范XML报文,适合金融、财务有严格报文校验的场景;
  • REST:互联网平台、OA、SaaS系统,JSON轻量报文,开发调试简单,新项目优先REST。

四、性能优化&海量数据场景(JD专项要求)

1. 百万级存量数据清洗,用什么方案,步骤是什么

答案

使用Batch Apex批量框架,核心步骤:

  1. Database.QueryLocator分批拉取数据,单次上限5万条;
  2. execute方法内批量处理、DML分批次提交;
  3. finish方法执行收尾日志、通知、汇总统计;
  4. 搭配Async SOQL规避查询限制;
    优化点:开启并行批处理,调整批次大小200-1000条,平衡DML限制与执行效率。

2. SOQL查询慢怎么排查优化

答案

排查步骤:

  1. 使用Query Plan查看执行计划,无索引字段全表扫描是核心瓶颈;
    优化手段:
  2. 过滤条件字段创建自定义索引(External Id、筛选高频字段);
  3. 避免通配符%开头模糊查询;
  4. 减少不必要子查询、大字段(富文本、附件)查询;
  5. 聚合场景使用聚合SOQL,不在代码循环做统计;
  6. 高频静态查询结果缓存至Cache。

五、DevOps & SF DX(持续交付要求)

1. Salesforce DX的作用,与传统开发模式区别

答案

SF DX是Salesforce现代化开发工具链:

  1. 本地源码化:将Metadata元数据转为本地文件,支持Git版本控制;
  2. Scratch Org临时沙箱:快速创建干净测试环境,用于单元测试;
  3. 一键部署:sfdx命令推送/拉取元数据,适配CI/CD流水线;
    传统模式:直接在生产/测试沙箱点击部署,无本地源码,版本追溯困难,无法自动化发布。

2. 简单描述一套Salesforce CI/CD流水线流程

答案

  1. 开发本地使用SF DX编写代码,提交至Git仓库;
  2. Git触发流水线,自动创建Scratch Org;
  3. 流水线自动部署代码、执行全部Apex单元测试;
  4. 测试通过,自动部署至测试沙箱;
  5. 人工验收后,手动触发部署至预发/生产环境;
  6. 生产部署后自动执行冒烟测试,输出部署报告。

六、业务架构&综合场景题(高级开发/技术负责人必问)

1. 业务需求:ERP订单实时同步至Salesforce,高并发、不允许丢单,给出完整技术方案

参考答案

  1. 鉴权层:ERP通过JWT OAuth接口推送,IP白名单+外部唯一单号幂等upsert;
  2. 接收层:自定义REST Apex接口,仅做参数校验,复杂逻辑放入Queueable异步任务,快速响应ERP避免超时;
  3. 数据层:External Id绑定ERP订单号,upsert创建/更新订单,关联客户产品主数据;
  4. 异常兜底:调用失败、数据校验错误存入自定义错误日志对象;定时Batch重试失败单据;
  5. 监控:平台事件记录同步状态,报表监控失败率,异常邮件告警;
  6. 性能:Queueable分队列隔离高并发,拆分事务避免触发Governor Limits。

2. 单元测试覆盖率要求,怎么写高质量测试用例

答案

Salesforce生产部署强制覆盖率≥75%;

高质量用例要点:

  1. 覆盖正常流程、边界数据、异常报错场景;
  2. 模拟不同Profile、共享权限用户执行,校验FLS/共享规则生效;
  3. 批量场景构造上千条测试数据,验证触发器/Batch批量逻辑;
  4. 隔离外部Callout,使用Mock模拟第三方接口返回,不依赖真实系统;
  5. 避免仅执行不校验,每条逻辑都有System.assert断言验证结果。

七、加分项相关面试题(认证/企业项目/敏捷)

1. 你持有哪些Salesforce认证,Application Architect核心考察什么能力

答案

常见认证:PDI/PDII开发者、LWC Specialist、Application Architect;

架构师核心考察:多系统集成方案、数据模型设计、大规模性能治理、安全权限整体方案、企业级交付流程设计,不局限单一代码开发。

2. 敏捷Scrum开发在Salesforce项目如何落地

答案

  1. 2周迭代,需求拆分为用户故事,区分配置/开发任务;
  2. 每日站会同步SF开发、集成、接口进度;
  3. 迭代结束在测试沙箱演示验收;
  4. 迭代末复盘性能问题、部署卡点、集成对接阻塞点;
  5. 需求变更走变更评审,避免中途大幅修改元数据结构。

八、HR综合软问题

1. 业务部门提出不合理、无法平台实现的需求,你怎么处理

答案

  1. 先梳理业务真实诉求,区分"表面需求"和"底层业务目标";
  2. 输出2套方案:①折中平台原生实现方案;②第三方集成替代方案,附带成本、性能、工期对比;
  3. 同步产品、业务负责人说明平台底层限制(Governor、权限机制);
  4. 若短期无法实现,给出临时过渡方案+长期迭代规划。

2. 同时对接ERP、OA两套系统集成,多任务并行如何排期

答案

  1. 拆分依赖关系:主数据客户集成优先,订单单据依赖客户主数据后置;
  2. 隔离两套集成的Queueable/批处理队列,避免资源抢占;
  3. 同步两套外部系统对接人,错开联调时间窗口;
  4. 开发、单元测试、联调、生产分阶段里程碑,每日同步阻塞风险。
相关推荐
Zhou1411361 小时前
Java常见面试题7
java·开发语言
云栖梦泽在2 小时前
在线 IP 检测工具能看到哪些信息?从公网 IP、ASN 到浏览器环境一文讲清
网络·网络协议·tcp/ip
带刺的坐椅2 小时前
代码审查 Agent Harness 实战:AI 自动 Code Review
java·ai·llm·agent·solon·soloncode·harness
可儿·四系桜2 小时前
经纬度转北斗网格位置码(非极地区域,编码篇)
java·物联网
唐青枫2 小时前
Java ActiveMQ 实战指南:从 JMS 队列、主题到 Spring Boot 消息处理
java
码兄科技9 小时前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
折哥的程序人生 · 物流技术专研10 小时前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
小明bishe1810 小时前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计