Skip to content

Latest commit

 

History

History
264 lines (233 loc) · 9.23 KB

javascript.md

File metadata and controls

264 lines (233 loc) · 9.23 KB

Pytania na wiedzę

Opisz różnice pomiędzy zmiennymi definiowanymi z użyciem var, let oraz const.
  • const i let są z nami od ES6.
  • Zmienne zadeklarowane przez var ulegają hoistingowi i działają w kontekscie funkcji. do let i const nie można się odwołać przed inicjalizacją i działają w kontekście blokowym np. pętla for
    
    for (let i = 0; i < 5; i++) {
    setTimeout(() => console.log(i), 1000)
    }
    
  • Zmienne deklarowane za pomącą const nie mogą być redefiniowane
    
     let score = 10;
     score = score + 1;
     const divEl = document.getElementById('div1');
     divEl = 10 // Error
    
    
Na czym polega hoisting i które elementy mu podlegają?
  • Polega na wynoszeniu zmiennych i funkcji (zadeklarowanych za pomocą słowa function) na sam początek scope'u.
  • Zmienne deklarowane za pomocą const i let też ulegają hoistingowi, lecz trafiają do Temporal Dead Zone (TDZ)
Opisz różnice pomiędzy funkcją definiowaną z użyciem słowa kluczowego function a arrow function.
  • Arrow function nie tworzy zakresu
  • Do funkcji zadeklarowanej słowem kluczowym function można odwoływać się i przed i po zadeklarowaniu
Jaka jest różnica pomiędzy metodami map() oraz forEach(). Do czego możemy wykorzystać te metody.
  • Metoda map() zwraca nową tablice
  • Metoda forEach() działa na oryginalnej tablicy. Więc nie powinno się zmieniać elementów tablicy tym sposobem (a zwłaszcza kiedy nie rozumie się różnicy)
Jak działa metoda reduce()? Jakie argumenty przyjmuje ta metoda oraz przekazany do niej callback?
  • todo
Wymień różnice pomiędzy Cookies, Local Storage i Session Storage | x | Cookies | Local Storage | Session Storage | | ---------------------- | --------------------- | ------------- | ------------------ | | **Max rozmiar** | 4kb | 10mb | 5mb | | **HTML** | HTML4 / HTML5 | HTML5 | HTML5 | | **Dostępność** | tylko dana domena | każde okno | to samo okno | | **Żywotność** | do ustawienia | nigdy | do zamknięcia okna | | **Lokalizacja** | przeglądarka i server | przegladarka | przegladarka | | **Wysyłany w request** | tak | nie | nie |
Opisz różnicę pomiędzy kompozycją a dziedziczeniem uwzględniając wady i zalety każdego z tych podejść.
Wymień kilka wzorców pozwalających na tworzenie obiektów.
  • Poprzez zwykle const obj = {}
  • Za pomocą klas const obj = new Obj()
  • Używając fabryk factory function
        
        const list = () => {
            const items = [];
            return {
                addItem = (item) => items.push(item),
                showItems = () => items
            } 
        }
        
        
Na czym polega bąbelkowanie (ang. bubbling) oraz propagacja zdarzeń?
  • todo
W jaki sposób jednowątkowy język, jakim jest JS pozwala na wykonywanie asynchronicznych operacji? Czym jest event loop?
  • Aby nie blokować wykonywanego kodu wykorzystujemy Promise funkcja działa w tle i gdy się skończy wykona się callback
  • Można używać .then() albo async await
  • async await jest czytelniejsze i wykorzystuje
    
    try {
        await doSomething();
    } catch(error) {
        cnosole.error(error)
    }
    
    
Czym jest `Symbol`?
  • todo
Na czym polega mechanizm koercji w języku JavaScript?
  • todo
Wymień różnice między `axios` a `fetch`.
  • todo
Co to jest domknięcie? Podać przykład kodu.
  • Closure jest wtedy, kiedy mamy dostęp do zmiennej poza jej obecnym zakresem
  •  
    const points = () => {
        let score = 0;
    
    return {
        getScore:() => score,
        addScore: (scores) => score += scores
    }
    

    }

Jaka jest różnica między `==` i `===`?
W jaki sposób możemy zmienić kontekst wywołania funkcji?
  • bind(this) - zwraca funkcję z nowym kontekstem
  • call() - wywołuje funkcje z nowym kontekstem, od apply rózni się tym ze tu oarametry do funkcji przekazuje się po przecinku a nie w tablicy
  • appy() - wywołuje funkcje z nowym kontekstem, parametry funkcji są przekazywane w tablicy
Jakie znasz sposoby optymalizacji wydajności stron internetowych?
  • Używanie Server Side Rendering (Next.js, vuex)
  • Code spliting np. lazy load - zmiejsza rozmiar początkowego bundle'a dzieki czemu strona ładuje się szybciej [todo link]()
Co to jest `use strict`
Co to jest `ajax`
Czym jest i do czego jest używana funkcja natychmiastowa (IIFE)?
Co to jest `hoisting`?
Wymień typy w JS (Prymitywne i Referencyjne)
Czy w JS'ie występuje dziedziczenie?
  • tak np. class App extends React.Component {}

  • Czym różni się mongo db od mysql

  • Klasy kodów HTTP (200, 300, 400, 500)

  • Metody HTTP (PUT, GET, PATCH, POST, DELETE) - różnica między PUT i PATCH

  • Tworzenie sessji http, headers, token

  • Gdzie dodać znacznik script? przed zamknięciem body, czy w nagłówku? // przed zamknięciem body

  • Ile może być maksymalnie znaczników nav? // 1 (ułatwienie dla osob np niewidzących)

  • Jak przekazać z html do css jakieś stringi ? // data-atrybut

  • Jak tworzyć i konfigurować tokeny w axios

  • Jaka jest różnica w sass pomiędzy placeholder a mixin

  • Sposoby optymalizacji kodu

  • Konfiguracja webpacka

  • czym się rózni deklaracja funkcji od przypisania jej do zmiennej

  • czym są genric type (typescript);

  • czym jest redux thunk

  • opisz działanie reduxa

  • czym się rózni object programing od functional programming

  • Jak działa jwt

  • róznice między HTTP a HTTPS

  • git merge vs rebase

  • czym jest mock - Mock to obiekt, którego używa się zamiast rzeczywistej implementacji w trakcie testów jednostkowych.

  • do czego sluzy cron - cron jest opartym na czasie programem do harmonogramowania zadań w systemach operacyjnych z rodziny Unixa. Może zostać wykorzystany do uruchamiania zadań (programów, komend, skryptów) o określonych godzinach,

  • do czego słuzy indeksowanie w bazie danych

  • w jaki sposób wysyłasz zapytania do api // postman insomnia przeglądarka