Thursday, March 10, 2016

Salesforce interview question part1

(1). What is Apex in Salesforce?
• Apex is a procedural scripting language in discrete and executed by the Force.com platform.
• It runs natively on the Salesforce servers, making it more powerful and faster than non-server code, such as JavaScript/AJAX.
• It uses syntax that looks like Java
• Apex can written in triggers that act like database stored procedures.
• Apex allows developers to attach business logic to the record save process.
• It has built-in support for unit test creation and execution.
Apex provides built-in support for common Force.com platform idioms, including:
• Data manipulation language (DML) calls, such as INSERT, UPDATE, and DELETE, that include built-in DmlException handling
• Inline Salesforce Object Query Language (SOQL) and Salesforce Object Search Language (SOSL)queries that return lists of sObject records
– Looping that allows for bulk processing of multiple records at a time
– Locking syntax that prevents record update conflicts
– Custom public Force.com API calls that can be built from stored Apex methods
– Warnings and errors issued when a user tries to edit or delete a custom object or field that is referenced by Apex
Note: Apex is included in Unlimited Edition, Developer Edition, Enterprise Edition, and Database.com
Apex vs. Java: Commonalities
• Both have classes , inheritance, polymorphism, and other common OOP features.
• Both have the same name variable, expression, and looping syntax.
• Both have the same block and conditional statement syntax.
• Both use the same object, array, and comment notation.
• Both are compiled, strongly-typed, and transactional.
Apex vs. Java: Differences
• Apex runs in a multi-tenant environment and is very controlled in its invocation and governor limits.
• To avoid confusion with case-insensitive SOQL queries, Apex is also case-insensitive.
• Apex is on-demand and is compiled and executed in cloud.
• Apex is not a general purpose programming language, but is instead a proprietary language used for specific business logic functions.
• Apex requires unit testing for deployment into a production environment.

(2). What is Visualforce in Salesforce?
Visualforce is the component-based user interface framework for the Force.com platform. The framework includes a tag-based markup language, similar to HTML. Each Visualforce tag corresponds to a coarse or fine-grained user interface component, such as a section of a page, or a field. Visualforce boasts about 100 built-in components, and a mechanism whereby developers can create their own components.
• Visualforce pages can react differently to different client browsers such as those on a mobile or touch screen device.
• Everything runs on the server, so no additional client-side callbacks are needed to render a complete view.
• Optional server-side call outs can be made to any Web service.
Visualforce is a Web-based framework that lets you quickly develop sophisticated, custom UIs for Force.com desktop and mobile apps. Using native Visualforce markup and standard Web development technologies such as HTML5, CSS, JavaScript, and jQuery, you can rapidly build rich UIs for any app.
 (3). Apex code Execution Governors and Limits

(4). Apex Data Types
Apex primitive data types include
– String
– Blob (for storing binary data)
– Boolean
– Date, DateTime and Time
– Integer, Long, Decimal, Double
– ID (Force.com database record identifier)
– Example:
• DateTime dt = System.now() + 1;
• Boolean isClosed = true;
• String sCapsFirstName = ‘Andrew’.toUpperCase();
Apex sObject Types
– Sobject (object representing a Force.com standard or custom object)
– Example:
• Account acct = new Account(); //Sobject example
Apex has the following types of collections
– Lists
– Maps
– Sets
– Example:
• List myList = new List();
• myList.add(12); //Add the number 12 to the list
• myList.get(0); //Access to first integer stored in the List
Enums
• Enum (or enumerated list) is an abstract that stores one value of a finite set of specified identifiers.
• To define an Enum, use enum keyword in the variable declaration and then define the list of values.
• By creating this Enum, you have created a new data type called Season that can be used as any other data type.
– Example:
• public enum Season {WINTER, SPRING, SUMMER, FALL}
(4). Variables
Local variables are declared with Java-style syntax.
For example:
Integer i = 0;
String str;
Account a;
Account[] accts;
Set s;
Map<ID, Account> m;
(5). Static Methods and Variables
• Class methods and variables can be declared as static. Without this keyword, the default is to createinstance methods and variables.
• Static methods are accessed through the class itself, not through an object of the class:
Example:
public class blogReaders {
public static boolean firstScript = false;
}
• Static methods are generally utility methods that do not depend on an instance. System methods are static.
• Use static variables to store data that is shared with in the class.
– All instances of the same class share a single copy of static variables.
– This can be a technique used for setting flags to prevent recursive
(6). What is the use of static variable?
When you declare a method or variable as static, it’s initialized only once when a class is loaded. Static variables aren’t transmitted as part of the view state for a Visualforce page.
Static variables are only static within the scope of the request. They are not static across the server, or across the entire organization.
(7). Final variables
• The final keyword can only used with variables.
– Classes and methods are final by default.
• Final variables can only be assigned a value once.
– This can either be at assigned a value once.
• When defining constants, both static and final keywords should be used.
– Example: public static final Integer =47;
(8). Difference between with sharing and without sharing in salesforce
By default, all Apex executes under the System user, ignoring all CRUD, field-level, and row-level security (that is always executes using the full permissions of the current user).
with sharing:
Enforcing the User’s Permissions, Sharing rules and field-level security should apply to the current user.
For example:
public with sharing class sharingClass {
// Code here
}
without sharing:
Not enforced the User’s Permissions, Sharing rules and field-level security.
For example:
public without sharing class noSharing {
// Code here
}
Enforcing the current user’s sharing rules can impact: (with sharing)
SOQL and SOSL queries – A query may return fewer rows than it would operating in system context.
DML operations – An operation may fail because the current user doesn’t have the correct permissions. For example, if the user specifies a foreign key value that exists in the organization, but which the current user does not have access to.
 (9). Class Constructors
• A constructor is a special method used to create (or instantiate) an object out of a class definition.
– Constructors never have explicit return types.
– Constructors have the same name as the class.
• Classes have default, no-argument, public constructor if no explicit constructors is defined.
– If you create a constructor that takes arguments and still want a no argument constructor, you must explicitly define one.
• Constructors can be overloaded, meaning you can have multiple constructors with different parameters, unique argument lists, or signatures.
• Constructors are called before all other methods in the class.
For Example:
public class TestObject2 {
private static final Integer DEFAULT_SIZE = 10;
Integer size;
//Constructor with no arguments
public TestObject2() {
this(DEFAULT_SIZE); // Using this(…) calls the one argument constructor
}
// Constructor with one argument
public TestObject2(Integer ObjectSize) {
size = ObjectSize;
}
}
New objects of this type can be instantiated with the following code:
TestObject2 myObject1 = new TestObject2(42);
TestObject2 myObject2 = new TestObject2();
(10). Class Access Modifiers
• Classes have different access levels depending on the keywords used in the class definition.
– global: this class is accessible by all Apex everywhere.
• All methods/variables with the webService keyword must be global.
• All methods/variables dealing with email services must be global.
• All methods/variables/inner classes that are global must be within an global class to be accessible.
– public: this class is visible across you application or name space.
– private: this class is an inner class and is only accessible to the outer class, or is a test class.
• Top-Level (or outer) classes must have one of these keywords.
– There is no default access level for top-level classes.
– The default access level for inner classes is private.
– protected: this means that the method or variable is visible to any inner classes in the defining Apex class. You can only use this access modifier for instance methods and member variables.
To use the private, protected, public, or global access modifiers, use the following syntax:
[(none)|private|protected|public|global] declaration

(11). Variable and Method Access Modifiers

• Link classes, methods and variables have different levels depending on the keywords used in the declaration.
 private: This method/variable is accessible within the class it is defined.
 protected: This method/variable is also available to any inner classes or subclasses. It can only be used by instance methods and member variables.
 public: This method/variable can be used by any Apex in this application namespace.
 global: this method/variable is accessible by all Apex everywhere.
• All methods/variable with the webService keyword must be global.
– The default access modifier for methods and variables is private.

(12). Casting

Apex enables casting: A data type of one class can be assigned to a data type of another class, but only if one class is a child of other class.
• Casting converts an object from one data type to another.
• Casting between the generic sObject type and the specific
sObject type is also allowed.
For Example:
sObject s = new Account();
Account a = (Account)s;
Contact c = (Contact)s //this generates a run time error.

(13). Exceptions Statements

Similar to Java, Apex uses exception to note errors and other events that disrupt script execution with the following keywords:
 Throw: signals that an error has occurred and provides an exception object.
 Try: identifies the block of code where the exception can occur.
 Catch: identifies the block of code that can handle a particular exception. There may be multiple catch blocks for each try block.
 Finally: optionally identifies a block of code that is guaranteed to execute after a try block.
Exception Example:
public class OtherException extends BaseException {}
Try{
//Add code here
throw new OtherException(‘Something went wrong here…’);
} Catch (OtherException oex) {
//Caught a custom exception type here
} Catch (Exception ex){
//Caught all other exceptions here
}

(13). Exception Methods

All exceptions support built-in methods for returning the error message and exception type, below is the some of the Exception Methods,
AsyncException
CalloutException
DmlException
EmailException
JSONException
ListException
MathException
NoAccessException
NoDataFoundException
NullPointerException
QueryException
http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_exception_methods.htm

(14). Loops

• Apex supports the following five types of procedural loops:
 do {statement} while (Boolean_condition);
 while (Boolean_condition) statement;
 for (initialization; Boolean_exit_condition; increment) statement;
 for (variable : array_or_set) statement;
 for (variable : [inline_soql_query]) statement;
• All loops allow for loop control structures:
 break; exits the entire loop
 continue; skips to the next iteration of the loop
What is a Business Process?
• Allows you to track separate sales, support, and lead lifecycles
across different divisions, groups, or markets
Available Business Processes:
– Sales Processes – Create different sales processes that include some or all of the picklist values available for the Opportunity Stage field
– Support Processes – Create different support processes that include some or all of the picklist values available for the Case Status field
– Lead Processes – Create different lead processes that include some or all of the picklist values available for the Lead Status field
– Solution Processes – Create different solution processes that include some or all of the picklist values available for the Solution Status field
(22). What are the Objects available in the Salesforce Business Process and Give some Business Process Example?
Lead
Opportunity
Case
Solution
–You must create the business process before creating record types for each of above objects.
– You can then associate each business process with one or more record types and make it available to users based on their profile.
– In order to implement more than one business process, multiple record types must also be implemented.
Business Process Examples
Lead Processes:
– Cold Call
– 3rd Party telesales companies
– Leads generated via campaigns
– Leads generated via a registration form
Opportunities Sales Processes:
– Miller Heiman/ Solution Selling Methodology
– Inside Sales vs. Outside Sales
– New business vs. Existing Business (Up selling)
Case Processes:
– Customer Inquiries
– Internal Requests
– Billing inquiries
Solutions Processes:
– Internal vs. Public Knowledge Base
(23). What about Web-to-Lead and Web-to-Case?
–A lead or case record created through Web-to-Lead or Web-to-Case will set the record type to that of  the default lead owner or automated case user (optional)
(24). On which tabs can I create multiple record types?
–Multiple record types may be created for every tab, with the exception of the Home, Forecasts, Documents, and Reports tabs.
(25). What happens if I need to add a picklist value?
–You will be prompted to select which record types should include the new value
(26). What is Field-Level Security?
– Defines users’ access to view and edit specific fields in the application
(27). Why use Field-Level Security?
– Use Field-Level Security (rather than creating multiple page layouts) to enforce data security
– Users view data relevant to their job function Troubleshooting Tools
– Field accessibility views
– Setup | Administration Setup | Security Controls | Field Accessibility
Notes:
• Field Level Security is not available in PE
• Field-level security cannot be used to make a field required. This is done from the Page Layout
• Field access settings can be defined using both field-level security and page layouts. However, the most restrictive field access setting of the two will always apply. For example, if a field is required on the page layout, but read-only in the field-level security settings, the field will be read-only.
• Hiding a field from a user using FLS also hides that field from list views, search results, and reports.
(28).  What are Login Hours and Login IP Ranges?
– Sets the hours when users with a particular profile can use the system
– Sets the IP addresses from which users with a particular profile can log in
Notes:
• You can customize profiles to restrict users’ ability to log in to Salesforce.
• You can set the hours when users can log in and the IP addresses from which they can log in.
If a user logs in before the restricted hours, the system will end the user’s session when the restricted hours begin.
Two Options for Restricting Access via IP Ranges
Option 1: Add Trusted IP Ranges for your entire org
Option 2: Add Trusted IP Ranges on a Profile by Profile basis

(29).  What is a User Record?
– Key information about a user
– Each has its own unique username
– User logs in with username and password
– Users can be active or inactive; an active user uses a license
– Users are associated with a Profile
– Users are usually associated with a Role
(30). What is a Record Owner?
– The user (or queue for Cases and Leads) who controls or has rights to that particular data record
– An Owner has the following special privileges:
• View and edit capabilities
• Transfer capability – change ownership
• Deletion capabilities
– Important assumption: Object permissions enabled
– The Account Owner, Opportunity Owners and Case Owners may or may not be the same user.
(31) What are Organization Wide Defaults?
– Defines the baseline level of access to data records for all users in the Organization (not including records owned by the user or inherited via role hierarchy)
– Used to restrict access to data
Access levels:
-Private
-Public Read/Write
-Public Read/Write/Transfer
-Controlled by Parent
-Public Read Only


(32). What is a Role and Role Hierarchy?
Role:
– Controls the level of visibility that users have to an organization’s data
– A user may be associated to one role
Role Hierarchy:
– Controls data visibility
– Controls record roll up – forecasting and reporting
– Users inherit the special privileges of data owned by or shared with users below them in the hierarchy
– Not necessarily the company’s organization chart
Notes:
• If using Customizable Forecasting, there is a separate forecast role hierarchy.
• EE can create Account, Contact, Opportunity and Case Sharing Rules. PE can ONLY create Account and Contact Sharing Rules.
• Assuming no sharing rules have been created, users in the same role cannot access one another’s records.
Example: Org Wide Default settings for opportunities are private. Creating a role and adding two users to that role does not allow those users access to one another’s opportunities.
• “Grant Access Using Hierarchies” allows you to disable the default sharing access granted by your role and territory hierarchies. This option can be changed for custom objects that do not have their organization-wide default sharing setting set to Controlled by Parent.
(33). What is Access at the Role Level?
– Defined when creating a role
– Level of access to Opportunities associated to Accounts owned by the role
– Level of access to Contacts associated to Accounts owned by the Role
– Level of access to Cases associated to Accounts owned by the role
– Level of access options depend on OWD
Notes:
• You can create up to 500 roles for your organization
• Every user must be assigned to a role, or their data will not display in opportunity reports, forecast roll-ups, and other displays based on roles
• All users that require visibility to the entire organization should belong to the highest level in the hierarchy
• It is not necessary to create individual roles for each title at your company, rather you want to define a hierarchy of roles to control access of  information entered by users in lower level roles
• When you change a user’s role, any relevant sharing rules are evaluated to add or remove access as necessary
(34). What is a Sharing Rule?
– Automated rules that grant access to groups of users
– Exceptions to Organization Wide Defaults
– Irrelevant for Public Read/Write organizations
– Levels of Access that can be granted
• Read Only
• Read/Write
Notes:
• Sharing rules should be used when a user or group of users needs access to records not granted them by either the role hierarchy setup or the organization wide default settings.
– Sharing rules open up access whereas organization wide defaults restrict access.
– You can use sharing rules to grant wider access to data. You cannot restrict access below your organization-wide default levels.
• Sharing rules apply to all new and existing records owned by the specified role or group members.
• Sharing rules apply to both active and inactive users.
• When you change the access levels for a sharing rule, all existing records are automatically updated to reflect the new access levels.
• When you delete a sharing rule, the sharing access created by that rule is automatically removed.
• When you transfer records from one user to another, the sharing rules are reevaluated to add or remove access to the transferred records as necessary.
• When you modify which users are in a group or role, the sharing rules are reevaluated to add or remove access as necessary.
• For contact, opportunity and case sharing rules, if the role or group members do not have access to the account associated with the shared contact, opportunity or case the rule automatically gives them access to view the account as well.
• Managers in the role hierarchy are automatically granted the same access that users below them in the hierarchy have from a sharing rule.
• You can edit the access levels for any sharing rule. You cannot change the specified groups or roles for the rule.
(35). Types of Sharing Rules in Salesforce and Explain it?
Account Sharing Rules:
– Based on who owns the account
– Set default sharing access for accounts and their associated cases, contacts, contracts, and opportunities
Contact Sharing Rules:
– Based on who owns the contact (must be associated with an account)
– Set default sharing access for individual contacts and their associated accounts
– Cannot use with: Territory Management and B2I (Person Account) enabled orgs
Opportunity Sharing Rules (EE/UE):
– Based on who owns the opportunity
– Set default sharing access for individual opportunities and their associated accounts
Case Sharing Rules (EE/UE):
– Based on who owns the case
– Set default sharing access for individual cases and associated accounts
Lead Sharing Rules (EE/UE):
– Based on who owns the lead
– Set default sharing access for individual leads
Custom Object Sharing Rules (EE/UE):
– Based on who owns the custom object
– Set default sharing access for individual custom object records
(36). Uses cases for Sharing Rules in salesforce?
– Organizations with organization-wide defaults of Public Read Only or Private can create sharing rules to give specific users access to data owned by other users.
– Cases Sharing Example: To use cases effectively, customer support users must have read access to accounts and contacts. You can create account sharing rules to give your customer support team access to accounts and contacts when working on cases.
– Account Sharing Example: The Western and Eastern Regional Directors need to see all of the accounts created by each others’ sales reps. You can create two public groups – one that includes the Western and Eastern Regional Director roles and one that includes the Western and Eastern Sales Rep roles. Then create an account sharing rule so that records owned by the Western and Eastern Sales Rep group are shared with the group containing the Western and Eastern Regional Director roles.
(37). Best Practices of Creating Contact Sharing Rules?
– Account Org-Wide Default must be set to at least “Public Read Only” in order to set the Contact Org-Wide Default to “Public Read/Write”.
– To share ALL contacts in the system with a group of users or a specific role, create a sharing rule that uses the “All Internal Users” (or “Entire Organization”) public group as the owned by option.
– Use “Roles and Subordinates” over “Roles” where possible to minimize the number of sharing rules.
(38). What is a Public Group?
– A grouping of:
• Users
• Public Groups (nesting)
• Roles
• Roles and Subordinates
– Mixture of any of these elements
– Used in Sharing Rules – for simplification (when more than a few roles need to be shared to)
– Also used when defining access to Folders and List Views
For example, if a new user is assigned a role that belongs to an existing public group, that user will be
automatically added to the public group
(39). What is Manual Sharing?
– Granting record access, one-off basis
– Owner, anyone above owner in role hierarchy and administrator can manually share records
– Available on Contacts, Leads, Cases, Accounts and Opportunity records and Custom Objects
– Like sharing rules, irrelevant for Public Read/Write organizations
(40). What is a Sales Team? (EE/UE)
– Used for collaborative selling
– Used for sharing as well as reporting purposes
– Ad hoc or may use Default Sales Team (defined for user)
– Default Sales Teams may be automatically added to a user’s opportunities
– Who can add a Sales Team?
• Owner
• Anyone above owner in role hierarchy
• Administrator
Adding Default Sales Team Members:
– Click Setup | My Personal Information | Personal Information
Please note that the Professional Edition does NOT have access to the Team Selling Feature.

(42). What is an Account Team? (EE/UE)

– Used for collaborative account management
– Used for sharing as well as reporting purposes
– Manually added to Account records
– Default Account Teams may be automatically added to a user’s accounts
– Who can add an account team?
• Owner
• Anyone above owner in role hierarchy
• Administrator
Please note that Account Teams are not available for Professional Edition.

(43). What is  Case Team? (EE/UE)

Case teams enable full communication and collaboration on solving customer issues. You can:
– Add teams of users to cases
– Create a workflow for case teams
– Predefine case teams for users
– Determine the level of access
– Administrators can predefine case teams for users and determine the level of access each team member has to a case, such as Read/Write or Read/Only.
 Click Path: Setup | Customize | Cases | Case Teams

(44). What are Folders?

– Used for organizing email templates, documents, reports and dashboards
– Access is defined – Read or Read/Write
– Access is explicit – does NOT roll up through role hierarchy
Notes:
– You can modify the contents of a folder if the folder access level is set to Read/Write.
– Only users with the “Manage Public Documents” or “Manage Public Templates” can delete or change a Read Only folder.
– The Documents tab does NOT contain version control capabilities
– To search documents, users must use Documents search. The sidebar search does NOT search Documents, Solutions, Products, and Reports but does search Assets and Custom Objects
– The Create New Folder link will only be visible to users with the “Manage Public Documents” permission
– The size limit for documents uploaded is 5MB. The size limit for document filenames is 255 characters including the file extension

(45). What is Workflow?

Salesforce Workflow gives you the ability to automatically:
– Create and send email alerts
– Create and assign tasks
– Update field values to either specific values, or based on formulas
– Create and send outbound API messages
– Create and execute time-dependent actions
Workflow Important Points:
• Your sales organization operates more efficiently with standardized interal procedures and automated business processes – workflow.
• You can set up Salesforce to automatically send email alerts, assign tasks, or update field values based on your organization’s workflow.
• Workflow rules can be used to assign follow-up tasks to a support rep when a case is updated, send sales management an email alert when a sales rep qualifies a large deal, change the owner of a contract when it has been signed by the customer, or trigger an outbound API message to an external HR system to initiate the reimbursement process for an approved expense report.

(46). What are Workflow Components available?

Workflow consists of the following components:
– Workflow Rules – trigger criteria for performing various workflow actions
– Workflow Tasks – action that assigns a task to a targeted user
– Workflow Email Alerts – action that sends an email to targeted recipients
– Workflow Field Updates – action that updates the value of a field automatically
– Workflow Outbound Messages – action that sends a secure configurable API message (in XML format) to a designated listener (not covered in this class)
Notes:
• Workflow Rules use workflow actions when their designated conditions are met. Workflow rules can be triggered any time a record is saved or created, depending on your rule settings. However, rules created after saving records do not trigger those records retroactively.
• Workflow Tasks are like task templates, containing the information a workflow rule uses to assign a task to specified users whenever specific business actions trigger the rule. Workflow tasks provide the Subject, Status, Priority, and Due Date for the tasks a rule assigns.
• Workflow Email Alerts are emails generated by a workflow rule using an email template. The emails are sent to designated recipients, either Salesforce users or others, whenever specific business actions trigger a workflow rule.
• Workflow Field Updates specify the field you want updated and the new value for it. Depending on the type of field, you can choose to apply a specific value, make the value blank, or calculate a value based on a formula you create.
• Workflow Outbound Messages send the information you specify to an endpoint you designate, such as an external service. An outbound message sends the data in the specified fields in the form of a SOAP message to the endpoint.

(47). What is a Workflow Rule?

– Defined trigger criteria based on your business requirements
– Evaluated when record is created, when created/updated, OR when created/updated and did not previously meet trigger criteria
– When trigger criteria is met workflow actions, such as email alerts, tasks, field updates, or outbound messages are generated
To get started using workflow rules, click
• Setup | Create| Workflow & Approvals | Workflow Rules

(48). What is a Workflow Task?

– When a Workflow Rule is met, a Task may be assigned to designated users to follow-up and respond to the Business Conditions in the Workflow Rule
– Workflow Tasks may be assigned to a user, role, record owner, record creator, sales team role, or account team
– Tracked in Activity History and can be reported on
– Can be re-used within the same object
– Tasks can be immediate or time-dependent
To create your workflow tasks:
Click Setup | Customize | Workflow & Approvals | Tasks

(49). What is a Workflow Alert?

– Workflow Alerts are emails generated by a workflow rule whenever specific Business Actions trigger the rule
– Can send alerts to Users, Roles, Customer in a Contact Field, Email Field on Page Layout – please see picklist for options…
– Not tracked in Activity History
– Can be re-used within the same object
– Alerts can be immediate or time-dependent

(50). What is a Workflow Field Update?


– Field updates allow you to automatically change the value of a field to a value you specify
– Depending on the type of field you can:
• apply a specific value
• make the value blank
 calculate a value based on a formula you create
– Field updates can be immediate or time-dependent

5 comments: