15 March 2013

Sitecore Interview Questions Part -1



Hi People,

For very long time i am away with my blog because i am busy in some other work. Meanwhile i give almost 9 trainings in last year all to IT Services Corporates. Many times i have been asked to give them a volley of question which they can ask before hiring Sitecore Resources for there own project requirement or participants ask that what could be most general questions in Sitecore ?

One surprise/wiered i face in interview is Interviewer have no or little experience in Sitecore but he have good experience in traditional .NET development (Sometime guys from Java world too :-) ) ask all non-sense question which have nothing to do with Sitecore. For example :- 

a) can you explain Session Facade.
b) Can you explain Analysis pattern. etc.,

My point is if you are preparing for an senior profile you should be aware of possible design patterns and those areas which even nothing has to do with Sitecore. Recruiter will believe on there Senior Guy not on you though you may have years of experience in Sitecore.

I will keep updating this list in next post with new questions. May be i am wrong in some answers please do notify me and if you have question please let me know so that we all together can improve this list.

So now i started this post today to answer that need, please found the following questions for interview:-

What is the Sitecore?
Sitecore is a software platform that is good for making and updating full featured and dynamic websites of every possible type(Implemented in various industry domains and vertical). It has the advantages of scaling, flexibility and can very well integrate in third party systems, marketing platforms, overall giving the visitors a very dynamic user experience.

What is the purpose to use a CMS?
This is not a hard question, but we don’t have to focus on managing web content as the strength of a CMS because this is not the entire picture. Content Management Systems give us much more than content management, like giving us the possibility to get the content ownership outside of the subject matter experts. This thing is known to have impact on all CMS platforms like Sitecore, Umbraco, Interwoven, Drupal, Ektron, WordPress or others.

Why Should we implement Sitecore (Business Driver)?
Sitecore CMS uses the .NET technology, so if our company is a Microsoft shop, Sitecore will fit great. Sitecore is better than many other platforms based on .NET like SharePoint or Opentext. Apart from this CTO kind of reason there could be more business drivers like online marketing approach, personalized experience for you visitor or if you host eCommerce based website etc.,

Can you divide phase of Sitecore implementation ?
Implementing Sitecore is an Investment and Strategic move towards being digital. It involves following phases:
Pre-implementation / Analysis
Before we choose Sitecore or any CMS we have to consider our processes and workflows. We must to see where we will put our content and how will we publish it, what strategy and what architecture do we have for our business entities, what needs to be changed, what is down the line marketing policy online, do we need personalization, what kind of engagement you need for your visitors etc. After we get answers to these questions (which were not really easy). You need to figure out the broad objective you want to accomplish from Sitecore.
Time spent on Analysis should be enough and some time more then build.
Implementation
After pre-implementation we have to implement our Sitecore CMS platform. The first phase is gathering our appropriate staff and make some training to get certified them. Being more than a simple paper, the certification helps our team to be more in the know of the Sitecore terminology. If this phase is skipped we will have to do it anyway later at a higher cost so it’s better to save money now. Of course implementation consist build and deploy too.
Sitecore Implementation is not a one step implementation rather it is journey of your corporate towards the Digital platform.

What do you know about these three parts of CMS implementation: Development, Content Authoring and Training?
Development: Is the slightly same as other Web Application .NET based development, it is not hard but we must focus on the platform architecture, the IT infrastructure, Team environment and build deployment practices etc.,
Content: Now that we have a Content Management System we can begin the content architecture implementation and putting sample content in the Sitecore content tree. This job has to be done by developers/content team and not by the content owners.
Later onward Sitecore Authors can put the content in separate instance while build team is focused on the building dynamic part of the project.
User Training: Not only that we have to make the website, content and applications, but we must also begin the introduction of the Sitecore CMS to the users of the company. This implies having a lot of meetings, training and talking about the purpose and the advantages of CMS. We also have to see end-user training are very important.

What is the difference between these Content Management Systems: Sitecore, Umbraco and EPI server?
Episerver has a lot of positive feedback. 
Sitecore has the enterprise level and the price is also at the enterprise level. Sitecore is developer friendly, extensible and has a big community is case we look for support, it has a content structure as a tree of nodes, it is known to lead the content management market and is there in Gartner's Magic Quadrant for WCMS from last 5 years. 
Umbraco has many similarities with Sitecore being constructed on ASP.NET but is a little cheaper. It also has a great community. 

Actually company will choose one of these depending of taste, money and the style that we have when working.

What is page in Sitecore?
There is no physical page in Sitecore or ASPX Web Form page in other words. In Sitecore all are items from business user prospective end result or particular URL in Sitecore may called as Page. To edit this page using WYSIWYG editor sitecore gives interface called Page Editor.

When editing a page and publishing it, the modifications are not visible, why?
When the user clicks publish, the program may tell you that the publishing was successful even if the version published is not the same with the version we have worked at. 
For this to we must unlock the page version prior to publishing, this practice should be followed when you are not admin in the Sitecore.

What is the best place for our Word and PDF documents?
Word, PDF, Excel, Power Point documents will have their place where the images are which is  in the media library, so they don’t have a particular folder provided by Sitecore, they must be placed wherever we place the pictures. Though standard practice suggest that we should create appropriate directory structure within media library before storing any media there.

What is the meaning of the sea watchtower image that appears at after Sitecore log in?
This image appears because you are not logged in to the Content Editor, but to the desktop mode. The button from the bottom left corner of the display must be pushed (it has the “Sitecore” label on it), then we must click the “Log off” button for returning to the login page. From here the login procedure will be normal: we must hit “Content Editor” before entering credential, insert the user and password then “Login”.

When we make cloned items in Sitecore 6.4, modify the template to an edited copy is it true that the parent of the clone’s inheritance will be damaged?
Since we can think that clones are not fully fledged items so modifying a template is not damaging the construction of the clone.

How can we access pages in the way that they behave like folders?
First we must make sure that add AspxExtension is set to false in LinkManager and then we have to map the wildcard extension into IIS. According to what version of IIS we do have there are many ways of doing this.

In what way is the use of XSL better than C# in Sitecore?
XSLT has advantages over other programming languages in the way that it gives you the possibility to customize or reuse a large variety of pages or various structures for source documents or other structure. For doing this a rule-based processing model will be used, a thing not liked by most people because of the apparent difficulty that is has on first use. Even if this seems hard at first, it can be viewed like a long term investment. XLST has less performance issues until we use wrong querying like using descendants XPath query, if a website appears to have performance problems, it must be from other reason. 

How do we manage errors in the case we use multiple Sitecore websites?
When we make a multiple-site project in Sitecore we have to use webconfig’  ErrorPage, LayoutNotFoundUrl, LinkItemNotFoundUrl, ItemNotFoundUrl, this is for a single site.
If we want to show a different error page for every site we can store the error page URL’s of every site like attributes for the elements of /configuration/sitecore/sites/site from web.config with the extending of the Sitecore.Sites.SiteContext class. For ItemNotFoundUrl we can use a file or item as a 404 page.
When 404 is managed with items we can add a processor for the pipeline httpRequestBegin and the context item will become th 404 item if we have a null context item.In the case of files overriding Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleItemNotFound(), also Sitecore.Resources.Media.MediaRequestHandler.DoProcessRequest(), after that we will update the references of the file web.config.
For ErrorPage we sould do the overriding of Sitecore.Pipelines.RenderLayout.SecurityCheck.Process and after that update the web.config reference. For LayoutNotFoundUrl the overriding must be done to Sitecore.Pipelines.HttpRequest.ExecuteRequest.HandleLayoutNotFound and update the web.config reference.For LinkItemNotFoundUrl we can add a processor for the piepeline renderField to replace the initial value of the setting with the corresponding value of the context site.

What is the purpose of the “shared” check box that we find if we add a field to the template?
When checking this box, the field has a single value regardless of the parent item version. When setting the shared property, if we modify the value of the field it would be seen also in all the versions or languages. Using shared fields is not a recommended option because they don’t relate to workflow.

How can create only one form for many pages in Sitecore (WFFM)?
Usually Sitecore makes one new form for every new page. For doing one form for multiple pages we must access “Presentation/Layout” where we will hit “Form Interpreter”. Now everything depends on the WFFM versions use (1 or 2). If we use 2 we can find the “FormID” field for our selected form. We have to add the same rendering for each page in which we want to see the form. When using version 1 there is this “FormID” parameter along with Sitecore ID, this ID has to be copied along with the similar renderings for the other pages.

Which is the usual maintenance process that we must make on a Sitecore server?
The steps of maintenance for a Sitecore server are:
a) The IIS, the System logs and Sitecore must be checked for errors.
b) We must test the response times regarding the capacity problems within IIS logs.
There are other procedures that have to be done monthly to assure that Sitecore functions properly. Here are some of them:
1) The links database has to be reconstructed if we update the content constantly.2) The search indexes have to be rebuild in the case we use Lucene search and update content constantly.3) When moving or deleting much content we must be aware of the fragmentation.
Can we copy value of fields if we make new version in Sitecore?
The Shared and Un-versioned checkboxe from Sitecore permit us to spread the value of fields to languages or versions.

But can we copy the fields from the initial language into a new one if we put a new version of the language? 
By default, no but there are some methods:
a)    If we use “Translate” we can obtain the view of two item versions in two sides, being able to makes changes between them, we can’t do the copying automatically but there is the advantage of not having to modify the versions all the time.
b)    There is another method like writing some event handlers to communicate with the Sitecore API. Then the old version values have to be copied to the new version.

What is the way to get access of  settings values of Sitecore programmatically?
There is a good way by accessing the code for example we can find the setting using which we can know the location of data folder.
 //DataFolder: 
string dataFloder=Sitecore.Configuration.Settings.DataFloder;

In case of fast query, is it possible to have relative path beginning with the item that the query is running from?
There isn’t any way of operating fast query from the item context.

Elaborate on the different ways in which you can support a multi lingual site within Sitecore
  • You expect the candidate to illustrate how important the setup of the content tree is pre-development.
  • Using Sitecore’s built in language versioning.
How can you grab the specific version of an item programmatically?
  • Sitecore.Context.Database.GetItem(id/path, language);
How do you publish an item programmatically?
  • You will need to refer the parent/source database and the target database, e.g
  • You will need a reference to the target/fall back language
  • Use Sitecore.Publishing.PublishManager.PublishIncremental or any appropriate publishing type within the Publishing manager class
What are workflows, how do you set an instance up within Sitecore
  • The allow you to attach a sequence of events and states to a Sitecore item.
  • The general purpose of workflow is to get item reviewed and approved before publishing but not limited to it.
  • They can be setup within the Sitecore system folder
How do you pass parameters to a workflow action and how can you call a type within your code once a workflow state has been triggered.
  • Use an auto publish action template for the state
  • Pass in the Parameters as key/value pairs in the parameters field.
  • To call a type, provide the fully qualified path of the type in the type string field eg. CompanyName.TS.BusinessLogic.Workflow.Actions.CustomAutoPublishAction, CompanyName.TS
What are Aliases and how can they be useful?
  • It is useful when you are required to point to an item nested deeply within the content tree, i.e. point “/sitename/News/2013/In Brief/Man on the moon” to www.sitename.com/manonmoon. The newly setup alias acts as a proxy to the real item.
  • Very experienced Sitecore developers would touch base on how you can extend the functionality for multiple sites.
I need to perform an operation of an Item within code, I am running into some security issues, and how can I potentially fix this.
  • Wrap the code around the Sitecore.SecurityModel.SecurityDisabler() context.