Pytania rekrutacyjne front-end developer

Przygotuj się na rozmowę rekrutacyjną!

Dla kogo?
Jeżeli wybierasz się na rozmowę rekrutacyjną to nasze repozytorium wiedzy pomoże Ci przygotować się na nią!
Dlaczego warto?
Rejestrując się dostajesz dostęp do największej bazy odpowiedzi i pytań rekrutacyjnych w branży IT w Polsce.
Co zyskasz?
Ucząc się z nami odpowiesz na każde techniczne pytanie rekrutera dzięki czemu dostaniesz swoją wymarzoną pracę.
Pokaż odpowiedź

Odpowiedź jest dostępna dla zalogowanych użytkowników!
Proszę zaloguj się, żeby zobaczyć odpowiedzi na wszystkie pytania!


Stos, który stworzę będzie miał 2 funkcje: wrzucania elementu na stos oraz zdejmowania elementu ze stosu. Stos jest strukturą LIFO, czyli Last In First Out. Oznacza to, że ostatni umieszczony na stosie element jest z niego zdejmowany w pierwszej kolejności. Przejdźmy zatem do implementacji:

const stack = {
  items: [],
  push: function(arg) {
    return this.items.unshift(arg);
  },
  pop: function() {
     if(this.items.length) return this.items.shift();
  }
}

stack.push(9);
stack.push(4);
stack.push(1);
stack.push(5);
stack.push(5);
stack.push(16);
stack.push(2);
stack.pop();
stack.pop();
console.log(stack.items); //expected output: [5, 5, 1, 4, 9]

ukryj
Pokaż odpowiedź

Przede wszystkim to musisz wiedzieć co to jest hoisting. Oprócz tego zmienne typu let oraz const mogą tworzyć zasięg blokowy. Dodatkowo jak nazwa wskazuje const jest “wartością stałą”, czyli nie możemy mu przypisać ponownie wartości. Jak zwykle najlepszy będzie przykład:

if(true) {
  var a = 4;
  console.log(a);
}
console.log(a);

if(true) {
  let b = 1;
  console.log(b);
}
console.log(b);

Najbardziej preferowany w użyciu jest const, w drugiej kolejności let, zaś w przypadkach, gdy nie możemy ich użyć pozostaje nam użycie var.

ukryj
Pokaż odpowiedź

Hoisting występuje w przypadku zadeklarowania zmiennej lub funkcji słowem kluczowym var. Hoisting powoduje, że deklaracje zmiennych są wywoływane w pierwszej kolejności przed wykonaniem reszty kodu. Co trzeba zaznaczyć hoisting jedynie deklaruje zmienne a nie przypisuje im wartości, Myślę, że dobrze zobrazuje to przykład:

console.log(a);
var a = 4;
console.log(a);

Po wykonaniu tego kodu widzimy, że zmienna a została zdefiniowana, ale nie przypisano jej wartości. Zamień teraz w pierwszym console logu zmienną a na dowolną inną i zobacz jaki komunikat otrzymasz w konsoli. Zjawisku hoistingu nie ulegają zmienne zadeklarowane słowami let oraz const (nie do końca nie ulegają – trafiają do tzw. Temporal Dead Zone).

console.log(a);
let a = 4;
console.log(a);

Tutaj otrzymamy błąd o treści: ReferenceError: a is not defined.

W skrócie: Hoisting to wbudowany w JavaScript mechanizm wynoszący wszystkie deklaracje zmiennych na początek funkcji.
Poleganie na hoistingu nie jest jednak najlepszą praktyką. Dużo lepszym wyjściem jest ręczna deklaracja zmiennych na początku funkcji, dzięki czemu kod staje się bardziej czytelny i można uniknąć dziwnych błędów.

ukryj