A while back I posted about the pitfalls of cramming for a coding interview, the problem with these as mere factual recall challenges rather than any strong insight to candidates seeking development positions. I remain steadfast in all I said there, if you are interested have a read.
Certainly, however, there are key points of knowledge any potential employer worth their salt, should seek from any candidates for a particular development role, this is true for any language regardless of what it is. So even if a position is for language A, it is vital the candidates know some more general concepts outside merely that language. For example, the differences between Object-Oriented and Functional approaches to programming, what are the key indicators of each, what is scope, what is a closure, what is the differences between an expression and a statement or the imperative vs declarative style of programming. Do the candidates know this well enough to discuss it and not merely to answer?
These are not in any specific order though some are certainly more important to know than others, and I will indicate as such.
Object Orientated vs Functional approaches to programming
A vital understanding of the key differences between these two paradigms, Not only semantically but the actual key features that identify as such. A good broad understanding of the ins and outs of OO and FP why they are used in contexts, the good and the bad. Some keywords include;
paradigm, functional purity, side-effects, higher-order functions, expressions, declarations, imperative, declarative, idempotency, arity, prototypical-inheritance, inheritance, inheritance chaining, constructor functions, closures, scope
Variable Scope and Assignment
const what are some strategies for avoiding complexity in code? How would a functional approach manage the context of this over an OO approach for example, how does it differ in the Browser context than the Node context for example?
Synchronicity and Asynchronicity, Promises and the callback queue
Node, V8, Libuv
The Browser and the DOM*
Language evolution, features, and uses
- Arrow Functions (not just how to write them but what effect they have on scope)
- Generator Functions
- Async Await
- Fetch (window)
Also, some of the new language features, which allow for a cleaner approach to writing code, what do they do, what do they avoid, and what benefit may they have. e.g;
- Spread operator
- Rest operator
- For in
Libraries and Frameworks and Approaches
Usually, in most developer interviews, no one is truly looking for a "React" only developer, (beware employers that are!), even if that is to be the main task. It's crucial to know not only how to use these frameworks, but how they approach the application, what do they actually do under the hood, how does React's approach differs from Angulars for example. Yes, it's good to know the key features and advantages of one, but this is pointless without knowing how it's different from the other. There is no need to provide your input between a library and framework, an employer should not be that pedantic as it's a largely subjective argument.
However, you should be aware of why and how Vue for example, is different from jQuery, or underscore, or how angular approaches dependency injection over something like NextJS, what is ServerSIde rendering versus static sites, What is building and what libraries allow this, why and how, eg. How does Webpack differ from Rollup, or ParcelJS what are some of the advantage and disadvantages.