Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Ember.js approval


Provide the list or PR or other contributions that proves understanding of each subject or ask for tech interview, where we will go step by step throught the following list.

Based of the result, you will reach one of the following assesment levels:

Level Required points Testing Components Introduction
Junior 65+ 5+ 5+ max
Independent 85+ 10+ max max
Mid 105+ max max max

Max points: 117

Once you fill the doc, you can check your score in the browser console via the following snippet:

document.querySelectorAll("li input[checked]").length

Testing exam (run in console):

let n = 20;
let evaluationQuestions = ([])"li input[checked]"))
  .map(x => ({ x, r: Math.random() }))
  .sort((a, b) => a.r - b.r)
  .map(a => a.x)
  .slice(0, n)
    (liElement) => 
        .replace('<input type="checkbox" id="" disabled="" class="task-list-item-checkbox" checked=""> ', '')

Introduction (6)

  • sharing state between controller & template
  • handlebars
  • passing data to the component
  • component: tagName, classNames, tagless component
  • computed properties - what you can do and when you should use it
  • Explain DDAU

Ember Core Concepts (8)

  • Known Ember Object, Array basic methods
  • Know how to create utility/helper
  • Inheritance and Mixins
  • Initializers
  • Resolvers
  • Translations handling via Ember Intl
  • Authorization
  • Authentication

Tooling (9)

  • Know how to run / Build ember project (also in production mode)
  • Know how to run tests in development (console / browser ) and in CI (Circle CI)
  • Know how to use ember inspector
  • Know how to debug application
  • Know all the packages in package.json
  • Know the app structure
  • using ember-cli, generators, blueprints
  • Linters
  • using ember-cli-update

Templates & Helpers (9)

  • understand the implication that handlebars is not javascript
  • can explain diff between helper and component
  • know how to write helpers
  • know and use helpers
  • conditionals: if, unless
  • lists: each, each-in, else
  • actions: action, mut
  • forms: input, textarea
  • ember truth helpers

Computed Properties (6)

  • Explain caching of computed properties .volatile and .readonly
  • computed property dependend keys definition
  • property: 'property' | '' | 'property1', 'property2' | '{property1,property2}' | 'object.{property1,property2}'
  • collection: 'collection.[]' | 'collection.@each' | 'collection.@each.{p1,p2}'
  • computed properties can be chained
  • Explain computed side-effect issue and how to prevent it

Services (2)

  • can explain what is the service, and what is special about it, enumarate use cases
  • know how to create service and how to consume it (remember it is lazy loaded)

Routing (7)

  • can explain how the routing works, how router translate path to route, and what is the relation with controller and the template
  • use application, index, wildcard route
  • use nested route and use dynamic segments (router, route)
  • use loading, error route substate
  • use queryParams via Ember Parachute
  • use beforeModel, model, afterModel, redirect hooks
  • use route api: modelFor, controllerFor, paramsFor, transitionTo, redirect

Components (7)

  • Communication with the outside world: Data Down | Actions Up | Services
  • Customize Component:
    • html: tag, classes, attributes
    • positionalParams
  • handling actions:
    • component events
    • actions hash / how to access?
  • Component Properties: element, elementId
  • Helper: component
  • Component Lifecycle
  • Can talk about Good Component Design: higher order components, know difference between contextual and presentation cmopnent

Ember Data

Ember Data Basic (2)

  • can explain architecture
  • can work with ember data localy
    • define model
    • setup relations
    • createRecord
    • peekRecord, peekAll

Adapters (3)

  • configure/customize ember data adapter (for the development and for the production)
  • can work with ember data remote
    • findRecord, findAll
    • queryRecord, query
    • save (and handling promise)
    • working with queryParams and data loading
    • for JSONAPI
    • side loading nested resources
    • filters
    • sort orders
  • know well jsonapi specification

Mirage (4)

  • know how to configure and use mirage when jsonapi adapter is in use
    • define factories (with faker)
    • configure resources
    • prepare scenario
    • prepare seeds

Customize (11)

Testing (16)

Official: Guides:

Addons (6)

  • explain role of the addon and what you can move to addon from your project
  • build in-repo addon
  • build and publish own addon
  • well tested (also with dummy app)
  • well documented (via documentation addon)
  • Engines support

Engines (3)

  • what you can move to engine
  • how to mount engine
  • what are the limitations of the engines

Upcoming features / bonus points (18)

  • decorators
  • how to prepare the project for the power of tree shaking
  • Percy
  • TypeScript usage
  • Angle brackets
  • PWA in Ember
  • Error tracker usage
  • Orbit usage
  • Ember Redux
  • GraphQL usage
  • custom WebSocket usage
  • JSON API extensions
  • Fastboot


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.