Mindmajix

SalesForce Interview Questions

SalesForce Interview Questions

Q. Does user can create insert their own custom logo, while creating their own custom applications?

Yes user can upload their custom logo in documents and then they choose that logo for organization.


Q. List things that can be customized on page layouts?

We can customize different things on page layout like, Fields, Buttons, Custom Links and Related Lists. We can also create sections.


Q. What is a “Self Relationship”?

Self Relationship is a lookup relationship to the same object. Suppose let’s take an object “Merchandise”. Here we can create relationship in between the Account to Account (same object) object. That is called “Self Relationship”.


Q. What are the main things need to consider in the “Master-Detail Relationship”?

Record level access is determined by the parent, Mandatory on child for reference of parent, cascade delete (if you delete the parent, it can cascade delete the child).


Q. What is difference between trigger and workflow?

Workflow

Workflow is automated process that fired an action based on Evaluation criteria and rule criteria.

We can access a workflow across the object.

We cannot perform DML operation on workflow

We cannot query from database

Trigger

Trigger is a piece of code that executes before or after a record is inserted or updated.

We can access the trigger across the object and related to that objects

We can use 20 DML operations in one trigger.

We can use 20 SOQL’s from data base in one trigger.


Q. What is Wrapper class?

A Wrapper class is a class whose instances are collection of other objects.

It is used to display different objects on a Visual Force page in same table.


Q. What is Difference between SOQL and SOSL?

SOQL(Salesforce Object Query Language)

Using SOQL we can Search only on one object at a time.

We can query on all fields of any datatype

We can use SOQL in Triggers and classes.

We can perform DML operation on query results.

SOSL(Salesforce object Search Language)

Using SOSL we can search on many objects at a time.

We can query only on fields whose data type is text,phone and Email.

We can use in calsses but not in Triggers.

We cannot perform DML operation on search result


Q. What is difference insert() and database .insert() ?

Using insert method we can insert the records but if any error occurs in any record system will throw an error insertion fail and none of the records are inserted.

If we want to execute partially success of bulk insert operation we will use database .insert.


Q. What is Static Resources?

Using Static Resources we can upload images, zip files, jar files, java script and CSS files that can be referred in a visual force page.

The maximum size of Static Resources for an organization is 250mB.


Q. How to call java script using Static Resource in Visual Force page?

Add java script file in Static Resource setup -> develop -> Static Resources -> click on ‘New’ -> Name: filename and add file from local desktop and save.

We can use that file as follows in Visual Force page

<apex: includescript values=” {! $Resource.fileName}”/>


Q. What is sharing rule?

If we want to give the access to other users we use sharing rules.


Q. How many ways we can share a record?

Role Hierarchy:

If we add a user to a role, the user is above in the role hierarchy will have read access.

Setup -> manage users -> roles -> setup roles -> click on ‘add role’ -> provide name and save.

OWD:

Defines the base line setting for the organization.

Defines the level of access to the user can see the other user’s record

OWD can be Private, Public Read Only, Public Read and Write.

Setup -> Security Controls -> sharing settings -> Click on ‘Edit’

Manual Sharing:

Manual Sharing is sharing a single record to single user or group of users.

We can see this button detail page of the record and this is visible only when OWD setting is private.

Criteria Based Sharing rules:

If we want to share records based on condition like share records to group of users

Whose criteria are country is India.

Setup -> security controls -> sharing settings -> select the object and provide name and

Conditions and save

Apex sharing:

Share object is available for every object(For Account object share object is AccountShare ). If we want to share the records using apex we have to create a record to the share object.


Q. Unit testing code which has logic around the CreatedDate

You can create sObjects in memory with arbitrary CreatedDate values by using JSON.deserialize. This doesn’t enforce the normal read-only field attributes that prevent you from setting a createdDate value. However you can’t commit arbitrary CreatedDate values to the database (or else it would be a serious security issue).

An example of doing so :

String caseJSON = ‘{“attributes”:{“type”:”Case”,”url”:”/services/data/v25.0/sobjects/Case/500E0000002nH2fIAE”},

“Id”:”500E0000002nH2fIAE”,

“CreatedDate”:”2012-10-04T17:54:26.000+0000″}’;
Case c = (Case) JSON.deserialize(caseJSON, Case.class );
System.debug(c.createdDate);

Note that I built the caseJSON string by creating a test case and serializing it, which is the easiest way to get JSON similar to what you want, then you can just tweak the values.


Q. Ignoring Validation rules when deploying code

I have seen a solution that uses a Custom Setting of ValidationRuleEnabled.

ALL validation rules set up have the && $Setup.CustomSetting__c.ValidationRuleEnabled__c added.

When you want to deploy any code then the administrator changes the Custom Setting to FALSE, deploy the new code; don’t forget to re-enable the Custom Setting!

Again this is not ideal as the ‘legacy’ code should be updated to accommodate the new validation rules; ideally at the time of creating the new validation rules (but who checks code coverage after making a small change like a validation rule?)


Q. Can I find out if the current user has access to a record without querying?

To find out if a particular user has Edit access to a record, use the UserRecordAccess object. This object is available in API version 24.0 and later. You can use SOQL to query this object to find out if the user has edit access to the record in question.

SELECT RecordId, HasEditAccess FROM UserRecordAccess WHERE UserId = [single ID] AND RecordId = [single ID]

If you want to check a batch of records you can use

SELECT RecordId FROM UserRecordAccess WHERE UserId=:UserInfo.getUserId() 

AND HasReadAccess = true ANDRecordId IN :allRecordIds LIMIT 200

But make sure that allRecordIds is a LIST of IDs. It doesn’t work if allRecordIds is a SET of IDs. I guess that’s a bug.

Also, only a maximum amount of 200 recordIds can be checked in one query.


Q. Detecting governor limits through apex

First of all, the exception thrown by hitting a limit, System.LimitException is uncatchable and means that your script will be killed, even if it happens inside a try/catch block. There is a class, Limits, that contains a number of static methods that allow you to check your governor limit consumption,

see:  http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_limits.htm

With that said, your example of @future calls per day is one of the limits that simultaneously is and isn’t a governor limit as I believe it throws a System.AsyncException instead which  is not catchable, and kills your script as a LimitException would.


Q. What is a concise function that formats a (String) decimal into a currency format in Apex?

@RickMeasham’s method is a good one, but I ran into a couple rounding issues with negative values and fractional values. Here’s my edited version of the method that passes the tests I needed it to (not rendering -0.001 as “-0.00”, not rendering -1.10 as “-1.09”).

public static String formatCurrency(Decimal i) {
if (i == null || Math.abs(i) < 0.005) return ‘$0.00’;
String s = (i.setScale(2) + (i >= 0 ? 0.001 : -0.001)).format();
return s.substring(0, s.length() – 1);
}

(EDIT: changed “<= 0.005” to “< 0.005” per @RickMeasham’s advice below.)

(EDIT 2: actually realized, when I finished tests, that this updated method still had a few shortcomings related to rounding. I updated to delegate to Math.roundToLong per code below [which uses round half even, not half up as I stated in my comments erroneously]. It now passes all my unit tests, which you can see here: http://codepad.org/ycttSXjq)

private String formatCurrency(Decimal i) {
if (i == null) return ‘0.00’;
i = Decimal.valueOf(Math.roundToLong(i * 100)) / 100;
String s = (i.setScale(2) + (i >= 0 ? 0.001 : -0.001)).format();
return s.substring(0, s.length() – 1);
}


Q. How do you write a unit test for a trigger whose only function is to make a callout?

Both future methods and callouts can be unit tested.

To test future methods simply make your call to any future method between Test.startTest();and Test.stopTest(); statements and the future method will return when Test.stopTest(); is called. See the documentation for the Test class here: System.Test

Testing callouts is a bit trickier though. Basically in your callout code you check to see if you’re executing within a unit test context by checking Test.isRunningTest() and instead of getting your callout response from an HttpResponse.send() request, you return a pre-built test string instead. There’s one example of this method here: http://www.iterativelogic.com/unit-test-callouts-in-apex-code-part-2/

There’s also an older example of callout unit testing that uses a static variable you set in your unit test. Just replace that static variable with a call to Test.isRunningTest() and their example works fairly well as well. That example can be found here:http://sfdc.arrowpointe.com/2009/05/01/testing-http-callouts/


Q. Can report data be accessed programmatically?

Update for Winter ’14

API:
I think the biggest announcement that developers have been waiting for API wise is the availability of our Analytics API. We introduced a limited pilot in summer 13 and now the Analytics REST API is generally available. The Analytics API lets you integrate Salesforce report data into your apps programmatically and has several resources that let you query metadata, and record details.
Source – Winter 14 Developer Preview


Q. How do you unit test a trigger when you don’t know the required fields?

Customers can have validation on custom fields via validation rules and triggers, so handling that in your unit tests without customer intervention is next to impossible. The first step to reducing issues is to have your test data populate all standard fields and ensure the data uses the most common formatting for your customer base (US style phone numbers and addresses for the US for example).

Beyond that you can use the new Reflection features added to Salesforce in Summer ’12 to allow customers to create unit test data classes that can be used by your managed package. Basically you define a test data generation interface and the customer creates an Apex class to generate data for you. Here’s an example of using Reflection in a similar manner on the DeveloperForce blog:http://blogs.developerforce.com/developer-relations/2012/05/dynamic-apex-class-instantiation-in-summer-12.html

Using the method for unit tests run on install might be problematic as you’d have to have the customer create the class before they install your package and your package could only look for the class by name (or iterate through all default namespace classes and check for the correct interface). However, it’s no longer necessary for unit tests to run during installation for managed packages and by default they do not.

The Reflection method requires some coding knowledge on the customer side, but you could add a tool in your application to generate the custom unit test data class for the customer.

FYI, it’s no longer necessary for managed package unit tests to succeed in customer orgs. They’re not required on install, they will no longer prevent deployment to production and they don’t count as part of the customers unit test coverage percentage for purposes of deployment. The only exception to that is if the customer uses ANT and sets the runAllTests parameter to true.


Q. Deleting a class without IDE

This can be done with the Force.com Migration Tool:http://wiki.developerforce.com/page/Force.com_Migration_Tool

See the full documentation here: http://wiki.developerforce.com/page/Force.com_Migration_Tool

The tool can create or delete any meta-data that can be created through the Force.com IDE or Change Sets. It comes with a sample config file that contains example deployments for deploying objects and Apex code and deleting them as well. The documentation has a very detailed step-by-step guide here:

http://www.salesforce.com/us/developer/docs/daas/index_Left.htm#StartTopic=Content/forcemigrationtool.htm

Q. Is there a defacto 3rd party utilities library for Apex such as Apache Commons is for Java?

Apex-lang is about as close to a Java-style library as you can get. Contains several string, database, and collection utilities that mimmick Java functionality. Be aware though, some stuff including Comparing and Sorting collections is out of date with the advent of the Comparable interface in Apex.

In addition to apex-lang, and like you suggest, I typically create or reuse static helper methods throughout my projects. Static helper methods are very convenient for reusing code in Chatter functionality, DML handling, Exception handling, Unit testing, etc.


Q. Using transient keyword to store password in hierarchy custom setting

Because your myPref property is transient the initialisation you perform in the constructor won’t round trip when the page posts back.

When I’ve used transient and a protected custom setting I use separate properties that are transient and then only work with the custom setting in the post back method.

Controller

Skip code block

public with sharing class TestCustomSettings {

// transient to ensure they are not transmitted as part of the view state
public transient String password1 {get; set;}
public transient String password2 {get; set;}

public PageReference save() {
// I’ve changed this to getInstance() rather than getValues()
TestR__c myPref = TestR__c.getInstance(UserInfo.getOrganizationId());

if(myPref == null) {
myPref = new TestR__c();
myPref.SetupOwnerId = Userinfo.getOrganizationId();
}

myPref.Password1__c = password1;
myPref.Password2__c = password2;

// Note that by using upsert you don’t need to check if the Id has been set.
upsert myPref;

}
}

Visualforce page

You can use inputSecret rather than inputField in the Visualforce page so that the browser will mask the input.

<apex:inputSecret value=”{!password1}” size=”10″/>
<apex:inputSecret value=”{!password2}” size=”10″/>


Q. Is there a way to setup continous integration for apex tests?

There are a couple of decent Dreamforce presentations here: Team Development: Possible, Probable, and Painless and Continuous Integration in the Cloud.

We ran into some issues with this in practice and there was no way to get true automation (i.e., set it and forget it). We were also setting it up with Selenium.

Here were the issues that I remember.

  1. Some features aren’t supported in the metadata API and cannot be moved via the ant migration. If you have any unit tests that work with those features, you have to manually work on your CI org.
  2. Deletions are harder to maintain. You have to manually update and apply a destructiveChanges.xml file or replicate the deletion in the CI org.
  3. We ran into a situation where some metadata XML files had ‘invalid’ data in them. The suggested solution was to build a post checkout script that manipulates the offending XMLs into valid XMLs. Not ideal.
  4. On projects, we wanted to track just our changes and push out just our changes in source control. In theory, this would allow much easier rebaselining. This would have required more manual maintenance of XML files (e.g., 2 new fields added on Account and only want to push those 2 fields not all (*) fields).

My conclusion is that it is worth doing if you can get it set up, but if you are working on shorter term projects and don’t have a decent amount of time budgeted in for it, it probably isn’t worth setting up.

Although it isn’t CI, check out http://developer.force.com/cookbook/recipe/automated-unit-test-execution. You could set it up to run every hour or something like that.


Q. What are the implications of implementing Database.Stateful?

Daniel Ballinger: No, batches do not ever run simultaneously. You are correct, however, that serialization is the culprit here.

grigriforce: what’s your batch size? If you’re doing a million records, and your batch size is 1, then you will serialize/deserialize your state 1M times. Even with a small serialized object, that’s gonna hurt.


Q. What are the recommended ways to refactor in Apex?

I use the second method. After refactoring, I select the ‘src’ folder, use File Search/Replace and all the changes are made and saved to the server in one go.


Q. What is a good set of naming conventions to use when developing on the Force.com platform?

Follow the CamelCase Java conventions, except for VF pages and components start with a lower case letter.

Triggers:

  • <ObjectName>Trigger – The trigger itself. One per object.
  • <ObjectName>TriggerHandler – Class that handles all functionality of the trigger
  • <ObjectName>TriggerTest

Controllers:

  • <ClassName>Controller
  • <ClassName>ControllerExt
  • <ClassName>ControllerTest
  • <ClassName>ControllerExtTest

Classes:

  • <ClassName>
  • <ClassName>Test (These might be Util classes or Service classes or something else).

Visualforce pages and components:

  • <ControllerClassName>[optionalDescription] (without the suffix Controller). There might be multiple views so could also have an extra description suffix.

Object Names and custom Fields

  • Upper_Case_With_Underscores

Variables/properties/methods in Apex

  • camelCaseLikeJava – more easily differentiated from fields

Test methods in test classes

  • test<methodOrFunctionalityUnderTest><ShortTestCaseDesc> – For example, testSaveOpportunityRequiredFieldsMissing, testSaveOpportunityRequiredFieldsPresent, etc.

Working on something that would be used as an app or in some cases just a project? If yes, then do the following:

Prefix all custom objects, apex classes, Visualforce pages and components with an abbreviation so that they are easier to identify (e.g., easier for changesets). For example the WidgetFactory app would have the prefix wf on those. Additionally, when adding custom fields to a standard object they would also be prefixed to identify them as part of the app/package.

The main reason for the Object and Fields Names using Upper_Case_With_Underscores is that when you type in the name field or object with spaces it automatically adds the underscores. Although Apex is case insensitive, always refer to the Objects and Custom Fields in the code as Upper_Case_With_Underscores as well for consistency all around and consistency with what is generated by the SOQL schema browser and other tools. Object and Field Labels (which are generally ignored by code but visible to users) should keep spaces, not underscores.


Q. Why use Batch Apex?

A Batch class allows you to define a single job that can be broken up into manageable chunks that will be processed separately.

One example is if you need to make a field update to every Account in your organization. If you have 10,001 Account records in your org, this is impossible without some way of breaking it up. So in the start() method, you define the query you’re going to use in this batch context: ‘select Id from Account’. Then the execute() method runs, but only receives a relatively short list of records (default 200). Within the execute(), everything runs in its own transactional context, which means almost all of the governor limits only apply to that block. Thus each time execute() is run, you are allowed 150 queries and 50,000 DML rows and so on. When that execute() is complete, a new one is instantiated with the next group of 200 Accounts, with a brand new set of governor limits. Finally the finish() method wraps up any loose ends as necessary, like sending a status email.

So your batch that runs against 10,000 Accounts will actually be run in 50 separate execute() transactions, each of which only has to deal with 200 Accounts. Governor limits still apply, but only to each transaction, along with a separate set of limits for the batch as a whole.

Disadvantages of batch processing:

  • It runs asynchronously, which can make it hard to troubleshoot without some coded debugging, logging, and persistent stateful reporting. It also means that it’s queued to run, which may cause delays in starting.
  • There’s a limit of 5 batches in play at any time, which makes it tricky to start batches from triggers unless you are checking limits.
  • If you need access within execute() to some large part of the full dataset being iterated, this is not available. Each execution only has access to whatever is passed to it, although you can persist class variables by implementing Database.stateful.
  • There is still a (fairly large) limit on total Heap size for the entire batch run, which means that some very complex logic may run over, and need to be broken into separate batches.

Q. Documenting Salesforce.com Apex class files

I have used apexDoc for a while and we are starting to roll it out more fully for our use at my organisation. It is open source software and so you could always contribute some updates for it :-) What features are you wanting to add to it that it doesn’t have (just to give a flavour)?

In answer to your questions

1) I don’t think anybody has successfully managed to do this. There is an idea of the ideas exchange for it to be done but it seems to gain very little support.

2) Theoretically it should be pretty easy as apex is a Java DSL. Have you tried running Doxygen and if so what errors does it throw up?

3) I use ApexDoc to generate some basic output and then have a little script tied in to copy across custom css and things. It isn’t perfect but it does for the small amount we need at the moment.

I believe the IDE is being open sourced at some time in which case I would imagine the antlr grammar file would become available which may help you out.

I know it is not really an answer for what you wanted to hear per se, but sadly it’s all we have atm (and I would love a nicer documentation generator!!)

Paul


Q. Workarounds for Missing Apex Time.format() Instance Method

You could just split the DateTime format() result on the first space – does that give you what you’re looking for?

public String myDateFormat(DateTime dt) {
String[] parts = dt.format().split(‘ ‘);
return (parts.size() == 3) ? (parts[1] + ‘ ‘ + parts[2]) : parts[1];
}

produces

6:38 PM

for me in English (United States), and

18:42

in French(France).

UPDATE

As tomlogic points out, the above method is not very robust – some locales may include spaces in the date or time portion of the format, and the ordering is not consistent. This second attempt assumes that the date and time are separated by zero or more spaces, but handles spaces within the two portions, and either ordering of date and time. The only assumption made is that the formatted Date is contained within the formatted Time:

public String myDateFormat(DateTime dt) {
return dt.format().replace(dt.date().format(), ”).trim();
}

Seems to work fine for Hebrew, Vietnamese & Korean, as well as English and French.


Q. Is there an average method for apex math

Unfortunately the standard math methods only include simpler operations (i.e. those that work on a single, or two values), so it looks as though you’ll have to roll your own method.

Of course the number of script statements executed will be proportional to the length of the list, so of the lists are ever of a fixed size it could be worth using a macro to generate the addition part for you:

Int sum = i[0] + i[1] + … i[n];

Doing so would only count for one statement, but you’ll only need this if governor limits are of concern which is often not a worry.

If govenor limits aren’t an issue you could create a function along these lines:

Skip code block

Integer[] myInts = new Integer[]{1, 2, 3, 4, 5, 6, 7};
Integer total = 0;
Double dAvg;

for (Integer i : myInts) {
total += i;
}

dAvg = Double.valueOf(total) / myInts.size();

return dAvg;


Q. Grammar for creating an Apex parser

Keep an eye on Apex tooling api, which is used in Developer console. This is supposed to be released to public access soon.


Q. Does ‘default value’ do anything if the object is created through Apex?

New feature coming in the next release:

Foo__c f = Foo__c.sobjecttype.newSObject(
recordTypeId, // can be null
true); // loadDefaultValues


Q. Detect the current LoggingLevel in Apex

Unfortunately, I don’t think there is a way to check the current logging level in APEX.


Q. Call Apex class method on the fly (dynamically)

While you can instantiate a class based on its name using the Type system class, you can’t dynamically locate a method and execute it. The best that you can do is to dynamically create an instance of a class that implements an interface and execute one of the methods on the interface.

There’s more information on the Type class and an example in the :

Apex Developer’s Guide


Q. SOQL – query a query

It sounds like you’re talking about using nested SOQL queries. Here’s an example of querying a parent and two child objects in one query, using the relationship name for each related list of objects:

list<Account> accswithchildren = [select Id, Name, CreatedDate,
(select Id, CreatedDate from Tasks order by CreatedDate desc limit 1),
(select Id, Service_Date__c from Custom_Object__r order by Service_Date__c desc limit 1)
from Account where Id in :setofids];

You can then loop through those Accounts in Apex, and for each one, there is a list (size 0 or 1) of Tasks and Custom_Object__c:

for (Account a : accswithchildren)
{
list<Task> theseTasks = a.Tasks;
list<Custom_Object__c> otherobjects = a.Custom_Object__r;
//do something with these records
}


Q. What’s the best way to check if person accounts are enabled via Apex Code?

I’ve found two methods to accomplish this.

Method 1

Try to access the isPersonAccount property on an Account and catch any exception that occurs if that property is missing. If an exception is generated then person accounts are disabled. Otherwise they’re enabled. To avoid making person accounts required for the package you assign the Accountobject to an sObject and use sObject.get( ‘isPersonAccount’ ) rather than accessing that property directly on the Account object.

This method takes ~3.5ms and negligible heap space in my testing.

Skip code block

// Test to see if person accounts are enabled.
public Boolean personAccountsEnabled()
{
try
{
// Try to use the isPersonAccount field.
sObject testObject = new Account();
testObject.get( ‘isPersonAccount’ );
// If we got here without an exception, return true.
return true;
}
catch( Exception ex )
{
// An exception was generated trying to access the isPersonAccount field
// so person accounts aren’t enabled; return false.
return false;
}
}

Method 2

Use the account meta-data to check to see if the isPersonAccount field exists. I think this is a more elegant method but it executes a describe call which counts towards your governor limits. It’s also slightly slower and uses a lot more heap space.

This method takes ~7ms and ~100KB of heap space in my testing.

// Check to see if person accounts are enabled.
public Boolean personAccountsEnabled()
{
// Describe the Account object to get a map of all fields
// then check to see if the map contains the field ‘isPersonAccount’
return Schema.sObjectType.Account.fields.getMap().containsKey( ‘isPersonAccount’ );
}


Q. Can’t Deploy Due to Errors in 3rd Party Packages

It was previously possible to install managed packages and Ignore APEX Test Errors this isn’t the case anymore.

Your probably going to have to uninstall them if you want to deploy from Sandbox to production, and reinstall them.

If it’s Milestones PM (the package) is you can probably get an unmanaged version to work with and fix the bugs.

UPDATE

Looks like you are using the unmanaged package. So I think if you don’t want to uninstall before going to production your going to have to fix those errors manually by fixing the code.

Unfortunately, SFDC test methods don’t live in a complete vacuum where you can run tests against your org without bumping other code, even when you go to deploy.


Q. How Can I Tell the Day of the Week of a Date?

Formulas

There isn’t a built-in function to do this for you, but you can figure it out by counting the days since a date you know. Here’s the concept: I know that June 29, 1985 was a Saturday. If I’m trying to figure out the day of the week of July 9 of that year, I subtract the dates to determine the number of days (10), and then use modular division to figure to remove all the multiples of 7. The remainder is the number of days after Saturday (1 = Sunday, 2 = Monday, etc.) and you can use that number in your logic:

MOD(DATEVALUE( Date_Field__c ) – DATE(1985,7,1),7)

Apex Code

You could do the same thing with time deltas, but you can also use the poorly documentedDateTime.format() function:

// Cast the Date variable into a DateTime
DateTime myDateTime = (DateTime) myDate;
String dayOfWeek = myDateTime.format(‘E’);
// dayOfWeek is Sun, Mon, Tue, etc.


Q. What is App in Sales force?

An app is a group of tabs that work as a unit to provide functionality. Users can switch between apps using the Force.com app drop-down menu at the top-right corner of every page.

You can customize existing apps to match the way you work, or build new apps by grouping standard and custom tabs.

Navigation to create app in Sales force: Setup ->Build ->Create->App-> Click on new and create your application according to your requirements.


Q. What is object in Sales force?

Custom objects are database tables that allow you to store data specific to your organization in salesforce.com. You can use custom objects to extend salesforce.com functionality or to build new application functionality.

Once you have created a custom object, you can create a custom tab, custom related lists, reports, and dashboards for users to interact with the custom object data. You can also access custom object data through the Force.com API.

Navigation to create object in sales force: Setup->Build->Create->Object-> Click on new object and create object according to your requirement.


Q. How many relationships included in SFDC & What are they?

We are having two types of relationships, they are

Lookup Relationship

Master-Detail Relationship


Q. What is a “Lookup Relationship”?

This type of relationship links two objects together,

Up to 25 allowed for object

Parent is not a required field.

No impact on a security and access.

No impact on deletion.

Can be multiple layers deep.

Lookup field is not required.


Q. What is “Master-Detail Relationship”?

Master Detail relationship is the Parent child relationship. In which Master represents Parent and detail represents Child. If Parent is deleted then Child also gets deleted. Rollup summary fields can only be created on Master records which will calculate the SUM, AVG, MIN of the Child records.

Up to 2 allowed to object.

Parent field on child is required.

Access to parent determines access to children.

Deleting parent automatically deletes child.

A child of one master detail relationship cannot be the parent of another.

Lookup field on page layout is required.


Q. How can I create Many – to – Many relationship?

Lookup and Master detail relationships are one to many relationships. We can create many – to – Many relationship by using junction object. Junction object is a custom object with two master detail relationships.


Q. A custom object contains some records, now my requirement is to create field in this object with master detail relationship. Can we create master detail relationship in this case?

No, directly we cannot create master details relationship if custom object contains existing records.

Following are the steps to create to create master-detail relationship when records are available in custom object.

  1. First create field with lookup relationship.
  2. And then associate look field with parent record for every recordNext change the data type of the field from look up to Master detail.

Q. List examples of custom field types?

Text, Pick list, Pick list (multi select), Date, Email, Date/Time, Date, Currency, Checkbox, Number, Percent, Phone, URL, Text Area, Geolocation, lookup relationship, master detail relationship etc…..


Q. What is TAB in Salesforce?

Tab is a user interface component to user creates to display custom object data.

There are three type of tabs.

Custom Tabs

Visual force Tabs

Web Tabs


Q. What are the actions in workflow?

  1. Email Alert
  2. Task
  3. Field Update
  4. Outbound Message

Go through the below link for the more information about workflow actions        http://www.salesforcetutorial.com/salesforce-workflow-automation-workflow-management/


Q.  How many ways we can made field is required?

  1. While creation of field
  2. Validation rules
  3. Page Layout level

Q.  What is difference between Role and Profile?

Role is Record level access and it is not mandatory for all users.

Profile is object level and field level access and it is mandatory for all users.


Q. What is the maximum size of the PDF generated on visualforce attribute renderAs?

15MB


Q.  How many controllers can be used in a visual force page?

Salesforce come under SAAS so, we can use one controller and as many extension controllers.


Q.  What is difference between Action support and Action function?

Action function:  Invoke the controller method from java script using AJAX and we can use action function from different places on visual force page.

Action support: Invoke the controller method using AJAX when even occurs on page like onMouseOver, onClick, ect… and we can use action support for particular single apex component.


Q. How many ways we can call the Apex class?

  1. Visual force page
  2. Web Service
  3. Triggers
  4. Email services

Q. How to create Master Details relationship between existing records?

Directly we can’t create Master Detail relationship between existing records, first we have to create Lookup relationship and provide valid lookup fields and it shouldn’t  null.


Q. What is permission set?

Permission sets extend user’s functional access without changing user’s profile.

Ex:  A user has only read access through profile on custom object, administrator want to give access Edit and create operations to him without changing the profile. Administrator creates the permission set having edit and creates operation on custom object and assign to that user.


Q. What is manual sharing?

Manual sharing is to share a record to a particular user manually.

Go to detail page of record and click on manual sharing button and assign that record to other user with Read or Read/Write access.

Manual Sharing button enables only when OWD is private to that object.


Q. How we can change the Grant access using role hierarchy for standard objects?

Not possible.


Q. What is the use of “Transfer Record” in profile?

If user have only Read access on particular record but he wants to change the owner name of that record, then in profile level Transfer Record enables he can able to change the owner.


Q. What is Field dependency?

According to the field selection on one field filter the pick list values on other field.


Q. Is check box performs like controlling field?

Yes possible. Controlling field should be Check box or pick list.


Q. How many field dependencies we can use in Visual Force page?

Maximum we can use 10 field dependencies in VF page.


Q. What is Roll-up summary?

Roll-up displays the count of child records and calculate the sum, min and max of fields of the child records.


Q. How to create Roll-up summary field on lookup relation?

Not possible. Roll-up summary is enabled for only Master –Detail relationship.


Q. What are the Record Types?

Record Types are restrict the pick list values and assign to the different page layouts for different Record Types.


Q. What is Audit Trail?

Audit Trail provides the information or track all the recent setup changes that an administrator done to the organization.

This can store the last 6 months data.


Q. What are the Report Types?

4 Types of report in Salesforce

       Tabular Reports: We can only displays the grand total in the table form.

        Summary Reports: It is a detail form of report in which the grouping done based on Columns.

       Matrix Reports: It is a detail form of report in which the grouping done based on both Rows and Columns.

       Joined Reports: We can join the two or more reports in the single report displayed in the form of blocks.


Q. What is Dashboard?

Dashboard is a pictorial representation of report. We can add up to 20 reports in single dashboard.


0 Responses on SalesForce Interview Questions"

Leave a Message

Your email address will not be published. Required fields are marked *

Copy Rights Reserved © Mindmajix.com All rights reserved. Disclaimer.
Course Adviser

Fill your details, course adviser will reach you.