This repo contains a complete guidance for Frontend Interview Preparation.
Day-wise Schedule:
Day 1: Revise HTML in 0.5 day or less than that. Start with CSS theory revision.
Day 2: Practise the CSS questions on bfe.dev
Day 3-4: Watch Namaste JS playlist for a refresher. This will take two days as there are good amount of videos, it's always good if you can complete it in less time.
Day 5-7: Focus on other topics that weren't covered in the playlist. Practise the polyfills by coding them yourself, not just on the notebook but also on the laptop.
Important HTML Topics
-
HTML 5 features
-
HTML Document Structure
-
Forms (Input types, attributes, validations)
-
Semantic tags and uses
-
Metatag
-
Media tags : image, audio, video
-
SEO using HTML tags
-
IFrames
Useful Resources
- HTML MDN Docs
- W3 Schools
- HTML Web.Dev
- HTML Best Practises
- HTML Best Practises II
- Increasing SEO using HTML tags
- Semantic Tags and How to use them correctly?
Note: Once you have basic understanding of HTML, you can read from web.dev website for deep understanding of concepts.
Important CSS Topics
-
Box Model
-
Cascading
-
Specificity
-
Flex
-
Grid
-
Selectors
-
Pseudo-class Vs Pseudo-elements
-
Measurement Units (Absolute Vs Relative units, Which one to prefer?)
-
Positions
-
Animations and Transitions
-
z-index
-
Accessibility
Useful Resources
- Best Resource : CSS Web.Dev
- bfe.dev: best resource to practise css questions
- Practise by Patterns
- 10 Amazing games to learn CSS
- CSS Best practises and Naming conventions
- CSS Naming Conventions Part-2
- CSS Practise Questions
Important Javascript Topics
-
Working of JS
- Execution Context
- Callstack
-
Data types ( Especially Arrays, Objects, Strings)
-
Array and Object methods
-
let/var/const
-
Hoisting, Temporal Dead Zone
-
Illegal shadowing
-
Scope, Scope chaining
-
Mutable/Immutable data types
-
Shallow and Deep copy
-
DOM (DOM methods) and BOM
-
Critical Rendering Path
-
Functions
- Function Declaration
- Function Expression
- Functional Programming
- Arrow Functions
- IIFE
-
Call, Apply, Bind
-
Closure and it's uses
-
Callbacks, Callback Hell
-
Promises, promise chaining
-
Async/Await
-
Debouncing and Throttling
-
Event Propagation
- Bubbling
- Capturing
- Event Delegation
-
Prototype and Prototypal Inheritance
-
Memoisation
-
Generator Functions
-
Event Loop , Mictrotasks, Macrotasks
-
async/defer
-
Polyfills (Mostly asked polyfills : Promise, Promise.all, Promise.any, Promise.race, Promise.allSettled, call, apply, bind, map, reduce, filter, forEach, flat, fetch API)
-
Web APIs
-
setTimout, setInterval
-
High Order Functions
-
Useful Resources
- Start with watching Namaste Javascript Playlist | Akshay Saini : It is one of the best resources for understanding the JS concepts in depth, it will help you in revising at end moment.
- MDN Docs : This is the source of truth for learning JS.
- Javascript Info
- Nisha Singla JS Playlist : Focus on the following concepts from this channel: Shallow and deep copy,
this
keyword, call apply bind, prototype - Techsith: Check his interview questions playlist.
Javascript Interview questions
Remember Practise makes a man perfect
? So, this week we will focus on practising conceptual questions and making basic applications in JS.
Practise on the following links step by step:
- Leetcode 30 days of JS
- Start with Easy questions, then Medium and Hard : GreatFrontend JS Problems : Solutions
- BigFrontEnd Javascript Problems
Above mentioned resources are more than enough for practising Javascript questions. Now comes the turn of practising by making some small applications in HTML, CSS, JS
. Such type of questions are generally asked in Machine Coding
rounds.
Adding below a list of small applications that you can practise:
- Star Rating
- Implementing Flipkart Search bar functionality using debouncing or throttle
- Typeahead/ autocomplete search bar
- Todo List (Having CRUD operations)
- Creating components like Carousel , Accordian, Popover
- Infinite Scroll
- Implement tic tac toe
- Create Images gallery(Use optimations like infinite scroll, pagination, search functionality)
- Implement a poll widget
- Implement a Event Emitter
- Implement a Kanban board having tasks and subtasks
- Creating a basic Chat Application
- Implement Comment Widget (add comments, add multiple replies to comments and delete them like Facebook or Instagram)
- Food Ordering App having Search, Sort, Filter, Add to Cart functionality
- Build a calculator (add/subtract... then multiply/divide... then log/pow... etc)
- Create a progress bar having start/restart, pause, stop functionality
- Create Analog Clock
- Implement Day Calendar
- Create a Todo List using Drag and Drop
Note
:
- You need not practise all the questions mentioned above, skip the questions you think you'll be able to solve confidently and pick the once that you feel hesitant about.
Practise everything by coding on laptop
as this will not just help in learning but would alsomake you confident
and wouldincrease your coding speed
while you're interviewing.
Useful Resources
Don't forget to keep practising questions everyday, as it will not only make your concepts more clear but would also give confidence to solve tougher questions.
Web Vitals
Core Web Vitals
Web Performance and Optimisations
- Core Web Vitals
- Optimising Images
- Optimising Videos
- Optimising Javascript files
- Optimising resource delivery
- Optimising CSS files
- Optimising third party resources
- Optimising Web Fonts
- Optimising Network Quality
- Webpack to optimized/compressed pages (Code splitting, Brotli Compression, Gzip Compression)
Storing Data in browser
Network requests
Security
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- SQL Injection Attacks
- Distributed Denial Of Service (DDoS) Attack
- Man in the Middle Attacks
- Read about how to avoid these security breaches
- Content Security Policy (CSP)
- CORS
- Security headers
Design Patterns
- Singleton Pattern
- Module Pattern
- Factory Pattern
- Proxy Pattern
- Observer Pattern
- Prototype Pattern
Resources for Design Patterns
React Design Patterns
- Con/Pres Pattern
- HOC Pattern
- Render Props Pattern
- Hooks Pattern
- Provider Pattern
- Compound Pattern
Resources for Design Patterns
Rendering Patterns
- Client-Side Rendering (CSR)
- Server-Side Rendering (SSR)
- Static site generation (SSG)
- Static Rendering
- Incremental Static Regeneration
- Progressive Hydration
- Streaming Server-Side Rendering
- React Server Components
- Selective Hydration
- Islands Architecture
- Animating View Transitions
Performance Patterns
- Optimize your loading sequence
- Static Import
- Dynamic Import
- Import On Visibility
- Import On Interaction
- Route Based Splitting
- Bundle Splitting
- PRPL Pattern
- Tree Shaking
- Preload
- Prefetch
- Preconnect
- Optimize loading third-parties
- List Virtualization
- Compressing JavaScript
Other Important Topics
- How web works?
- HTTPS
- How APIs work? REST vs SOAP APIs
- API Methods
- HTTP Headers
Listing some best resources for studying System Design in Frontend, go on and binge watch them:
- Front-End Engineer YT Channel
- Chirag Goel YT Channel
- BigFrontend Frontend Design Questions
- GreatFrontend Design Questions
The above resources will help you in understanding the way you can deal with System Design rounds, although these solutions are not the only ones, you can come up with your own ideas as well. Also, different interviewers have different expectations when they ask you to provide a design for any system, no solution is the best/concrete solution in that case, however you can follow this pattern for framing your answers:
Brush up your react by reading React docs and making some small apps in react.
Study all the hooks from React docs:
- useState()
- useEffect()
- useCallback()
- useMemo()
- useRef()
- useReducer()
- useContext()
- useId()
- useLayoutEffect()
Other important topics:
- What is the virtual DOM in React?
- Optimising performance of React App
- Reconciliation, Diffing, Batch Update in React
- React Lifecycle Hooks
- Custom Hooks Practise Questions
- React Quizes
- React Patterns
- React Cheatsheet
- React by Example
- React Handbook
- React Coding Challenges
Not many companies ask DSA questions for Frontend Engineer roles, but for the sake of some good companies which have DSA rounds and for practise too, you can follow the following two resources:
Once you are done with the above, practise more Arrays
and Strings
questions:
- Leetcode Array Interview Questions
- Leetcode Strings Interview Questions
- Leetcode Sorting Interview Questions
- Leetcode JS Interview Problems
- Whenever starting with a new topic, don't just read from one resource, try to read atleast 10 articles surrounding that topic from Medium/other websites.
- Always try to understand the
What, Why and How's?(What is the topic about? Why is it used? How to use/implement it?)
of a topic with an example of it. This gives you a fair and required idea about the topic. You can also take a real time coding implementation of that topic which will give you the best understanding of the topic, rest of the clarity comes with experience and practise.😌