StriveNine Core Javascript Course

S9 prides itself on its forward thinking and innovative interviewing and hiring practices. We don’t say no to candidates, we say not yet. In order to be a successful developer at S9, you need to have a certain set of knowledge. It doesn’t really matter when you acquire this knowledge, but you must know it well before being considered to join S9. While knowledge is just one part of the puzzle to be a successful S9 developer, it is an important piece.

This course describes the core set of knowledge that is necessary to have success at S9. You experience level doesn’t matter, you must know all of this well! If you want to get through the interview process at S9 with little difficulty, study this course first!

There are two parts to the StriveNine interview process for Javascript Developers.

  • Core Competencies – Do you understand data structures, do you understand the time complexity of different data structures, and do you understand how javascript actually works?

  • Algorithm Concepts – Can you write code?

This course describes what we are looking for in the Core Competencies part of our interview process. For more information on our algorithmic concepts, please see the StriveNine Core Algorithm Course.

Core Concepts

  1. Study the book, Effective Javascript (Long Term Goal) – I’ll make note cards on my phone as I read through books like this so I can go back and study them later. EffectiveJavascript is a great book to get a deep understanding and knowledge of best practices of javascript. You don’t need to finish this book before we speak, this is more of a long term goal.

  2. Understanding how javascript works behind the scenes is important when building systems with javascript. Study how the event queue works and how it (and a thread pool) allows Javascript to be asynchronous. A Google search with “javascript event queue” will help here.

  3. Design Patterns: Elements of Reusable Object-Oriented Software (Written by the Gang of Four)

    1. Be able to talk about a few of the most popular ones: Singleton, Observer, Factory, Builder, Strategy, Visitor, Template Method, Command, Prototype

    2. Here are examples of all of them in javascript:  http://www.dofactory.com/javascript/design- patterns

  4. Know the difference between a Hash Map, Linked List, Binary Search Tree, Queue, and a Stack.

    1. You should be able to talk about the basic Big O Notation for inserting, getting, and removing from these data structures. It is VERY important to understand time complexity when discussing data structures.

Javascript Talking Points

  1. What are the 3 ways to declare a variable in ES6?

  2. What is the difference between let and var?

  3. Where does variable hoisting fit into the discussion of question #2?

  4. What are different ways that you can ensure code quality in javascript?

    1. Read about Strict Mode, Eslint, Jshint

  5. If I needed to combine many javascript files into a single file, how could I ensure that the scope of the individual files is not impacted after they are moved? How do modern web tools handle this scenario when creating bundle?

  6. What is an Immediately Invoked Function Expression (IIFE), what does it give me, and why would I use one?

  7. What are higher order functions?

  8. What is the concept of currying?

  9. What is the difference between the call and apply functions and when would I want to use them instead of simply calling a function directly?

  10. What is the bind function in javascript and how does it differ from call and apply?

  11. What are the 5 primitives in javascript?

  12. Are primitives passed by reference or value in Javascript? What about objects?

  13. What is a closure? See our blog post on closures.

  14. Is javascript an asynchronous or synchronous language? What is the difference?

  15. How does it achieve asynchronicity?

    1. Read about how the event queue and call stack work together.

  16. What is a promise and what is the A+ contract? Why would I use them instead of a

    callback?

  17. What is the difference between prototypal and classical inheritance?

    1. Classical: Data and functions are all stored on the object.Prototypal: Functions are stored on the prototype chain and data is stored in object.

  18. 2. Classical: You can use information hiding on the object that you want to extend. Prototypal: You cannot use information hiding if your getters and setters are on the prototype chain.

  19. What functionality came out in ES6.

Closures / Scoping

This topic is so important, that we wrote it in a separate blog post. Please see our post on closures.

Closing

Thank you so much for showing interest in S9. I doesn’t matter if you are working at S9 or somewhere else, I hope this course helps you become a better developer. If you think there is something missing, please reach out to us and let’s discuss.

Thanks.