



















































































Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
This guide provides a complete roadmap for developers preparing for the Episerver Certified Developer exam. It covers core platform architecture, CMS customization, content modeling, templates, personalization, deployment, and troubleshooting. With hands-on examples, best practices, and targeted review sections, candidates gain both practical development skills and exam readiness.
Typology: Exams
1 / 91
This page cannot be seen from the preview
Don't miss anything!




















































































Question 1. Which NuGet package provides the core APIs for accessing content in an Optimizely (Episerver) site? A) EPiServer.CMS.Core B) EPiServer.Framework C) EPiServer.CMS.UI D) EPiServer.ServiceApi Answer: A Explanation: EPiServer.CMS.Core contains the IContentRepository, IContentLoader, and other essential content APIs. Question 2. In the Optimizely One ecosystem, the term “DXP” refers to which of the following? A) A headless CMS only B) The cloud‑based Digital Experience Platform offering SaaS services C) An on‑premises content repository D) A static site generator Answer: B Explanation: DXP (Digital Experience Platform) is Optimizely’s SaaS offering that includes CMS, commerce, and marketing tools in a cloud environment. Question 3. Which of these is the correct way to register a custom service for dependency injection in Startup.cs? A) services.AddTransient(); B) services.AddSingleton(); C) services.AddScoped(); D) All of the above are valid depending on the desired lifetime
Answer: D Explanation: ASP.NET Core DI supports Transient, Scoped, and Singleton lifetimes; the appropriate method depends on how often the service should be instantiated. Question 4. What is the primary difference between the Content Cloud (PaaS) and Optimizely SaaS CMS? A) PaaS runs on Azure VMs, SaaS runs on AWS B) PaaS requires manual server management, SaaS is fully managed by Optimizely C) PaaS only supports headless delivery, SaaS does not D) There is no difference; they are the same product Answer: B Explanation: The traditional Content Cloud (PaaS) requires customers to manage infrastructure, whereas the SaaS CMS is a fully managed service. Question 5. Which interface is responsible for loading content by its ContentReference without considering version or language? A) IContentRepository B) IContentLoader C) IContentCache D) IContentVersionRepository Answer: B Explanation: IContentLoader provides methods like Get(ContentReference) that retrieve the latest published version, ignoring specific version numbers. Question 6. The Content Delivery API in Optimizely is primarily used for: A) Admin UI customization
Question 9. Which command creates a new Optimizely site using the dotnet CLI template? A) dotnet new episerver-cms – n MySite B) dotnet new optimizely-cms – n MySite C) dotnet new episerver – n MySite D) dotnet new episerver-cms – n MySite Answer: D Explanation: The correct template name is episerver-cms; the command creates a new project scaffold. Question 10. To update the database schema after adding a new property to a PageData type, which command should you run? A) episerver syncdb B) dotnet ef migrations add AddNewProperty C) dotnet episerver database update D) dotnet episerver db update Answer: D Explanation: The dotnet episerver db update command applies schema changes based on the updated model. Question 11. When configuring multiple environments, which setting is typically stored in appsettings.Production.json? A) Logging level for development B) Connection string to the production database C) Debugger launch settings D) Sample data for local testing Answer: B
Explanation: Production‑specific settings like the live database connection string belong in appsettings.Production.json. Question 12. Which attribute marks a class method as a scheduled job in Optimizely? A) [BackgroundJob] B) [ScheduledJob] C) [CronJob] D) [RecurringTask] Answer: B Explanation: The [ScheduledJob] attribute registers the method with the Optimizely scheduled job framework. Question 13. In content modeling, which base class should a custom block inherit from? A) PageData B) BlockData C) ContentData D) ModelBase Answer: B Explanation: Custom blocks extend BlockData, which provides block‑specific functionality. Question 14. Which attribute makes a property editable per language in the editor UI? A) [Display] B) [CultureSpecific] C) [Editable] D) [Localized]
D) ContentReferenceCollection Answer: A Explanation: IList\ provides compile‑time type safety for a collection of blocks. Question 18. Which class represents a media file (image, video, document) in Optimizely? A) MediaFile B) MediaContent C) MediaData D) AssetData Answer: C Explanation: MediaData is the base class for all media assets stored in the CMS. Question 19. To enable a site to support English and French, which setting must be configured in the admin UI? A) Languages → Add Language → en, fr B) Site Settings → Multilingual → true C) Content Types → Enable Localization D) Database → Insert into LanguageTable Answer: A Explanation: Adding languages via the Languages section registers them for the site. Question 20. Which method creates a new version of a page for editing without affecting the published version? A) IContentRepository.Save(page, SaveAction.Publish) B) IContentRepository.CheckOut(page)
C) IContentRepository.CreateNewVersion(page) D) IContentRepository.GetVersion(page) Answer: B Explanation: CheckOut creates a working copy (draft) while the published version remains unchanged. Question 21. In MVC rendering, which component is responsible for selecting the appropriate view for a PageData type? A) IContentRenderer B) IViewEngine C) IPageTemplateResolver D) IContentTemplateResolver Answer: D Explanation: IContentTemplateResolver maps content types to view files based on naming conventions and tags. Question 22. Which attribute can be applied to a controller action to indicate it should be used for rendering a block? A) [BlockAction] B) [RenderBlock] C) [BlockComponent] D) No attribute; blocks are rendered via ViewComponents or partial views Answer: D Explanation: Blocks are typically rendered using ViewComponents or partial views; no special controller attribute is required.
Question 26. To create a custom property editor that displays a color picker, which interface must you implement? A) IPropertyEditor B) IPropertyRenderer C) ICustomProperty D) IPropertyDescriptor Answer: A Explanation: Implementing IPropertyEditor lets you define a custom UI component for a property. Question 27. Which Optimizely add‑on provides drag‑and‑drop form creation for marketers? A) Optimizely Forms B) Optimizely Surveys C) Optimizely Campaigns D) Optimizely FormsBuilder Answer: A Explanation: Optimizely Forms is the built‑in solution for creating and managing forms. Question 28. The Find service in Optimizely is primarily used for: A) Content versioning B) Full‑text search across content items C) Media transcoding D) User authentication Answer: B
Explanation: Find is a search engine that indexes content for fast full‑text queries. Question 29. Which event is raised after a page has been successfully published? A) ContentSaved B) ContentPublished C) PublishedContent D) ContentPublishedEvent Answer: C Explanation: The PublishedContent event is triggered after a publish operation completes. Question 30. To programmatically assign a role to a user, which API should you use? A) UserManager.AddToRoleAsync B) IPrincipal.AddRole C) RoleProvider.AssignRole D) IAuthorizationService.AddRole Answer: A Explanation: In Optimizely, UserManager (from ASP.NET Identity) provides AddToRoleAsync for role management. Question 31. Which cache interface is best suited for caching objects that need to be shared across multiple web servers? A) ICacheManager B) IObjectInstanceCache C) IDistributedCache D) MemoryCache
A) /api/episerver/v2.0/environments B) /api/deployment/v1.0/projects/{id}/environments C) /api/episerver/v2.0/projects/{id}/envs D) /api/cloud/v1/environments Answer: B Explanation: The Deployment API exposes environments via the /api/deployment/v1.0/projects/{id}/environments endpoint. Question 35. To view runtime logs from an Optimizely DXP instance, you should use: A) Azure Application Insights portal B) DXP portal → Logs → LogViewer C) Windows Event Viewer on the server D) Episerver Admin → Log Files Answer: B Explanation: The DXP portal provides a LogViewer tool for accessing site logs. Question 36. Which attribute is used to mark a property as being ignored by the content model serializer? A) [IgnoreDataMember] B) [NonSerialized] C) [JsonIgnore] D) [EPiServerIgnore] Answer: C Explanation: [JsonIgnore] prevents the property from being serialized to JSON (used by the Content Delivery API).
Question 37. When creating a custom block that should be editable only by users with the “Editor” role, which attribute can be applied? A) [Authorize(Roles="Editor")] B) [ContentAccess(Roles="Editor")] C) [AllowedRoles("Editor")] D) [RestrictAccess(Roles="Editor")] Answer: A Explanation: The standard ASP.NET Core [Authorize] attribute restricts access based on roles. Question 38. Which of the following is NOT a valid content type inheritance pattern in Optimizely? A) PageData → SitePageData → MyCustomPage B) BlockData → MediaBlock → ImageBlock C) ContentData → MySpecialContent → MyCustomPage D) PageData → ProductPage → MyProductPage Answer: C Explanation: ContentData is not a base class for page types; pages must inherit from PageData. Question 39. The “Tags” feature in Optimizely is primarily used for: A) Security permissions B) Content categorization and retrieval C) URL routing D) Database indexing Answer: B Explanation: Tags allow editors to assign keywords to content for filtering and search.
D) RunOnOneServerOnly Answer: D Explanation: The RunOnOneServerOnly property of the ScheduledJob attribute ensures only one instance executes the job. Question 43. In a headless scenario, which format does the Content Delivery API return by default? A) XML B) JSON C) CSV D) HTML Answer: B Explanation: The API returns JSON representations of content items. Question 44. When creating a custom authentication provider, which interface must be implemented? A) IAuthenticationHandler B) IAuthenticationProvider C) IIdentityProvider D) IExternalLoginProvider Answer: B Explanation: IAuthenticationProvider defines methods for login, logout, and user validation. Question 45. Which of the following is the correct way to retrieve the current user’s principal in a controller? A) HttpContext.Current.User
B) User C) ServiceLocator.Current.GetInstance() D) HttpContext.User Answer: D Explanation: In ASP.NET Core, HttpContext.User provides the current IPrincipal. Question 46. The “ContentReference” struct is primarily used for: A) Storing GUIDs of assets B) Representing a reference to any content item (page, block, media) C) Managing database connections D) Defining routing paths Answer: B Explanation: ContentReference uniquely identifies a content item in the CMS. Question 47. Which attribute can be added to a property to make it appear as a rich text editor in the UI? A) [UIHint("RichText")] B) [EditorDescriptor(typeof(RichTextEditorDescriptor))] C) [Display(Type = "RichText")] D) [RichText] Answer: B Explanation: Using EditorDescriptor with a RichTextEditorDescriptor tells the UI to render a rich text editor. Question 48. To add a custom validation rule that checks a string length is exactly 10 characters, which interface should you implement?
Question 51. Which feature allows editors to preview unpublished changes without affecting the live site? A) Draft Mode B) Edit Mode C) Preview Mode D) Staging Mode Answer: C Explanation: Preview Mode renders the site with draft content for the editor. Question 52. To customize the URL segment of a page, which property should be overridden? A) UrlSegment B) PageUrl C) UrlPath D) RouteSegment Answer: A Explanation: The UrlSegment property defines the part of the URL derived from the page name. Question 53. Which attribute is used to indicate that a controller action should respond to HTTP POST requests? A) [HttpGet] B) [HttpPost] C) [HttpPut] D) [AcceptVerbs("POST")] Answer: B Explanation: [HttpPost] restricts the action to POST verb.
Question 54. When using a ViewComponent to render a block, which method must be implemented? A) InvokeAsync B) Render C) ExecuteResult D) Process Answer: A Explanation: ViewComponents expose an InvokeAsync (or Invoke) method that returns IViewComponentResult. Question 55. Which of the following is the correct way to register a custom view location format for page templates? A) services.Configure(options => options.ViewLocationFormats.Add("/Views/Pages/{0}.cshtml")); B) options.ViewLocationFormats.Insert(0, "/Pages/{0}.cshtml"); C) services.AddRazorPages().AddRazorOptions(o => o.ViewLocationFormats.Add("/Pages/{0}.cshtml")); D) services.Configure(o => o.ViewLocationFormats.Add("/Pages/{0}.cshtml")); Answer: D Explanation: RazorViewEngineOptions allows adding custom view location formats. Question 56. Which of the following is NOT a built‑in content type in Optimizely? A) StandardPage B) MediaFile