10 JavaScript concepts you need to know for interviews
Tags: javascript, interview, programming, webdev
Published: 2017-08-21 18:17:45

---
title: 10 JavaScript concepts you need to know for interviews
published: true
description: There are thousands of people learning JavaScript and web development in the hopes of getting a job. Often, self-learning leaves gaps in people’s understanding of the JavaScript language itself.
tags: javascript, interviews, programming, webdev

---

### Self-Learning

There are thousands of people learning JavaScript and web development in the hopes of getting a job. Often, self-learning leaves gaps in people’s understanding of the JavaScript language itself.

It’s actually surprising how little of the language is needed to make complex web pages. People making entire sites on their own often don’t have a good grasp of the fundamentals of JavaScript.

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 master JavaScript interviews, check out [Step Up Your JS: A Comprehensive Guide to Intermediate JavaScript](https://www.educative.io/collection/5679346740101120/5707702298738688?authorName=Arnav%20Aggarwal)

### Interviews

The problem is that questions testing your understanding of JS are exactly what many tech companies ask in their interviews. It becomes clear very quickly when an applicant knows just enough to have scraped by, but doesn’t have a solid understanding 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

1. [Value vs. Reference](https://www.educative.io/collection/page/5679346740101120/5707702298738688/5685265389584384/) — 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.
2. [Scope](https://scotch.io/tutorials/understanding-scope-in-javascript#toc-scope-in-javascript) — Understand the difference between global scope, function scope, and block scope. Understand which variables are available where. Know how the JavaScript engine performs a variable lookup.
3. [Hoisting](http://javascriptissexy.com/javascript-variable-scope-and-hoisting-explained/) — Understand that variable and function declarations are hoisted to the top of their available scope. Understand that function expressions are not hoisted.
4. [Closures](http://javascriptissexy.com/understand-javascript-closures-with-ease/) — Know that a function retains access to the scope that it was created in. Know what this lets us do, such as data hiding, memoization, and dynamic function generation.
5. [`this`](https://www.educative.io/collection/page/5679346740101120/5707702298738688/5676830073815040) — Know the rules of `this` binding. Know how it works, know how to figure out what it will be equal to in a function, and know why it’s useful.
6. [`new`](https://codeburst.io/javascripts-new-keyword-explained-as-simply-as-possible-fec0d87b2741) — Know how it relates to object oriented programming. Know what happens to a function called with `new`. Understand how the object generated by using `new` _inherits_ from the function’s `prototype` property.
7. [`apply`, `call`, `bind`](https://codeplanet.io/javascript-apply-vs-call-vs-bind/) — Know how each of these functions work. Know how to use them. Know what they do to `this`.
8. [Prototypes & Inheritance](https://codeburst.io/master-javascript-prototypes-inheritance-d0a9a5a75c4e) — 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.
9. [Asynchronous JS](https://www.youtube.com/watch?v=8aGhZQkoFbQ&t=948s) — Understand the event loop. Understand how the browser deals with user input, web requests, and events in general. Know how to recognize and correctly implement asynchronous code. Understand how JavaScript is both asynchronous and single-threaded.
10. [Higher Order Functions](https://www.sitepoint.com/higher-order-functions-javascript/) — 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: A Comprehensive Guide to Intermediate JavaScript](https://www.educative.io/collection/5679346740101120/5707702298738688?authorName=Arnav%20Aggarwal) to help developers advance their knowledge. It covers all of these concepts and many more.

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

- [You Don’t Know JS](https://github.com/getify/You-Dont-Know-JS)
- [JavaScript is Sexy](http://javascriptissexy.com/16-javascript-concepts-you-must-know-well/)
- [javascript.com](https://www.javascript.com/resources)
- [Frontend Masters](https://frontendmasters.com/)
- [Eloquent JavaScript](http://eloquentjavascript.net/)

Good luck on your interviews.

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

Feel free to check out some of my recent work.

[Step Up Your JS: A Comprehensive Guide to Intermediate JavaScript](https://www.educative.io/collection/5679346740101120/5707702298738688?authorName=Arnav%20Aggarwal)

[What I learned from attending a coding bootcamp and teaching another one](https://codeburst.io/what-i-learned-from-attending-a-coding-bootcamp-and-teaching-another-one-65addec715fd)

[React Ecosystem Setup — Step-By-Step Walkthrough](https://codeburst.io/react-ecosystem-setup-step-by-step-walkthrough-721ff45a7fc1)