Salesforce Certified B2B Commerce Developer Practice Test - Questions Answers, Page 3
List of questions
Question 21

Although Salesforce B2B Commerce and Salesforce recommend against using
'without sharing classes' whenever possible, sometimes it is unavoidable. Which three items will open up a major security hole? (3 answers)
Explanation:
Executing dynamic SOQL inside a without sharing class with a bind variable from PageReference.getParameters(), PageReference.getCookies(), or cc_RemoteActionContext class will open up a major security hole because these sources of input are not sanitized and can be manipulated by malicious users to inject SOQL queries that bypass the sharing rules and access data that they are not supposed to see. For example, a user can modify the URL parameters or cookies to include a SOQL query that returns sensitive data from the database. To prevent this, it is recommended to use static SOQL or escape the bind variables before executing dynamic SOQL.
Question 22

The ccrz.cc_hk_UserInterface apex class, HTMLHead Include Begin and HTML Head Include End Cloudcraze Page Include sections allow additional content to be added to the HTML <head> tag. What are two reasons that is it preferred to use the ccrz.cc_hk_UserInterface extension over the Cloudcraze Page Include sections? (2 answers)
Explanation:
The ccrz.cc_hk_UserInterface apex class is preferred over the HTMLHead Include Begin and HTML Head Include End Cloudcraze Page Include sections because Salesforce apex:include is wrapped in <span> tags, which are not valid inside the HTML <head> tag. This can cause rendering issues or unexpected behavior in some browsers. The ccrz.cc_hk_UserInterface extension allows adding content to the HTML <head> tag without using apex:include.
Question 23

The ccUtil apex class in Salesforce B2B Commerce provides numerous utility functions that can be leveraged in subscriber classes.
What are two ways to check the input or return data of the Global API's? (2 answers)
Explanation:
The ccUtil apex class provides two methods to check the input or return data of the Global API's: ccrz.ccUtil.isNotEmpty(Map<String, Object>) and ccrz.ccUtil.isEmpty(Map<String, Object>). These methods return true if the map is not null and contains at least one entry, or if the map is null or empty, respectively. Similarly, ccrz.ccUtil.isNotEmpty(List<Object>) and ccrz.ccUtil.isEmpty(List<Object>) return true if the list is not null and contains at least one element, or if the list is null or empty, respectively. These methods are useful for validating the input parameters or the output results of the Global API's.
Question 24

The ccUtil apex class in Salesforce B2B Commerce provides numerous utility functions that can be leveraged in subscriber classes. Which command will return the value in the given Map if found or a default value in the event that the Map is null,
empty, or an object is not found for that key?
Explanation:
The ccrz.ccUtil.defVal (Map<String.Object> mp, String key, Object ob) method will return the value in the given Map if found or a default value in the event that the Map is null, empty, or an object is not found for that key. This method is useful for providing fallback values for configuration settings or input parameters that may be missing or invalid. Salesforce
Reference:B2B Commerce and D2C Commerce Developer Guide,ccUtil Class
Question 25

A configuration value, CO.NewOrder, is set to TRUE. What is one way of preventing anexisting payment page from being shown on the checkout payment page?
Explanation:
This approach effectively removes the payment page from the list of allowed pages, ensuring itis not displayed during the checkout process.
Thepmt.whitelistconfiguration setting in Salesforce B2B Commerce is used to manage theVisualforce pages that support all payment types on the storefront1. If you want to prevent anexisting payment page from being shown on the checkout payment page, one way to do it is toremove the value matching the page name from thepmt.whitelistconfiguration setting.Afterdoing this, you would need to rebuild and activate a new Configuration cache for the changesto take effect1.Please note that this information is based on the Salesforce B2B Commercedocumentation and best practices1.
Question 26

A Developer created a custom field that a project wants to expose on a given page.
How does the Developer ensure that the field is available to display on a given page?
Explanation:
To ensure that a custom field is available to display on a given page, the Developer needs to override the Service Class that the page uses and update the Service Management in CCAdmin for the given storefront to use this new Service Class. The Service Class is responsible for retrieving and setting data for a given page. The Logic Class is responsible for implementing business logic and validation rules for a given page. Creating a new Service Class or Logic Class is not necessary, as overriding an existing one can achieve the same result. Salesforce
Reference:B2B Commerce and D2C Commerce Developer Guide,Service Classes,Logic Classes
Question 27

A developer is trying to troubleshoot why a field is not displaying on the Product Detail Page. What should be typed in the Developer Tools Console in the browser to view the fields available for the Product Detail Page?
Explanation:
To view the fields available for the Product Detail Page, the developer should type CCRZ.productDetailModel in the Developer Tools Console in the browser. This will display the product detail model object, which contains the product data and attributes that are rendered on the page. The other options are either not valid or not relevant for the Product Detail Page.
Question 28

For which two reasons is it preferable to extend the Salesforce B2B Commerce remote invocation object instead of using the standard Salesforce remote action invocation manager (2 answers)
Explanation:
It is preferable to extend the Salesforce B2B Commerce remote invocation object instead of using the standard Salesforce remote action invocation manager for two reasons:
The APEX method called by the remote action will be passed as a Salesforce B2B Commerce context object, which contains useful information such as the current user, cart, storefront, and configuration settings. This can simplify the development and testing of the remote action.
The Salesforce B2B Commerce logger can be utilized in the remote action, which allows logging messages and errors to the debug log or to a custom object. This can facilitate debugging and troubleshooting of the remote action.
Question 29

How are variables bound when services use the ccSercviceDao classto execute queries?
Explanation:
When services use the ccServiceDao class to execute queries, variables are bound by string substitution. This means that the query string contains placeholders for variables that are replaced by their values at runtime. For example,ccrz.ccServiceDao.getQuery('SELECT Id FROM Account WHERE Name = :name')will replace:namewith the value of thenamevariable.
Question 30

How are version related upgrades passed on to subscriber API extensions/overrides?
Question