A Developers Blog

This blog has moved to GitHub, and you should be redirected shortly...

Sunday, August 16, 2015

AEM Interview Questions PDF

When you are preparing for technical interview, it is sometimes beneficial to know what types of questions that may be asked during your interview.

Instead of having to have you read through multiple posts, I figured it would be beneficial if all of the questions were located in one place.

So, I decided to create a PDF version of all the interview questions and answers that I have previously posted.

Inside the document, you will find a table of contents that lists all of the questions, and what page they are located on in the PDF. Also, for each question there are references to where you can read more information on the topic.



If you are interested in obtaining a copy of the PDF, you can download the PDF by clicking on the pop out button in the embedded window, or by downloading it from here: AEM Interview Questions PDF

I hope you find the PDF beneficial. If you have any questions or comments, please feel free to post them below.

Labels: , ,

Tuesday, May 26, 2015

AEM Interview Questions Part 8

This is part eight of my AEM interview questions. You find the other parts here:

Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - PDF

Here are some more AEM interview questions that could come up during a technical interview:


QWhat is the Query Builder?

A: The Query Builder API is used will allow you to use the builder to accepts any query description, create and run an XPath query, and filter the result set.


This is useful because it will allow you to search through the whole repository. It can also be used to fine where certain nodes are used.

    Q: How do you move content from one server to another?

    A: You can move content from one server to another in two ways. One way is to using the package manager to create a package of all the content you would like to move. Once this is done, download the package and install it in the new server.


    You can also set up a replication agent to replicate this content to another server.

    Q: Are there any components that you have used in your project that are not relevant to an out of the box component?

    A: This is mostly an experienced based question that is likely to come up in one form or another. Be prepared to discuss these components in full detail by talking about how they functioned, your thought process behind them, etc.

    I plan to add more interview questions to this blog, so make sure to check back.

    I hope you enjoyed this post. Please feel free to post any comments below.

    Labels: ,

    Wednesday, May 6, 2015

    AEM Interview Questions Part 7

    This is part seven of my AEM interview questions. You find the other parts here:

    Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - 
    Part 8 - PDF

    Here are some more AEM interview questions that could come up during a technical interview:


    Q: How can you inherit properties from one dialog to another?


    A: You can inherit properties from one dialog to another if the new component has the “sling:resourceSuperType” and this property is set to the base component. This will automatically inherit all the properties from the original dialog.

    If you only want to inherit certain tabs from a dialog, you can use the “cq:include” xtype to inherit just that tab.

    Q: What are Clientlibs?

    A: AEM allows you to create Client-side Library Folders, which allow you to store your client side code in the repository, organized it into categories, and define when and how each category of code is to be served to the client.

    These folders are a nice way of keeping all of your JavaScript and CSS files in one location, and a way to call all the files with one line of code.

    Q: What are workflows?

    A: Workflows are a way to automate Experience Manager activities. They are a series of steps that are executed when they are triggered. Some examples of these steps are activating a page, sending an email, approving a page, etc.

    Workflows can be used to implement approval processes and to receive sign-off by various participants.

    Q: What is FileVault?

    A: FileVault is a tool that is offered by Adobe that will map the content of the CRX instance to your file system. The VLT tool is similar to a Subversion client since it will allow you to checkout content and to check-in content.

    I plan to add more interview questions to this blog, so make sure to check back.

    I hope you enjoyed this post. Please feel free to post any comments below.

    Labels: ,

    Tuesday, April 28, 2015

    AEM Interview Questions Part 6

    This is part six of my AEM interview questions. You find the other parts here:

    Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - 
     Part 7 - Part 8 - PDF

    Here are some more AEM interview questions that could come up during a technical interview:


    Q: What is the difference between Parsys and Iparsys?


    A: Parsys is a compound component that lets authors add components of different types to a page and contains all other paragraph components. Iparsys is a paragraph system that will allow to inherit the parent paragraphs from the parent.

    Q: Can you restrict certain users from seeing digital assets?

    A: Yes, you can restrict access to certain folders in the DAM by using closed user groups. You can do this from the digital assets menu, right click on the folder that you want to add this property to, and click “properties”. Then you go to the CUG tab and add the required information.

    Q: What is segmentation?

    A: Segmentation is used when you want to target your content towards your sites visitors in order to offer a more personalized site. This is done by analysing and characterizing a visitor’s activity on the website, their profile, and their activity on other websites.

      Q: What is the persistence manager?

      A: The persistence manager is handles the storage of the node/property tree that makes up the structure of the repository. This includes the name and the position of each node and property in the hierarchy. The default persistence manager is the TarPersistenceManager.

      Q: What is a farm file?

      A: A farm file is a file that is used in the configuration of a dispatcher. These are used when you want to break up the configuration file that is used for the dispatcher. They are then added under the “/farms” section in the “dispatcher.any” file.

      I plan to add more interview questions to this blog, so make sure to check back.

      I hope you enjoyed this post. Please feel free to post any comments below.

      Labels: ,

      Wednesday, April 15, 2015

      AEM Interview Questions Part 5

      This is part five of my AEM interview questions. You find the other parts here:

      Part 1 - Part 2 - Part 3 - Part 4 - 
      Part 6 - Part 7 - Part 8 - PDF

      Here are some more AEM interview questions that could come up during a technical interview:


      QWhat is a replication agent?


      A: A replication agent is used to publish active content from the author environment to the publish environment, to flush content from the dispatcher cache, and return user input from the publish environment to the author environment. The replication agents are central to AEM.

      Q: What is resource mapping?

      A: Resource mapping is used to define redirects, vanity URLs and virtual hosts for AEM. You can use resource mapping to prefix all requests with “/content” so the internal structure of the AEM site is hidden from your visitors. You can also use resource mapping to define a redirect so that all requests to the gateway page of your site are redirected to another site.

      Q: What is resource resolution in Sling?

      A: Resource resolution in Sling is how Sling takes a URL and attempts to resolve it to a script. This is done by extracting information from the URL. Here is an example URL:

      http://myhost/tools/spy.printable.a4.html/a/b?x=12

      It can be broken down as follows:

      Protocol
      Host
      Content path
      Selector(s)
      Extension

      Suffix

      Param(s)
      http://
      myhost
      tools/spy
      .printable.a4.
      html
      /
      a/b
      ?
      x=12

      Sling uses the content path that is extracted from the request to locate the resource in the JCR. When this resource is located, the sling resource type is extracted, and then it is used to located the script to be used for rendering that content.

        Q: What design patterns are used in AEM?

        A: Since AEM is built using OSGI, many of the design patterns for OSGI are valid. Some of these design patterns are Singleton (Service), Adapter Service, Resource Adapter Service, and Whiteboard. 

        Also, since AEM is modular, you should be able to use any design pattern in your application.

        Q: What is reverse replication?

        A: Reverse replication is the process of replicating content from publish environment to the author environment. In order to accomplish this you need a reverse replication agent on your author instance that is configured to get content from the publish environment outbox.

        I plan to add more interview questions to this blog, so make sure to check back.

        I hope you enjoyed this post. Please feel free to post any comments below.

        Labels: ,

        Wednesday, April 8, 2015

        AEM Interview Questions Part 4

        This is part four of my AEM interview questions. You find the other parts here:

        Part 1 - Part 2 - Part 3 - 
        Part 5 - Part 6 - Part 7 - Part 8 - PDF

        Here are some more AEM interview questions that could come up during a technical interview:


        QHow does sightly differ from other templating systems?


        A: Sightly differs from other templating systems in three ways. Sightly is secure by default, it offers separation of concerns, and sightly is HTML5 because it is a valid HTML5 file. Sightly is secure by default because it automatically filters and escapes all variables being output to the presentation layer to prevent cross-site-scripting vulnerabilities.

        Sightly offers seperation of concern because it is purposely limited to ensure that a real programming language is used to express the corresponding logic. This is done through the Use-API pattern.


        Q: Can you create a page without a template?

        A: Pages are usually created by selecting a template for the page when you create them in the Website console. However, a page can be created manually in the crxde by using the same properties that are created when you make a page in the Website console.


        For example, in crxde under the content folder, create a node with the following type “cq:Page” and save it. Then add a child node with the following type “cq:PageContent”. Then you can add the required properties to show any components you want displayed on the page.

        It is generally not good practice to create pages manually.

        Q: What are xtypes and how are they useful in AEM?

        A: In the ExtJS language an xtype is a symbolic name given to a class. In AEM these xtypes are widgets that used in the creation of components. AEM comes with a bunch of widgets that are available out of the box. You can also create and define your own xtype to be used in AEM.

        An example of an xytpe is when you are creating your dialog for your component, and you want the author to be able to enter text, you would add a “cq:Widget” that has an xtype property of “textfield”.

          Q: How do you add properties to the Page Properties dialog?

          A: You can add properties to your page properties dialog by copying the dialog located under “libs/foundation/components/page/dialog” and adding it to your page template. This will allow you to add new tabs and add new properties that you would like the author to chooses from for pages that use that template.


          You could modify the original page dialog as well to get the same result, however it is not recommended.

          Q: What is the difference between the Author and Publish environment?

          A: A production environment usually has two difference instances of AEM running. One is the author instance, and the other is the publish instance. These two instances are usually kept in two different settings.

          The author instance is where you will enter and manage content for your website. This is where you will administer your site as well. The author environment is usually kept behind a firewall. The publish instance is where you will make your content available for your targeted audience. The publish environment is usually kept in a Demilitarized Zone (DMZ).

          I plan to add more interview questions to this blog, so make sure to check back.

          I hope you enjoyed this post. Please feel free to post any comments below.

          Labels: ,

          Wednesday, April 1, 2015

          AEM Interview Questions Part 3

          This is part three of my AEM interview questions. You find the other parts here:

          Part 1 - Part 2 - 
          Part 4 - Part 5 - Part 6 - Part 7 - Part 8 - PDF

          Here are some more AEM interview questions that could come up during a technical interview:

          QHow do you build a bundle through crxde?

          A: You can build a bundle through crxde by navigating to the source folder of your project located under “apps”. Once you do this, right click on the “src” folder and choose to create a bundle. This will open the wizard that will walk you through creating your bundle.

          It is recommended that you no longer use crxde to create OSGI bundles for AEM. Instead you should be using Maven.

          Q: What is the purpose of the Activator.java file?

          A: The purpose of the Activator.java file is that it is to be notified any time there are bundle start and stop events for that bundle. The Activator.java file is an optional listener class that is created when you create a bundle through crxde.

          Q: What is a CQ5 overlay/override component?

          A: The overlay/override component is used when you want to use an out of the box component in AEM and you want to add extra features to it and you want to change it across all instances of that component. For example if you want to add features to the out of the box “text” component, but you don’t want to create a new component, you would want to copy the “text” component from “libs/foundation/components” to “apps/foundation/components” and keep the same folder structure that is used.

          When this is done, any changes that done to this new component will be reflected in the out of the box “text” component, without changing the original code under “libs”. It is generally not a good practice to modify the original code, which is why CQ offers the ability to use overlays.

          Q: What is the difference between a dialog and a design dialog?

          A: A dialog is a key element of the component because they provide an interface for authors to configure and provide input to that component. This input will be stored at the page level in the jcr.


          A design dialog is a dialog that will only display when you are in design mode in AEM. The input that is received here will be stored at the template level and will be accessed across the whole site.

          Q: What is extending a component?

          A: Extending a component is when you want to create a new component that will not override a base component, but will have the same features as the original so that you can change or build upon that component.

          In order to extend a component, you must set the “sling:resourceSuperType” of the component to the base component you would like to extend. By doing this, you will inherit everything from the base component.
          I plan to add more interview questions to this blog, so make sure to check back.

          I hope you enjoyed this post. Please feel free to post any comments below.

          Labels: ,

          Thursday, March 26, 2015

          AEM Interview Questions Part 2

          This is part two of my AEM interview questions. You can find the other parts here:

          Part 1 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - Part 8 - PDF

          Here are some more AEM interview questions that could come up during a technical interview:


          QWhy is a Content Management System (CMS) required?

          A: A content management system is a piece of software that is used to create and manage documents and Web sites. Many websites are dynamic, so their content needs to be updated frequently. In order manage these changes efficiently, it is recommend that a content management system be used. Which is why AEM is a content management system.


          QWhat is RESTful?

          A: Representational State Transfer (REST) is an architectural style and an approach to communications that is often used in the development of web services. It relies on a stateless, client server, cacheable communications protocol. RESTful applications use HTTP requests to post data, read data, and delete data.


          The six architectural constraints of REST are: uniform interface, stateless, cacheable, client server, layered system, and code on demand.

          QWhat are the benefits of using OSGI?

          A: The main benefits of using OSGI are:
          • It reduces the complexity of the system by having everything in bundles.
          • It makes the components loosely coupled and easy to manage since they can be installed, deleted, updated, started, and stopped at run time.
          • It increases the performance of the system since parts of the application that are not in use, do not need to be loaded in the memory.

          QWhat is the listener property in AEM?


          A: The listener property in AEM for a component is used to define what happens before or after an action on the component. This is added by using the “cq:listeners” node with a node type of “cq:EditListenersConfig”.

          The listener property can also be added to any widget in AEM. In order to add a listener to that widget you just need to add to add a node that is called “listeners” with a type of “nt:unstructured”. Then you just need to add child nodes to the “listeners” node that are events of that widget. You can find a list of events for each widget by searching CQ Widget API documentation.

          QHow do you load digital assets in dam?


          A: You can add digital assets to your dam by using the graphical user interface or through WebDav access. If you are using the graphical user interface, you would just browse for the selected files you would like to add, and then cq will create the metadata for those assets in the dam folder. You would generally use the WebDav option when you want to upload a large number or assets at once.

          I plan to add more interview questions to this blog, so make sure to check back.

          I hope you enjoyed this post. Please feel free to post any comments below.

          Labels: ,

          Wednesday, March 11, 2015

          AEM Interview Questions Part 1

          When you are preparing for technical interview, it is sometimes beneficial to know what types of questions that may be asked during your interview. I am going to list some questions that may be asked during an AEM interview, and the answers to these questions. This is not a definitive guide by any means, but a way to get going in the right direction.

          This is part one of my AEM interview questions. You find the other parts here:

          Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7 - Part 8 - PDF

          Q: What is AEM?

          A: Adobe Experience Manager (AEM), is a java based content management system that is offered from Adobe. It was previously called Day CQ5, but was acquired from Adobe in 2010. AEM is based on a content repository and uses the JCR to access the content in the repository. AEM uses the Apache Sling framework to map request url to the corresponding node in the content repository. It also uses the OSGI framework to internally allow modular application development.

          Q: What are the advantages of AEM over another CMS?

          A: One big advantage of AEM over another CMS is how it integrates with other products from Adobe and with the Adobe Marketing Cloud. AEM comes built in with features like workflows to control content in the CMS, the use of search queries to find anything you are looking for, setting up social collaboration, tagging content, and a way to manage your digital content.

          AEM also includes a way to manage mobile applications, mobile websites, e-commerce, and marketing campaign management. 

          Q: What is the technology stack that CQ5 is based on?

          A: The CQ5 technology stack is based on three technologies. These technologies are: Apache Sling, OSGI (Apache Felix), and the Java Content Repository (JCR).

          Apache Sling is a RESTful framework that is used to access a jcr over http protocol. It will then map that request url to the node in the jcr.

          OSGI is a framework that is used for modular application development using Java. Each module, which is called a bundle, can be stopped and started independently during runtime.

          The Java Content Repository uses the JSR-170 API to access the content repository by using Java independently of the physical implementation. CQ5 uses its own implementation of the jcr called CRX.

          Q: What is the role of the dispatcher?

          A: The dispatcher is AEM’s caching and/or load balancing tool. By using the dispatcher it can also help protect your AEM server from attack since it will be using cached pages. The goal of the dispatcher is to cache as much content as possible, so it does not need to access the layout engine.

          Load balancing is the practice of distributing computational load of the website across several instances of AEM.

          The benefits of using the dispatcher as a load balancing tool is so that you gain increased processing power since the dispatcher shares document requests between several instances of AEM, and to have increased fail-safe coverage. This is accomplished by if the dispatcher does not receive responses from an instance, it will automatically relay the request to another instance.

          Q: What is sightly?


          A: Sightly is an HTML templating language that was introduced in AEM 6.0. It is meant to take the place of JSP files and is the preferred templating system for HTML. The name sightly means “pleasing to the eye”, and its focus is to keep your markup beautiful and maintainable.

          I plan to add more interview questions to this blog, so make sure to check back.

          I hope you enjoyed this post. Please feel free to post any comments below.

          Labels: ,