30 Front-end Developer Interview Questions To Get You Hired

front end developer interview questions

If you are looking for front-end developer interview questions and answers to prepare for an upcoming interview in the technology sector, look no further. Our team of experts has put together some of the best questions to help prepare you for what it's going to be like to speak with members of the technology organization and potentially hiring managers.

Front-End Developers On The Rise

Front-end developers are in high demand right now. The reason for this is the usage of technology by consumers. More than 15 years ago, technology usage was still relatively flat since the early 2000s. But as more consumers got online, started using mobile devices and their children grew in age, internet usage skyrocketed. Today, people are online constantly. This means technology plays a large role in our lives. Front-end developers play a vital role in the connection between the human and the technology.

In This Front-end Developer Interview Guide

We have compiled a list of challenging questions for Frontend Developers to test the breadth and depth of their experience with frontend technologies like Javascript, jQuery, frameworks like React and Angular.js, CSS, and some of the tooling in the javascript world like package managers and code bundling utilities. Candidates for frontend developer or full-stack developer roles who have a familiarity with these concepts are well poised for success on any engineering team.

30 Front-end Developer Interview Questions & Answers

1. Describe the BEM Methodology for styling web components.

The BEM methodology stands for Block, Element, Modifier. It says that following its patterns in most cases will lead to readable and maintainable, organized style sheets.


A Block describes a wrapping element on the page. For example, “.page_header” or “.button” might be the class name for a block.

Element describes an element that exists within a block element. For example, to describe a Logo Text element that exists in our “.page_header” block, we’d give the Logo Text element the class of “.page_header__logo_text”.

Modifier is what we might use if we have multiple versions of our logo_text. Perhaps a red logo and a white logo. In that case we’d have two different classes for those logo versions: “.page_header__logo_text--red” and “.page_header__logo_text--white”.

2. How would you access a DOM element by ID “dom-elements-id”, and put it in a variable named “domElement” using Vanilla JS?

var domElement = document.getElementById(“dom-elements-id”);

3. How do you would you change the class domElement to “new-class-name”?

domElement.className = “new-class-name”;

4. Using es6 Javascript syntax, use Array.map() to turn an array [1, 2, 3, 4, 5] into [2, 4, 6, 8, 10].

[1, 2, 3, 4, 5].map(val => val*2);

5. What is npm used for?

NPM is a package manager that allows developers to easily install packages to use in their projects, for example utility libraries like lodash or jQuery, or even full frameworks like React.js. NPM is almost always run from the command line, where users can follow a syntax for installing packages, specifying package versions, and updating existing packages. “npm install ” is npm’s most widely used command.

6. What is a package.json file?

A package.json file usually sits in the root of your project directory. Within package.json, a full list of dependencies for your project can be added, as well as licencing, author, and version information. By using a package.json file, npm will read its contents and automatically install all of the dependencies your project needs. This keeps your project less bloated, and eliminates the need to check-in external dependencies to version control.

8. What is JSX?

JSX is a markup language with the React.js framework, which allows developers to write an HTML-similar syntax directly in their .js files, to define the structure of DOM elements.

9. In Javascript, what does it mean to define a variable without using var, let, or const?

The defined variable will be global and exist in every scope in the application unless overwritten in some local scope.

10. In Javascript, what does it mean to define a variable with const?

Using const means you are declaring that a variable will not be changed later on. However, if the variable is assigned to an object literal, you can change properties and values of the object literal without breaking the specification of const.

11. Describe one good use case for using the function .map() in Javascript?

The .map() function is useful when you want to transform an array of length N to a different array of length N. Using the .map() function will not modify the original array, and it will return a new array with the transformation applied. For example, using .map() you could turn the array [1] into [{ value: 1}].

12. Describe what transpilers, for example Babel.js, are responsible for.

ES5 javascript will run in most users’ browsers; however, if you are writing your application with ES6 or with a framework like React.js, the code you write will need to go through a transformation process before it can be executed for your users.

A transpiler like Babel works to convert Javascript code that is written with modern es6 syntax, framework-invented paradigms, or augmentations like static typing with typescript or Flow.js into a more standard, usually more verbose Javascript syntax that is supported by users’ web browsers.

13. What does a tool like webpack help with in terms of code organization?

Webpack is a piece of software that works to bundle your javascript into a unified package. This allows developers to easily work in separate files for each of the modules in their project, without worrying about managing dependencies between modules within the project. Before tools like webpack were available to bundle together javascript source code, developers had a difficult problem managing dependencies. For example, if the developer were to write 3 files for module A.js, B.js, and C.js, they would have to use manual-care to ensure these dependencies were always included in the application in the correct order. If module C is dependent on module A, then A would need to be included before C. As javascript applications grew to have hundreds or even thousands of modules and interdependencies, webpack made a tremendously time-consuming problem easily solvable.

14. Use currying to write a function such that sum(1)(2) returns 3. Why does this function work?

This function works because functions are first-class objects in Javascript. These means they can be assigned to variables, returned from functions just like objects, and in general they share all the other properties of standard objects in the language. In the case of our addition function, the outer function, called “sum”, returns another function. The function which is returned accepts an argument which, when invoked, will be added to the argument that was passed to the original “sum” function.

15. Explain the concept of a closure in Javascript.

Closures dictate which variables are accessible, or “in scope”, to you depending on where you are in the code. For example, if you are writing code within a function, and you do not have access to a variable X which is defined elsewhere in the codebase, that means variable X exists outside of the closure you are currently within. To show in a simple example:

16. Describe variable hoisting in Javascript.

Variable hoisting describes the process that the Javascript interpreter uses to re-order variables in your code before it is executed. For example, if you define a named function without assigning it to a variable, it will be “hoisted” to the top of your code. This type of hoisting makes the following possible:

hoistedFunctionExample(); // logs “hello world!”. Executed before it is declared, but thats OK!

17. Give one way to make a copy of an object held in a variable named exampleObject in Javascript.

var clone = Object.assign({}, exampleObject);

18. Describe one way you might simulate private variables within a Javascript module.

A private variable is a variable that is only accessible in the scope of the class or module in which it is defined. Javascript is a language that uses prototypical inheritance, and it doesn’t have the ability to declare private variables, unlike most object-oriented programming languages.

There are ways in Javascript to simulate the object-oriented patterns like classes and private variables, however. The module pattern, for example, allows us to create variables that are only accessible within the scope of a particular module. This gives us some of the behaviors we would expect from a class in an object-oriented language. E.g:

19. Describe one directional data-flow, as is used in frameworks like Flux or Redux.

One directional data-flow is a pattern for organizing data within an application in a way that is easy to reason about. In a one-directional data-flow, all of the data which describes the state of your application is held in one “source of truth”. The source of truth is immutable, meaning the values of the properties on the object representing the source of truth cannot be modified. Instead, when updating the state of the application, some business logic must generate a new copy and replace the existing source of truth.

Unlike two way data-binding in other Javascript frameworks like Angular, in a one-directional data-flow there are no automatic bindings between view elements in the system to change data in the application state. Instead, all updates to the application state happen by explicitly calling special methods called Action Creators.

20. Imagine you are considering hosting options in AWS for a Single Page Application (SPA) written in React.js. All of your application’s bundled source is in one Javascript file called bundle.js. What is one static hosting option you might consider, what are its benefits in terms of reliability, performance, and cost?

Since a javascript bundle file is a static resource, it could be a viable solution to store your Single Page Application on a static-hosting service like Amazon S3. S3 hosting is inexpensive and performant, and it does not require the same level of administration as other options for hosting a static javascript codebase. Hosting a static js file on S3, your DevOps team doesn’t need to administer a server or monitor for uptime; S3 will simply serve your static file whenever it is requested.

Another option that would be more expensive and require more maintenance than static hosting through S3, would be running an EC2 instance, installing a web server software like nginx or apache, and configuring the web server to serve your content. Although this is a more complicated and maintenance-heavy method, it also likely leads to less reliability because you lose the advantage of S3 as a managed service.

21. What is the purpose of a front-end framework like Bootstrap?

Bootstrap offers convenient CSS styles, HTML markup, and javascript scripts to create common parts of web interfaces. Things like grid layouts, dropdown menus, buttons, alerts, and labels are all pre-designed and easy to implement with a framework like Bootstrap.

Deciding whether or not you should use a framework like Bootstrap involves discussion over the skills within your engineering team, the goals for the look and feel of your application, and the necessity of using a particular framework given your products specific requirements.

22. What is the purpose of a javascript library like jQuery? How is jQuery different than a library like Angular?

jQuery is a set of utility methods that can be used to shorten the amount of code necessary in Javascript. Multiple lines of code in vanilla JS are often condensed into one line when writing in jQuery. jQuery utilities include finding and replacing text, selecting elements from the DOM, changing element styles, and powering animations.

Angular is a full framework with functionality that extends beyond a utility package like jQuery. Angular offers patterns for building full applications and offers robust utilities for organizing your application, connecting to RESTful resources, defining composable elements, and more.

23. What are the native types in Javascript?

The types in Javascript are boolean, number, string, undefined, and object.

24. Describe the difference in behavior of === and ==.

=== denotes strict equality, meaning that both values being compared are of the same value and type. For example, 2 === 2 is true. However, 2 === “2” is false.

== denotes equality of value, but not necessarily of type. For example 2 == “2” is true and 2 == 2 is also true.

25. Explain what the .push() method does in Javascript.

The push() method appends an element to the end of an array. For example, [1, 2].push(3), will return an array [1, 2, 3];

26. Explain what the following Typescript syntax is describing. Will this function pass type-checking?

The Typescript code is declaring a function called exampleFunction. The function signature for exampleFunction says that the function will return a boolean value and that it will accept a string value as its only argument.

The logic of the function says to return the exact argument that was passed to the function. The function was passed a string value, therefore it will return a string value. The function will fail type-checking because we declared that this function should return a boolean value. Not a string.

27. What is a potential risk of using npm? What can developers to do mitigate such risks?

Because the open-source developer community contributes so heavily to the npm environment, there have been cases where malicious actors added bad source code to commonly used dependencies. Npm is a useful tool, but it is careful that you use dependencies from trusted sources and do frequent audits of the types of dependencies that are being included in your projects.

28. If asked to integrate a front end interface with a RESTful API, what sort of tool could you use to test the API’s functionality before beginning development on the interface?

If you wanted to test an API’s functionality before building an interface, you could use a REST client like Postman or Advanced Rest Client. Another option is to send CURL requests from the command line.

29. Write the equivalent expression using a ternary operator:

30. Give an example of building a string using two variables dogName and catName, using template literals in es6.

`${dogName} and ${catName} are friends`

author: patrick algrim
About the author

Patrick Algrim is an experienced executive who has spent a number of years in Silicon Valley hiring and coaching some of the world’s most valuable technology teams. Patrick has been a source for Human Resources and career related insights for Forbes, Glassdoor, Entrepreneur, Recruiter.com, SparkHire, and many more.


Help us by spreading the word