Front End Engineer Study Guide - nryoung/wiki GitHub Wiki

Todo

  • If you had to roll your own front end framework how might you put it together?
  • What are your thoughts on css-in-js?
  • What does REST mean to you? (Drilling down) What is the difference between a PUT and a POST? In what situations does it matter?
  • If I told you your site had a cross site scripting bug, what sort of attack does that mean I can mount? What's the 100% way to prevent it?
  • Tell me about CORS headers. What is Single Origin Policy?
  • Tell me about CSP headers and what they do. Why does it matter? What's your guidance on when to use them?
  • Tell me something about devtools that you think more people should know.
  • Why do we bundle scripts? Why is 20 files of 50kb each any worse than a single file of 1000Kb? What is your guidance on bundling?
  • How does http/2 affect that guidance?
  • How do you factor browser support into your decisions? What tools do you use?
  • I look for do they have opinions on when to create a component, how components should be organized, why create a method on a component versus an unattached function, versus a module
  • What are some uses of React Context - tell me a time you've used it is one I'd ask for a "senior react" position (whatever that is, you know how I don't like labels like that :P)
  • I would ask about debugging tools, how they use them, what they feel more people should know about
  • What are react's biggest issues
  • what are the biggest issues or annoyances with the tooling around react

Angular vs React

  • Angular is very opinionated on how to structure and write applications built with it.
  • Angular is a full fledged framework that provides Models Views and Controllers.
  • Angular supports two data binding out of the box, so you don't need to setup special event listeners when user input changes.
  • Angular has a whole cli toolset out of the box that makes adding and configure Angular apps a breeze.
  • Need to research this more, but it seems that Angular makes it easier to write progressive web apps.

When to use state management

Knowing when to use a state management tool like Redux becomes pretty obvious when you have to continously lift state up the component heirarchy and attempt to pass state or props through components that don't necessarily care about it. This also means it's not practical to use inversion of control either to pass down the component with the proper state and props. A good example of when Redux would be useful is when implementing an alerting system app wide. You only need to give access to the Redux store to the alert component and you can do cool things like prevent other components in the heirarchy fire events of the same type etc.