Salesforce Javascript Developer I (Beta) Study Notes

Hints for the exam

After taking the exam I can give you some hints. It is a very deep technical exam, meaning most of the question give you a piece of code, sometimes quite a lof of lines of code for a single question, and you have to provide the output of that piece of code. For example, expect to see an array that has a lot of manipulations with map(), reduce() and so on. So you really need hands on this. I recommend you to use or another tool to run as many examples as you can to understand all the different concepts (scope, coercion, promises and so on), and do it lots of times until you have everything very clear. I can tell you this exam is not an easy one if you don’t have hands-on experience and you only have theorical knowledge.

  • Variables / Types: Format Dates (toLocaleDateString())
  • Arrays: Lots of questions about .map() and .reduce() functions and also slice() and splice().
  • Coercion: Questions about giving the output. For example: what’s the result of this sentence?: null + 10 + ‘4’ + NaN
  • Browser APIs: Questions on Window.localStorage and Window.history
  • Objects / Classes: tons of questions about scope and “this”
  • Events: Notice the different between button.addEventListener(“click“, handleClick); (click vs onclick)
  • Modules: Lots of questions about exporting and importing (named exports, vs export all)
  • Error handling: Give the output of the try / catch / finally flows
  • Debugging / Testing: few questions about how to debug. Also questions about false positives and false negatives tests (watch out the theory here)
  • Promises: can you put a “.then()” after a “.catch()” ?
  • Node.js: Quite a few questions around “npm” and its package.json. How do you add dependencies? dependencies only for dev, etc. On the CLI, study the “–inspect” argument.
  • Scope: Not many but still relevant, var vs let comparision
  • Others: know the difference between setTimeout() and setInterval()

Study Guide

Variables, Types, and Collections20%
Given a scenario, write code to create variables and initialize them correctly
Given a business requirement, utilize strings, numbers, and dates effectively
Given a scenario or example, demonstrate awareness of type coercion and its effects
Given a specific scenario, distinguish truthy or falsey evaluations
Given a list of data, demonstrate data manipulation with arrays
Given a JSON response, demonstrate how to operate the JSON object
Objects, Functions, and Classes25%
Given a business requirement, locate the best function implementation
Given a business requirement, apply fundamentals of object implementation to solve the business requirement
Given a business requirement, apply fundamentals of class implementation to solve the business requirement
Given a JavaScript module, give examples of how to use the module
Given a JavaScript decorator, give examples of how to use the decorator
Given a block of code, analyze the variable scope and the execution flow
Browser and Events14%
Given a business requirement, utilize Events, event handlers and propagation
Given a business requirement, evaluate and manipulate the DOM
Given a scenario, utilize the Browser Dev Tools to investigate code behavior
Given a scenario and requirements, utilize browser specific APIs
Debugging and Error Handling8%
Given a scenario, handle errors properly
Given code to be debugged, use the console and breakpoints
Asynchronous Programming15%
Given a scenario, apply asynchronous programming concepts
Given a scenario, use event loop and event monitor or determine loop outcomes
Server Side JavaScript11%
Given a scenario and requirements, infer which Node.js implementation is a good solution
Given a scenario and requirements, infer which Node.js CLI command is a good solution
Know the core Node.js modules and given requirements, infer which Node.js library/framework is a good solution
Given a scenario and requirements, distinguish which Node.Js Package Management solution is the most fitting
Testing 7%
With a block of code and the associated Unit Test, determine where the test is ineffective and modify it to make it more effective

Sources for my posts on this topic: