This repo contains a complete guidance for Frontend Interview Preparation.
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
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
this
keyword- Call, Apply, Bind
- Closure and it's uses
- Callbacks, Callback Hell
- Promises, promise chaining
- Async/Await
- Currying
- Debouncing and Throttling
- Event Propagation
- Bubbling
- Capturing
- Event Delegation
- Prototype and Prototypal Inheritance
- Memoisation
- Generator Functions
- Working of JS Engine
- Event Loop , Mictrotasks, Macrotasks
- Events: DOMContentLoaded, load, beforeunload, unload
- 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
- JS Engine
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
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, 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.