├── README.md
└── assets
├── Checklist.jpg
└── banner-img.jpg
/README.md:
--------------------------------------------------------------------------------
1 | # 45 Days Frontend Interview Preparation Kit
2 |
3 | This repo contains a complete guidance for Frontend Interview Preparation.
4 |
5 |

6 |
7 |
8 |
9 | ### Week 1 : Brushing up HTML, CSS, JS!
10 |
11 | ```
12 | Day-wise Schedule:
13 |
14 | Day 1: Revise HTML in 0.5 day or less than that. Start with CSS theory revision.
15 | Day 2: Practise the CSS questions on bfe.dev
16 | 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.
17 | 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.
18 |
19 | ```
20 |
21 |
22 | Important HTML Topics
23 |
24 | - HTML 5 features
25 | - HTML Document Structure
26 | - Forms (Input types, attributes, validations)
27 | - Semantic tags and uses
28 | - Metatag
29 | - Media tags : image, audio, video
30 | - SEO using HTML tags
31 | - IFrames
32 |
33 |
34 | Useful Resources
35 |
36 |
37 | - [HTML MDN Docs](https://developer.mozilla.org/en-US/docs/Web/HTML)
38 | - [W3 Schools](https://www.w3schools.com/html/)
39 | - [HTML Web.Dev](https://web.dev/learn/html/)
40 | - [HTML Best Practises](https://github.com/hail2u/html-best-practices)
41 | - [HTML Best Practises II](https://www.freecodecamp.org/news/html-best-practices/)
42 | - [Increasing SEO using HTML tags](https://javascript.plainenglish.io/top-10-html-tags-you-need-to-know-for-better-seo-with-code-39add1e7ba6d)
43 | - [Semantic Tags and How to use them correctly?](https://www.semrush.com/blog/semantic-html5-guide/)
44 |
45 |
46 |
47 | Note:
48 | Once you have basic understanding of HTML, you can read from web.dev website for deep understanding of concepts.
49 |
50 |
51 |
52 |
53 |
54 | Important CSS Topics
55 |
56 | - Box Model
57 | - Cascading
58 | - Specificity
59 | - Flex
60 | - Grid
61 | - Selectors
62 | - Pseudo-class Vs Pseudo-elements
63 | - Measurement Units (Absolute Vs Relative units, Which one to prefer?)
64 | - Positions
65 | - Animations and Transitions
66 | - z-index
67 | - Accessibility
68 |
69 |
70 | Useful Resources
71 |
72 |
73 | - [Best Resource : CSS Web.Dev](https://web.dev/learn/css/)
74 | - [bfe.dev](https://bigfrontend.dev/css): best resource to practise css questions
75 | - [Practise by Patterns](https://web.dev/patterns/)
76 | - [10 Amazing games to learn CSS](https://daily-dev-tips.com/posts/10-amazing-games-to-learn-css/)
77 | - [CSS Best practises and Naming conventions](https://hackernoon.com/best-practice-in-css-organisation-and-naming-conventions-4d103ujy)
78 | - [CSS Naming Conventions Part-2](https://www.freecodecamp.org/news/css-naming-conventions-that-will-save-you-hours-of-debugging-35cea737d849/)
79 | - [CSS Practise Questions](https://bigfrontend.dev/css)
80 |
81 |
82 |
83 |
84 |
85 | Important Javascript Topics
86 |
87 | - Working of JS
88 | - Execution Context
89 | - Callstack
90 | - Data types ( Especially Arrays, Objects, Strings)
91 | - Array and Object methods
92 | - let/var/const
93 | - Hoisting, Temporal Dead Zone
94 | - Illegal shadowing
95 | - Scope, Scope chaining
96 | - Mutable/Immutable data types
97 | - Shallow and Deep copy
98 | - DOM (DOM methods) and BOM
99 | - Critical Rendering Path
100 | - Functions
101 | - Function Declaration
102 | - Function Expression
103 | - Functional Programming
104 | - Arrow Functions
105 | - IIFE
106 | - [`this` keyword](https://medium.com/tech-tajawal/javascript-this-4-rules-7354abdb274c)
107 | - [Arrow function and `this` keyword](https://dev.to/bhagatparwinder/arrow-functions-this-keyword-350j)
108 | - Call, Apply, Bind
109 | - Closure and it's uses
110 | - Callbacks, Callback Hell
111 | - Promises, promise chaining
112 | - Async/Await
113 | - [Callbacks vs promises vs asyc/await](https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/)
114 | - [Currying](https://javascript.plainenglish.io/javascript-currying-comprehensive-guide-e69c47497309)
115 | - Debouncing and Throttling
116 | - Event Propagation
117 | - Bubbling
118 | - Capturing
119 | - Event Delegation
120 | - Prototype and Prototypal Inheritance
121 | - Memoisation
122 | - Generator Functions
123 | - Event Loop , Mictrotasks, Macrotasks
124 | - [Events: DOMContentLoaded, load, beforeunload, unload](https://tilomitra.com/html-page-lifecycle-events/)
125 | - async/defer
126 | - [Polyfills](https://github.com/ghoshsuman845/js-polyfills) (Mostly asked polyfills : Promise, Promise.all, Promise.any, Promise.race, Promise.allSettled, call, apply, bind, map, reduce, filter, forEach, flat, fetch API)
127 | - Web APIs
128 | - setTimout, setInterval
129 | - High Order Functions
130 | - [Working of JS Engine](https://youtu.be/xckH5s3UuX4?si=0S3VazCatZBlDfgv)
131 |
132 |
133 | Useful Resources
134 |
135 |
136 | - Start with watching [Namaste Javascript Playlist | Akshay Saini](https://youtu.be/pN6jk0uUrD8?si=9OSqFUJqgjRp6btb) : It is one of the best resources for understanding the JS concepts in depth, it will help you in revising at end moment.
137 | - [MDN Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript) : This is the source of truth for learning JS.
138 | - [Javascript Info](https://javascript.info/)
139 | - [Nisha Singla JS Playlist](https://youtu.be/Yy9A2rAkOgw?si=C6BeGQ6zLQjiyXFe) : Focus on the following concepts from this channel: Shallow and deep copy, `this` keyword, call apply bind, prototype
140 | - [Techsith](https://www.youtube.com/@Techsithtube): Check his interview questions playlist.
141 |
142 |
143 |
144 | Javascript Interview questions
145 |
146 |
147 | - [JS Coding Questions | Suman Ghosh](https://github.com/ghoshsuman845/js-coding-questions)
148 | - [Js Coding Challenge | Sadanand Pai](https://jscodechallenges.vercel.app/)
149 | - [Learners Bucket EBook](https://learnersbucket.com/javascript-interview-guide-ebook/)
150 |
151 |
152 |
153 |
154 |
155 | ### Week 2 : Practice Time!
156 |
157 | Remember `Practise makes a man perfect`? So, this week we will focus on practising conceptual questions and making basic applications in JS.
158 |
159 | Practise on the following links step by step:
160 | - [Leetcode 30 days of JS](https://leetcode.com/studyplan/30-days-of-javascript/)
161 | - Start with Easy questions, then Medium and Hard : [GreatFrontend JS Problems](https://www.greatfrontend.com/prepare/coding) : [Solutions](https://github.com/ghoshsuman845/GreatFrontendSolutions)
162 | - [BigFrontEnd Javascript Problems](https://bigfrontend.dev/problem)
163 |
164 | 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.
165 |
166 | Adding below a list of small applications that you can practise:
167 | - Star Rating
168 | - Implementing Flipkart Search bar functionality using debouncing or throttle
169 | - Typeahead/ autocomplete search bar
170 | - Todo List (Having CRUD operations)
171 | - Creating components like Carousel , Accordian, Popover
172 | - Infinite Scroll
173 | - Implement tic tac toe
174 | - Create Images gallery(Use optimations like infinite scroll, pagination, search functionality)
175 | - Implement a poll widget
176 | - Implement a Event Emitter
177 | - Implement a Kanban board having tasks and subtasks
178 | - Creating a basic Chat Application
179 | - Implement Comment Widget (add comments, add multiple replies to comments and delete them like Facebook or Instagram)
180 | - Food Ordering App having Search, Sort, Filter, Add to Cart functionality
181 | - Build a calculator (add/subtract... then multiply/divide... then log/pow... etc)
182 | - Create a progress bar having start/restart, pause, stop functionality
183 | - Create Analog Clock
184 | - Implement Day Calendar
185 | - Create a Todo List using Drag and Drop
186 |
187 | `Note`:
188 | - 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.
189 | - `Practise everything by coding on laptop` as this will not just help in learning but would also `make you confident` and would `increase your coding speed` while you're interviewing.
190 |
191 |
192 | Useful Resources
193 |
194 |
214 |
215 |
216 |
217 | ### Week 3 : Jumping to Web Fundamentals!
218 | 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.
219 |
220 |
221 | Web Vitals
222 |
223 |
224 | Core Web Vitals
225 |
226 | - [Cumulative Layout Shift (CLS)](https://web.dev/cls/)
227 | - [First Input Delay (FID)](https://web.dev/fid/)
228 | - [Largest Contentful Paint (LCP)](https://web.dev/lcp/)
229 |
230 |
231 |
232 | Other metrics
233 |
234 | - [Interaction to next Paint (INP)](https://web.dev/inp/)
235 | - [First Contentful Paint (FCP)](https://web.dev/fcp/)
236 | - [Time to First Byte (TTFB)](https://web.dev/ttfb/)
237 |
238 |
239 |
240 |
241 |
242 | Web Performance and Optimisations
243 |
244 | - [Core Web Vitals](https://web.dev/fast/#core-web-vitals)
245 | - [Optimising Images](https://web.dev/fast/#optimize-your-images)
246 | - [Optimising Videos](https://web.dev/fast/#lazy-load-images-and-video)
247 | - [Optimising Javascript files](https://web.dev/fast/#optimize-your-javascript)
248 | - [Optimising resource delivery](https://web.dev/fast/#optimize-your-resource-delivery)
249 | - [Optimising CSS files](https://web.dev/fast/#optimize-your-css)
250 | - [Optimising third party resources](https://web.dev/fast/#optimize-your-third-party-resources)
251 | - [Optimising Web Fonts](https://web.dev/fast/#optimize-webfonts)
252 | - [Optimising Network Quality](https://web.dev/fast/#optimize-for-network-quality)
253 | - [Webpack to optimized/compressed pages (Code splitting, Brotli Compression, Gzip Compression)](https://levelup.gitconnected.com/the-ultimate-guide-to-modern-web-application-performance-ec4eec9939)
254 |
255 |
256 |
257 |
258 | Storing Data in browser
259 |
260 | - [Storage for Web](https://web.dev/storage-for-the-web/)
261 | - [Local Storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
262 | - [Session Storage](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
263 | - [Cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)
264 | - [IndexedDB](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API)
265 | - [Cache Storage API](https://web.dev/cache-api-quick-guide/)
266 |
267 |
268 |
269 |
270 |
271 |
272 | Network requests
273 |
274 | - [Fetch API](https://web.dev/introduction-to-fetch/)
275 | - [Abort Controller](https://medium.com/@icjoseph/using-react-to-understand-abort-controllers-eb10654485df)
276 | - [XMLHttpRequest](https://javascript.info/xmlhttprequest)
277 | - [CORS](https://shorturl.at/wxUXY)
278 | - [Long Polling](https://www.pubnub.com/blog/http-long-polling/)
279 | - [Web Sockets](https://web.dev/websockets-basics/)
280 | - [Server Sent Events](https://javascript.info/server-sent-events)
281 | - [Web Workers](https://web.dev/workers-basics/)
282 | - [Service Workers](https://web.dev/learn/pwa/service-workers/)
283 |
284 |
285 |
286 | DOM
287 |
288 | - [Shadow DOM](https://web.dev/shadowdom-v1/)
289 | - [Declarative Shadow DOM](https://developer.chrome.com/en/articles/declarative-shadow-dom/#:~:text=Shadow%20DOM%20provides%20a%20way,inserted%20within%20its%20Shadow%20Tree.)
290 | - [Virtual DOM](https://adhithiravi.medium.com/react-virtual-dom-explained-in-simple-english-fc2d0b277bc5)
291 | - [DOM](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction)
292 |
293 |
294 |
295 |
296 | Security
297 |
298 | - [Cross-Site Scripting (XSS)](https://medium.com/codelighthouse/xss-what-it-is-how-it-works-and-how-to-prevent-it-454629e3a0da)
299 | - [Cross-Site Request Forgery (CSRF)](https://medium.com/@rajeevranjancom/cross-site-request-forgery-csrf-attack-6949edb9e405#:~:text=Cross%20site%20request%20forgery%20(CSRF)%2C%20also%20known%20as%20XSRF,both%20the%20business%20and%20user.)
300 | - [SQL Injection Attacks](https://medium.com/purplebox/sql-injection-da949c39dbe6)
301 | - [Distributed Denial Of Service (DDoS) Attack](https://medium.com/@anshulchoudhary227/what-is-a-ddos-attack-5c7db5d92dc8#:~:text=A%20distributed%20denial%2Dof%2Dservice%20(DDoS)%20attack%20is,a%20flood%20of%20Internet%20traffic.)
302 | - [Man in the Middle Attacks](https://medium.com/@.Qubit/man-in-the-middle-mitm-attack-19a4faffdc9)
303 | - Read about how to avoid these security breaches
304 | - [Content Security Policy (CSP)](https://web.dev/csp/)
305 | - [CORS](https://blog.logrocket.com/the-ultimate-guide-to-enabling-cross-origin-resource-sharing-cors/)
306 | - [Security headers](https://sundowndev.medium.com/how-important-are-http-security-headers-ad511848eb95)
307 |
308 |
309 |
310 | Design Patterns
311 |
312 | - Singleton Pattern
313 | - Module Pattern
314 | - Factory Pattern
315 | - Proxy Pattern
316 | - Observer Pattern
317 | - Prototype Pattern
318 |
319 | Resources for Design Patterns
320 | - [patterns.dev](https://www.patterns.dev/posts/introduction)
321 | - [freecodecamp](https://www.freecodecamp.org/news/javascript-design-patterns-explained/)
322 | - [javascriptpatterns](https://javascriptpatterns.vercel.app/patterns)
323 |
324 |
325 |
326 |
327 | React Design Patterns
328 |
329 | - Con/Pres Pattern
330 | - HOC Pattern
331 | - Render Props Pattern
332 | - Hooks Pattern
333 | - Provider Pattern
334 | - Compound Pattern
335 |
336 | Resources for Design Patterns
337 | - [patterns.dev](https://www.patterns.dev/posts/introduction)
338 | - [javascriptpatterns](https://javascriptpatterns.vercel.app/patterns)
339 |
340 |
341 |
342 |
343 | Rendering Patterns
344 |
345 | - Client-Side Rendering (CSR)
346 | - Server-Side Rendering (SSR)
347 | - Static site generation (SSG)
348 | - Static Rendering
349 | - Incremental Static Regeneration
350 | - Progressive Hydration
351 | - Streaming Server-Side Rendering
352 | - React Server Components
353 | - Selective Hydration
354 | - Islands Architecture
355 | - Animating View Transitions
356 |
357 |
358 |
359 |
360 | Performance Patterns
361 |
362 | - Optimize your loading sequence
363 | - Static Import
364 | - Dynamic Import
365 | - Import On Visibility
366 | - Import On Interaction
367 | - Route Based Splitting
368 | - Bundle Splitting
369 | - PRPL Pattern
370 | - Tree Shaking
371 | - Preload
372 | - Prefetch
373 | - Preconnect
374 | - Optimize loading third-parties
375 | - List Virtualization
376 | - Compressing JavaScript
377 |
378 |
379 |
380 | Other Important Topics
381 |
382 | - How web works?
383 | - HTTPS
384 | - How APIs work? REST vs SOAP APIs
385 | - API Methods
386 | - [HTTP Headers](https://blog.postman.com/what-are-http-headers/)
387 |
388 |
389 |
390 |
391 |
392 | ### Week 4 : Time to do some System Design!
393 |
394 | Listing some best resources for studying System Design in Frontend, go on and binge watch them:
395 |
396 | - [Front-End Engineer YT Channel](https://www.youtube.com/watch?v=5vyKhm2NTfw&list=PLI9W87-Dqn7j_x6QtR6sUjycJR7nQLBqT)
397 | - [Chirag Goel YT Channel](https://www.youtube.com/watch?v=sV_4pOGosnU&list=PL4CFloQ4GGWICE0Tz6iXKfN3XWkXRlboU)
398 | - [BigFrontend Frontend Design Questions](https://bigfrontend.dev/design)
399 | - [GreatFrontend Design Questions](https://www.greatfrontend.com/system-design)
400 |
401 | 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:
402 |
403 | - [GreatFrontend System Design Framework](https://www.greatfrontend.com/system-design/framework)
404 |
405 |
406 | ### Week 5 : Reading React Docs and Practising!
407 | Brush up your react by reading React docs and making some small apps in react.
408 |
409 | Study all the hooks from [React docs](https://react.dev/reference/react):
410 | - useState()
411 | - useEffect()
412 | - useCallback()
413 | - useMemo()
414 | - useRef()
415 | - useReducer()
416 | - useContext()
417 | - useId()
418 | - useLayoutEffect()
419 |
420 | Other important topics:
421 | - [What is the virtual DOM in React?](https://blog.logrocket.com/virtual-dom-react/)
422 | - [Optimising performance of React App](https://blog.logrocket.com/optimizing-performance-react-app/)
423 | - [Reconciliation, Diffing, Batch Update in React](https://youtu.be/rysTbzKOEO0?si=elH9rty-FKrOFwO2)
424 | - [React Lifecycle Hooks](https://www.freecodecamp.org/news/react-component-lifecycle-methods/)
425 | - [Custom Hooks Practise Questions](https://bigfrontend.dev/react)
426 | - [React Quizes](https://bigfrontend.dev/react-quiz)
427 | - [React Patterns](https://reactpatterns.com/)
428 | - [React Cheatsheet](https://devhints.io/react)
429 | - [React by Example](https://reactbyexample.github.io/getting-started)
430 | - [React Handbook](https://reacthandbook.com/)
431 | - [React Coding Challenges](https://reactchallenges.live/dashboard/overview)
432 |
433 |
434 | ### Week 6 : Get you hands dirty by practising some DSA questions!
435 |
436 | 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:
437 |
438 | - [Blind 75 Leetcode Questions](https://leetcode.com/discuss/general-discussion/460599/blind-75-leetcode-questions) : [Solutions](https://github.com/ghoshsuman845/Blind-75-Leetcode-Solution-In-JS)
439 |
440 | Once you are done with the above, practise more `Arrays` and `Strings` questions:
441 | - [Leetcode Array Interview Questions](https://leetcode.com/problemset/all/?listId=wpwgkgt&page=1&topicSlugs=array)
442 | - [Leetcode Strings Interview Questions](https://leetcode.com/problemset/all/?listId=wpwgkgt&page=1&topicSlugs=string)
443 | - [Leetcode Sorting Interview Questions](https://leetcode.com/problemset/all/?listId=wpwgkgt&page=1&topicSlugs=sorting)
444 | - [Leetcode JS Interview Problems](https://leetcode.com/problemset/javascript/)
445 |
446 | ### Tips:
447 |
448 | - Whenever starting with a new topic, don't just read from one resource, try to read atleast 10 articles surrounding that topic from [Medium](https://medium.com/)/other websites.
449 | - 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.😌
450 |
451 | #
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
--------------------------------------------------------------------------------
/assets/Checklist.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ghoshsuman845/frontend-interview-preparation-kit/cb97abaf674490b2df70bff7752ea4b72fd058f5/assets/Checklist.jpg
--------------------------------------------------------------------------------
/assets/banner-img.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ghoshsuman845/frontend-interview-preparation-kit/cb97abaf674490b2df70bff7752ea4b72fd058f5/assets/banner-img.jpg
--------------------------------------------------------------------------------