This file contains typical js/front-end related questions that I've heard during various recruitment processes
Answers will be added later (or You can contribute)
1. Explain what `this` means in JavaScript.
2. How to attach event to existing element in the document (eg. `.my-element`)?
2.2. How to attach event to newly/dynamically added (`.my-element`) element?
2.3. What is an event delegation?
3. Explain the differences between sync and async programming in JavaScript?
3.3 What is a Promise ? How to use it? What methods do You know that use this concept?
3.4 Code an example where do You have array of objects, You create promise for each of them (some of them will not return `200`) but after they're all return something, console log `finished!` message (best use mapping of promises)
4. What types of `storage` do we have in browser environment?
4.1 What are the differences between localStorage, sessionStorage, and cookieStorage?
5. How to clone an array in the way that future changes in cloned array won't propagate to origin one?
6. Implement simple Article class, where You'll able to observe (observer) e.g. when title changes (it must be as universal as possible).
7. Explain what CSS box model is.
8. Explain how would You implenent the sticky header (always on top).
9. Explain the differences between `position:fixed` and `position:absolute`.
10. What `float` does? What's the origin purpose of it?
11. What methods do You know for CSS layouts?
12. Whats the pros and cons of using flexbox?
13. What `strict mode` do?
14. What is immediately invoked function?
15. How can You improve page load time?
16. What kind of preprocessors do You know?
16.1 Why gulp is faster than grunt?
16.2 Are You able to add plugins to webpack config?
17. Are You familiar with git? What git flows do You know?
17.1 Explain, what `rebase` do?
17.2 What merge strategies do You know? What are the differences between them?
18. What `bind()`, `call()` and `apply()` do? What are the differences between them?
19. Explain what hoisting means (in JavaScript).
20. Explain how closures work.
21. You have a huge array with data, which You have to use in recurring, time-consuming process. How would You improve the performance of doing it?
22. What is the difference between Web Worker and Service Worker?
23. What is mobile-first approach?
24. What libraries do You use for ajax requests?
24.1 Can You implement a plain js xhr request?
24.2 What types of data can you send/receive via ajax requests?
25. Do You know agile/scrum? What experience do You have with it?
25.1 How do You communicate with back-end developers when You need some additional changes in API during the sprint?
25.2 You have an argue inside Your team - what You're gonna do?
25.3 You have an argue between Your and the other team - what You're gonna do?
25.4 You saw that Your collegue violates company rules (technical/social whatever) - what You're gonna do?
26. How can You keep Your code testable?
27. What kind of tests do You know?
28. How Express.js routing works?
29. Do You know any ORMs for Express.js?
30. How Node.js streams works?
31. What is memoization?
32. What is functional programming?
33. What is pure function?
34. What are You best 3 features of ES6 and why?
35. How reducer works?
36. React questions:
36.1 What is `setState` and how it works?
36.2 Pros and cons of using Redux.
36.3 Besides Redux, what other options do we have? What are differencies between them?
36.4 What `reselect` lib do?
36.5 3 popular methods to fetch data from remote APIs
37. What is jsonp?
38. What is cross-origin?
39. How would You implement an app, where API constantly changes?
40. Explain MVC.