Salesforce开发与其他行业同等经验的开发人员相比,其市场需求和薪资潜力更高。相较其他行业,Salesforce领域的开发人员通常工作内容更广,其职责范围从基于代码的任务到需要一定商业敏锐度的工作。除了编写代码之外,大部分Salesforce开发人员还需要进行声明性配置、业务分析工作和解决方案设计的工作。
随着Salesforce成为越来越多企业的重要组成部分,市场对开发人员的需求愈发蓬勃。为Salesforce提供支持的技术处于不断发展的状态,因此对开发人员的技能要求也在不断提升。
本篇文章整理了不同资历的Salesforce开发人员遇到的各种面试问题,将从【平台知识】、【Apex编程】、【集成】、【Lightning组件】、【安全开发】、【可配置开发】等多个模块帮助求职者理清思路,顺利拿下offer!
平台知识
1
什么是Governor Limits?请举例说明。
Governor Limits是Salesforce在Apex上强制实施的资源利用率限制,以防止失控进程独占资源。这一点至关重要,因为Salesforce是一个多租户环境,因此运行资源是共享的。
这些示例包括事务中SOQL查询、DML语句和HTTP调用请求的数量。
2
可以使用哪些编程语言
来自定义Salesforce实例?
用于自定义Salesforce的服务器端语言称为Apex,其语法类似于Java。在前端,我们有几种技术,主要的技术是Lightning Web Components,其次是现在相对更小众的Aura Components和Visualforce,所有这些都使用HTML、CSS和JavaScript与Apex结合。我们还可以使用Flow,这是一种低代码语言,可以自定义前端和后端。
3
可以使用哪些声明性工具
来自定义Salesforce实例?
最基本的声明性工具是自定义字段和自定义对象,它们可以声明式定义,并允许我们自定义实例的数据库模式。我们可以通过使用页面布局和Lightning应用程序页面进一步自定义对象,以声明方式自定义记录页面的外观。
如果要创建声明性自动化,应该使用Flow,Process Builder和Workflow Rules虽然也能实现,但目前已经被Salesforce弃用。
4
什么时候选择程序化开发,
而不是声明式开发?
当需要快速开发时,优选声明性工具,它们允许快速迭代,并且通常具有更短的构建时间。在所需的业务逻辑相对简单且“陷阱”较少的情况下,利用具有更快构建时间的声明性工具通常是最佳解决方案。
当需求更加复杂时,我们会选择程序化开发。运行编码解决方案的主要优势是能够使用更专业的逻辑,性能将超过声明式解决方案。这也适用于用户界面,因为使用编码解决方案允许我们根据要求完全自定义,而使用声明性工具意味着需要受制于开箱即用的功能,这可能无法达成预期的结果。
5
Salesforce发布模式是什么?
Salesforce会在每年的春季、夏季和冬季进行三次重大更新。更新的具体日期有所不同,但是,大约在发布前4-6周,会更新沙盒实例,以允许测试组织中的任何自定义。
6
Salesforce支持的开发工具有哪些?
Salesforce支持的主要开发工具是Salesforce Extensions for VS Code,它使用Salesforce命令行界面。
7
解释一下Salesforce中的三种对象关系。
查找关系:这可用于将两个对象链接在一起。它是在两个对象之间创建子父关系的最基本的关系类型。
主从关系:这也可用于将两个对象链接在一起。主从关系在父级和子级之间建立了紧密的关系。子记录继承父项的安全性,如果删除父项,所有关联的子记录也将被删除。主从关系创建了一些额外的功能,例如汇总字段,允许用户从子项计算父项的数据。
多对多关系:也称为连接对象,允许用户在需要建模多对多关系的两个对象之间创建关系。这些是使用一个对象创建的,该对象与两个父对象有两个主从关系。
8
什么是SOQL?
SOQL代表Salesforce对象查询语言,顾名思义,它是用于对数据库执行查询的主要语言。虽然其语法与SQL相似,但还是有一些关键的区别,主要是SOQL专门用于查询(即SELECT语句)。
它用于从单个对象中检索数据,并检索可能与其直接相关的数据。SOQL既可以在Apex代码中使用,查询记录以供所述代码使用,也可以通过API和使用它的工具使用,例如数据加载工具。
Apex编程
9
将Apex代码部署到生产实例需要什么?
将Apex代码部署到生产环境时,需要做三件事:
所有的类和Trigger都必须成功编译。
测试必须至少覆盖所有Apex代码的75%,并且不得有任何失败。
所有Trigger必须至少具有1%的覆盖率。
10
queueable Apex、batch Apex和
schedulable Apex有什么区别?
这3种都是运行异步Apex代码的不同方式。
Queueable Apex:这是一个异步流程,可以启动它来运行处理(processing)、标注(callouts)等。这在长时间运行或根本不可用的Trigger中执行流程时很有用。
Batch Apex:一种Apex流程,旨在通过一次处理1-2000条记录的较小批次来处理大量记录(最多5000万条)。
Scheduled Apex:计划在特定时间和日期运行的流程。这可以定制为可重复的,或者通过UI安排,或者通过其他Apex代码中的CRON字符串。
11
Apex Trigger有哪些不同的事件?
Trigger分为两种主要类型:before和after。
Before Trigger在记录保存到数据库之前运行,最适合用于相同记录的计算和验证。而After Trigger在记录保存后运行,理想情况下应该用于处理调用Trigger以外的记录。
Trigger被进一步分解为调用它的操作类型。它们是:插入、更新、删除和取消删除。这允许将Trigger自定义为仅在明确需要时调用。
12
什么是Global Apex Class?
Global Apex Class是使用全局访问修饰符声明的Apex类。这意味着在任何命名空间中运行的任何Apex代码都可以看到和使用该类。
Global Apex Class应该很少使用,只有在明确需要时才实施,例如在托管包内或用于Apex REST Web服务。
13
什么是接口,为什么要使用接口?
接口类似于类,只是它的方法都没有实现。这对于从特定的实现中抽象出方法声明非常有用。一个常见的例子是Batch类,它实现了Database.Batchable的标准Salesforce接口。
使用接口意味着一个类将显式地实现其中定义的方法,潜在地允许我们在运行时基于上下文实现不同的行为。
14
如何才能允许Apex被Lightning组件调用?
要从Lightning组件调用Apex代码,首先必须用@AuraEnabled对其进行注释。这公开了要从组件JavaScript中调用的代码。我们可以进一步调整注释,通过使用@AuraEnabled(cacheable=true)注释来支持缓存。
15
如何调试Apex代码?
当Apex代码运行时,我们可以为执行的代码生成调试日志。这些日志提供了对执行期间发生的事情、抛出的任何异常地深入了解,还提供了传递到System.debug()方法调用的任何内容的详细信息。
如果充分提高日志记录级别,还可以使用Apex Replay Debugger,它允许我们使用VS Code逐步执行代码并更详细地检查它,并设置检查点和断点以获得更深入的调试体验。
关于【集成】、【Lightning组件】、【安全开发】、【可配置开发】的相关面试问题,由于文章篇幅原因,将在之后的文章中为大家详细解读,敬请期待!
网友评论