├── 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 | LinkedIn 458 | 459 | 460 | Instagram 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 --------------------------------------------------------------------------------