Before you read the story…
This story is based on my recent experiences and the way I have seen the industry evolve in the last 5 years. This includes some of the interview experiences that I had and also the shift in tech stacks in some of the large organizations that I have been part of. I have taken reference of Angular family since I am part of it for 5 years, but it's not limited to Angular. Many areas are not covered, I tried to be as concise as I could.
The Era of UI Developers
10–15 years backs there was only one role present in the industry, known as the “SOFTWARE ENGINEERS”. Then came the UI Developers or some of legacy “software engineers” liked to call it the UI designers were those people who used to convert .psd files to .html files using HTML, CSS and the mother of all frontend libraries jQuery. This is the time when UI devs were given a design document called the mockups and the only requirement was to convert the mockup into working HTML. These mocks are then hooked to serverside programs and then served as a beautiful looking web application.
The responsibilities of a UI developer was only to worry about the margin, padding, positioning, colors, box-model, responsive behavior and some of displaying data from the JSON sent by the server. All the business logic used to reside in the server or the backend application.
The Dawn of Frontend Engineers
2019 present scenario…
- HTML, CSS, or any other CSS preprocessor.
- TypeScript (arguable, but once you understand its power, it's awesome.)
- NodeJS or any other lang.— at least intermediate level of understanding
- Angular/ React/ Vue or any other lib or framework for faster development
- Data Structures and Algorithms — any language is fine but a must.
- System Design Principles
- The Working of the Internet
- State Management
- Security — beginner level understanding is necessary
- Continuous Integration and Continuous Deployment tools — basic
I will be sharing some of the good questions that I have faced in the last 2 years. I will not be sharing the company names as this is not Glassdoor.
- A particular hotel in my web app gets 1M views per day and at least 1K-2K concurrent views. How will you show the user how many users are currently watching the hotel? Make sure you don’t burn up the server or hang the client’s browser by continuous polling? — System Design
- Design a parking lot with minimum resources. How will you arrange the cars in the following order — SUVs 4th Floor, Hatchbacks 3rd Floor, Minivans 2nd Floor, Bikes 1st Floor, Trucks Ground Floor. The parking software should have reserved parking for admins, should handle errors if SUV is parked in 2nd floor or vice versa, should post total revenue each day once in the master database, should be connected to the cloud so that the owner can view the progress. Start by talking about the Database Schema of the application — System Design
- Traverse a N x N matrix spirally. — DS practice problems
- Design your home wi-fi router, and explain what happens when we type and enter www.google.com — System Design
- Design an error handling mechanism for an application with 80+ modules on the frontend side. — System Design plus JS in browser
- Why is hash-map or a map’s cyclomatic complexity less than other collections?- Data Structure and Algorithm | Asymptotic Runtime Complexity
- A pretty straight forward yet surprising question — Sort using Insertion Sort technique.
- Implement your own promise.
- How will you write a static method in ES5 — simple but a tricky question.
- What is the cognitive complexity of Sonarqube, and how will you develop it?
- Explain SOLID and how you enforce it in your daily development.
- What are Elastic Servers and how do you think it's designed?
- How do you optimize your REST API?
- Lots of questions of memory optimization, memory leaks, optimization techniques, rendering time optimization techniques.
- How does Facebook authorize another app. — If simply put the question was how is JWT token shared and used for authentication.
Future for Frontend Engineers…
If you like it, then do press the clap button and post in comments what you think about it.