01
Frontend Machine Coding Interview Round
In this interview round you can expect development of an application or part of the functionality of a big application that includes functional requirements and non-functional requirements like performance, accessibility support.
Primary objective of this interview round is to test your overall knowledge of frontend skills including JavaScript, HTML & CSS in a real development environment.
Evaluation pointers
- Modularity & extendibility of the code — how you break a big problem into smaller problems and organize your code with separation of concerns and reusability. Extendibility tests whether new functionality requires a large rewrite.
- Best practices — how you incorporate frontend best practices for variables, functions, classes, and iteration.
- Overall functionality — interviewers generally prefer functionality over look and feel, but your application should meet all functional and non-functional requirements.
Essential topics
- JavaScript Basics: Function, Object and Array Methods, closures, this keyword, iteration constructs, ES6 destructuring, spreading etc.
- Async JavaScript: Promises & its Methods, Async-Await, fetch API call, AbortController, setInterval, setTimeout etc.
- DOM & BOM: Accessing, modification and deletion of DOM elements, x/y location specific concepts etc.
- Concepts: Throttling, debouncing, template passing, exception & error handling etc.
- JavaScript Framework/React: Component creation, Hooks, props propagation, design patterns
Example question
Develop a user interface of a mailing client similar to Gmail, which should have the following functional and non-functional requirements.
Functional requirements
- Able to view all the emails in a list format by sorting order, default by date.
- Able to view the email content in a modal when clicking on any of the mails in the list.
- Able to search for a particular mail through mail summary heading.
Non-functional requirements
- Able to handle a large amount of emails in a performant way.
- Accessibility support should be there, including keyboard navigation.
