Self-Learning

There are thousands of self-taught JavaScript programmers looking for web development positions. Unfortunately, self-learning often leaves gaps in people’s understanding of the language itself.

It’s surprising how little JavaScript one needs to make complex web pages. Often, people who can create entire sites lack knowledge of the language’s fundamentals.

It’s rather easy to avoid the complex topics and implement features using basic skills. It’s also easy to create a website by relying on Stack Overflow, without understanding the code being copied.

If you’re looking to improve your JavaScript interview skills, check out Master the JavaScript Interview

Interviews

The problem is that questions testing your understanding of JS are exactly what many tech companies ask in their interviews. It’s clear when an applicant knows enough to scrape by, but lacks a solid grasp of the language.

Here are concepts that are frequently asked about in web development interviews. This is assuming you already know the basics such as loops, functions, and callbacks.

Concepts

Value vs. Reference — Understand how objects, arrays, and functions are copied and passed into functions. Know that the reference is what’s being copied. Understand that primitives are copied and passed by copying the value. Scope — Understand the difference between global scope, function scope, and block scope. Understand which variables are available where. Know how the JavaScript engine performs variable lookup. Hoisting — Understand that variable and function declarations are hoisted to the top of their available scope. Understand that function expressions are not hoisted. Closures — Know that a function retains access to the scope that it was created in. Know what this enables us to do with our code. Understand that closures allow data hiding, memoization, and dynamic function generation. this — Know the rules of this binding. Know how it works, know how to figure out what it will be equal to in any piece of code, and know why it’s useful. new — Know how it relates to object oriented programming. Know what happens to a function called with new and why such a function is known as a constructor. Understand that an object generated by using new inherits from the function’s prototype property. apply , call , bind — Know how each of these functions work. Know how to use them. Know what they do to this . Prototypes & Inheritance — Understand that inheritance in JavaScript works through the [[Prototype]] chain. Understand how to set up inheritance through functions and objects and how new helps us implement it. Know what the __proto__ and prototype properties are and what they do. Asynchronous JS — Understand the event loop. Understand how the browser deals with user input, web requests, and events in general. Know how to recognize and write asynchronous code. Understand how JavaScript is both asynchronous and single-threaded. Higher Order Functions — Understand that functions are first-class objects in JavaScript and what that means. Know that returning a function from another function is perfectly legal. Understand the techniques that closures and higher order functions allow us to use.

More Resources

If the links included aren’t enough, there are countless resources out there to help you learn these concepts.

I personally created Step Up Your JS to help people get experience with these topics. It covers all of these concepts and more.

Here are other resources which I’ve read or watched at least some of and can recommend.

Good luck on your interviews.

If you found this useful, please give it a clap below so others see it as well.