Salesforce高级开发面试题
一、基础平台能力
1. 简述Salesforce安全模型完整体系
答案
Salesforce安全模型由6层权限从上至下控制数据访问:
- 组织级访问:登录IP限制、登录时段、双因素认证;
- 对象权限(Profile/权限集):控制对象CRUD、字段级可见/编辑;
- 记录级共享:角色层级、共享规则、团队共享、手动共享、Apex共享;
- 字段级安全:字段集、Profile字段可见性,屏蔽敏感字段;
- FLS字段级校验 :代码中
stripInaccessible()强制校验字段权限; - 分享/数据权限上下文 :运行用户、系统上下文、with sharing/without sharing类修饰符。
核心:Profile管能看到什么对象 ,共享规则管能看到哪条数据。
2. Apex Governor Limits是什么?列举高频限制及优化方案
答案
Governor Limits是Salesforce多租户隔离的资源限制,防止单用户占用全部平台算力,高频限制:
- SOQL单次最多查询5万条;单次事务最多100条SOQL;
优化:批量查询、外层循环查、子查询聚合,避免循环内写SOQL; - DML单次事务150条;
优化:集合批量插入/更新,循环外组装List; - 异步Apex、触发器单独限制;
- 堆内存、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
答案
- Visualforce:基于服务器渲染,页面刷新卡顿,老项目维护使用,不推荐新开发;
- Aura:早期前端框架,组件层级复杂、加载慢,官方停止新特性迭代;
- LWC(Lightning Web Component):原生Web标准(ES6、Web Component),轻量、加载速度快、浏览器原生支持;
选型规则:
- 全新功能:统一LWC;
- 遗留老页面:保留VF/Aura逐步迁移;
- 高性能表单、列表、弹窗组件全部使用LWC。
2. LWC父子组件传值、通信方式有几种
答案
- 父→子:
@api装饰器,子组件接收父传入参数; - 子→父:自定义事件
this.dispatchEvent(),父组件监听onXXX事件; - 跨无关联组件:使用Lightning Message Service(LMS)消息总线;
- 全局缓存:
localStorage/sessionStorage(轻量临时数据); - Apex后台:统一查询共享数据。
3. 触发器执行顺序,触发器最佳实践
答案
标准执行顺序:
- 加载原始记录;2. 执行系统校验;3. before触发器;4. 执行DML更新数据库;
- 加载更新后数据;6. after触发器;7. 分配共享规则;8. 工作流/流程构建器;9. 后流程触发器。
最佳实践: - 单对象仅写1个触发器,拆分Handler业务类,分离触发器与业务逻辑;
- 避免触发器写复杂逻辑,大量计算移至Batch/Queueable;
- 批量处理,不使用循环SOQL/DML;
- 递归控制:静态布尔标记防止触发器死循环。
三、系统集成(REST/SOAP API,对接ERP/OA场景)
1. Salesforce调用外部系统REST接口有几种方式,区别
答案
- Apex Callout:HttpRequest/HttpResponse,灵活适配复杂请求,适合动态参数;
- External Services外部服务:导入OpenAPI规范,自动生成Apex封装类,无需手写解析JSON;
- Flow外部操作:无代码集成,简单接口快速对接;
限制:所有Callout有超时限制,事务内同步Callout次数有限;
高并发方案:使用Queueable异步调用外部接口,避免阻塞主事务。
2. 外部系统推送数据到Salesforce,如何保证接口安全与幂等
答案
安全方案:
- 使用Named Credential命名凭证存储账号密钥,代码不硬编码账号密码;
- IP白名单限制外部系统服务器地址;
- OAuth2.0/JWT鉴权,拒绝明文账号密码传参;
幂等(防止重复推送重复建单): - 外部传入唯一业务单号作为外部ID(External Id);
- 使用upsert操作,存在则更新、不存在则新建;
- 接口接收后记录处理日志,重复单号直接返回成功,不执行DML。
3. SOAP与REST集成分别适用什么场景
答案
- SOAP:传统ERP、老旧财务系统,强规范XML报文,适合金融、财务有严格报文校验的场景;
- REST:互联网平台、OA、SaaS系统,JSON轻量报文,开发调试简单,新项目优先REST。
四、性能优化&海量数据场景(JD专项要求)
1. 百万级存量数据清洗,用什么方案,步骤是什么
答案
使用Batch Apex批量框架,核心步骤:
- Database.QueryLocator分批拉取数据,单次上限5万条;
- execute方法内批量处理、DML分批次提交;
- finish方法执行收尾日志、通知、汇总统计;
- 搭配Async SOQL规避查询限制;
优化点:开启并行批处理,调整批次大小200-1000条,平衡DML限制与执行效率。
2. SOQL查询慢怎么排查优化
答案
排查步骤:
- 使用Query Plan查看执行计划,无索引字段全表扫描是核心瓶颈;
优化手段: - 过滤条件字段创建自定义索引(External Id、筛选高频字段);
- 避免通配符%开头模糊查询;
- 减少不必要子查询、大字段(富文本、附件)查询;
- 聚合场景使用聚合SOQL,不在代码循环做统计;
- 高频静态查询结果缓存至Cache。
五、DevOps & SF DX(持续交付要求)
1. Salesforce DX的作用,与传统开发模式区别
答案
SF DX是Salesforce现代化开发工具链:
- 本地源码化:将Metadata元数据转为本地文件,支持Git版本控制;
- Scratch Org临时沙箱:快速创建干净测试环境,用于单元测试;
- 一键部署:sfdx命令推送/拉取元数据,适配CI/CD流水线;
传统模式:直接在生产/测试沙箱点击部署,无本地源码,版本追溯困难,无法自动化发布。
2. 简单描述一套Salesforce CI/CD流水线流程
答案
- 开发本地使用SF DX编写代码,提交至Git仓库;
- Git触发流水线,自动创建Scratch Org;
- 流水线自动部署代码、执行全部Apex单元测试;
- 测试通过,自动部署至测试沙箱;
- 人工验收后,手动触发部署至预发/生产环境;
- 生产部署后自动执行冒烟测试,输出部署报告。
六、业务架构&综合场景题(高级开发/技术负责人必问)
1. 业务需求:ERP订单实时同步至Salesforce,高并发、不允许丢单,给出完整技术方案
参考答案
- 鉴权层:ERP通过JWT OAuth接口推送,IP白名单+外部唯一单号幂等upsert;
- 接收层:自定义REST Apex接口,仅做参数校验,复杂逻辑放入Queueable异步任务,快速响应ERP避免超时;
- 数据层:External Id绑定ERP订单号,upsert创建/更新订单,关联客户产品主数据;
- 异常兜底:调用失败、数据校验错误存入自定义错误日志对象;定时Batch重试失败单据;
- 监控:平台事件记录同步状态,报表监控失败率,异常邮件告警;
- 性能:Queueable分队列隔离高并发,拆分事务避免触发Governor Limits。
2. 单元测试覆盖率要求,怎么写高质量测试用例
答案
Salesforce生产部署强制覆盖率≥75%;
高质量用例要点:
- 覆盖正常流程、边界数据、异常报错场景;
- 模拟不同Profile、共享权限用户执行,校验FLS/共享规则生效;
- 批量场景构造上千条测试数据,验证触发器/Batch批量逻辑;
- 隔离外部Callout,使用Mock模拟第三方接口返回,不依赖真实系统;
- 避免仅执行不校验,每条逻辑都有System.assert断言验证结果。
七、加分项相关面试题(认证/企业项目/敏捷)
1. 你持有哪些Salesforce认证,Application Architect核心考察什么能力
答案
常见认证:PDI/PDII开发者、LWC Specialist、Application Architect;
架构师核心考察:多系统集成方案、数据模型设计、大规模性能治理、安全权限整体方案、企业级交付流程设计,不局限单一代码开发。
2. 敏捷Scrum开发在Salesforce项目如何落地
答案
- 2周迭代,需求拆分为用户故事,区分配置/开发任务;
- 每日站会同步SF开发、集成、接口进度;
- 迭代结束在测试沙箱演示验收;
- 迭代末复盘性能问题、部署卡点、集成对接阻塞点;
- 需求变更走变更评审,避免中途大幅修改元数据结构。
八、HR综合软问题
1. 业务部门提出不合理、无法平台实现的需求,你怎么处理
答案
- 先梳理业务真实诉求,区分"表面需求"和"底层业务目标";
- 输出2套方案:①折中平台原生实现方案;②第三方集成替代方案,附带成本、性能、工期对比;
- 同步产品、业务负责人说明平台底层限制(Governor、权限机制);
- 若短期无法实现,给出临时过渡方案+长期迭代规划。
2. 同时对接ERP、OA两套系统集成,多任务并行如何排期
答案
- 拆分依赖关系:主数据客户集成优先,订单单据依赖客户主数据后置;
- 隔离两套集成的Queueable/批处理队列,避免资源抢占;
- 同步两套外部系统对接人,错开联调时间窗口;
- 开发、单元测试、联调、生产分阶段里程碑,每日同步阻塞风险。