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.
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.
- 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.
- 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 lets us do, such as data hiding, memoization, and dynamic function generation.
this— Know the rules of
thisbinding. Know how it works, know how to figure out what it will be equal to in a function, and know why it’s useful.
new— Know how it relates to object oriented programming. Know what happens to a function called with
new. Understand how the object generated by using
newinherits from the function’s
bind— Know how each of these functions work. Know how to use them. Know what they do to
[[Prototype]]chain. Understand how to set up inheritance through functions and objects and how
newhelps us implement it. Know what the
prototypeproperties are and what they do.
If the links included aren’t enough, there are countless resources out there to help you learn these concepts.
Here are resources which I’ve read or watched at least some of and can recommend.
Good luck on your interviews.
Feel free to check out some of my recent work.