Skip to content

FE Internship Skill List (deprecated)

Vojtech Mašek edited this page Aug 15, 2023 · 3 revisions

⚠️ This list is deprecated, please use the copy of google doc template.


Minimum Knowledge Gained in Successful FE Internship

JavaScript

  • everything listed in ES2015+ workshop slides
    • declarations: const/let/var
    • immutability
    • template literals
    • { prop }, { [key]: value }
    • spread — array, object
    • destructuring — array, object (defaults)
    • arguments — spread, defaults, rest
    • arrow functions (this — optional?)
    • lazy evaluation patterns (&&, ||)
  • Node, NPM, package.json (basic understanding)

TypeScript

  • basics (type annotations; primitive types and void)
  • string literal types
  • enums and union types
  • classes (private, static and readonly qualifiers; using decorators)
  • interfaces, generics, keyof
  • built in utility types
  • Tuples vs Arrays
  • TypeGuards
  • Null and Undefined checking (in addition to lazy evaluation)

Unit testing

  • Jest
  • test-driven development
  • mocking, etc.

Angular

  • project setup and maintenance (Angular CLI, angular.json)
  • modules
    • Angular vs TypeScript modules
    • declaration, providers, export, import
  • components
    • data-binding ((), [], [()])
    • usage of common directives (*ngIf, *ngFor, [ngClass], [ngStyle])
    • inputs, outputs; implementation of 2-way-binding
    • using @Input() decorated setters
  • directives
    • attribute vs structural directives (passively)
    • implementation of attribute directives
    • @HostBinding(), @HostListener()
  • services
    • basics (reactive design and implementation; providers and injection)
    • HttpClient usage
  • reactive forms
    • building (using FormBuilder and without it) and binding
    • management (setting and getting state, subscription)
    • using and implementing validators
    • custom controls (ControlValueAccesor implementation)
  • pipes
    • usage and implementation
    • difference between pure/impure
    • useful impure pipes explanation (async, ...)
  • interceptors
  • guards
  • routing
    • routing module configuration
    • router events; listening to route changes

Asynchronous and Reactive Mechanisms

  • basics of Promises (manual creation; creation from Observables)
  • async, await
  • creation of Observables (from[Event|Promise], of, pipe)
  • (un-)subscription ([un]subscribe, takeUntil, async pipe)
  • common observable operators (map, filter, switchMap, mergeMap, combineLatest, forkJoin, debounceTime, withLatestFrom, take, distinctUntilChanged, tap...)
  • Subject, ReplaySubject, BehaviorSubject

Nx

  • Nx CLI
  • modular architecture, organizing code into libraries

NgRx

  • ability to design useful state models
  • ability to implement action classes, reducers, effects and selectors
  • subscription (subscribe/async); dispatching
  • chaining with other observables

Apollo Client

  • GraphQL concepts, GraphQL Playground
  • GraphQL Code Generator
  • configuring cache, HTTP middleware

Styling

  • CSS basics (common CSS3 selectors and properties)
  • flex-box layout and absolute/relative positioning
  • grid layout
  • transitions
  • common SCSS features (nesting, variables, mixins, compile-time expressions)

Principles, Paradigms, Architectures and Habits

  • knowledge of commonly used design/implementation patterns at FlowUp
  • active knowledge of functional constructs in JS/TS
  • intuitive theoretical understanding of:
    • OOP basics (classes, encapsulation, inheritance, polymorphism)
    • smart and dumb components
    • observer pattern and reactive programming
    • flux pattern

Development process

  • Git flow (commit messages, PRs, feature branch flow)
  • code review etiquette (see Google guidelines)
  • working in a Scrum team (standups, estimations, etc.)

References

Clone this wiki locally