Autor: 09.08.2023
JavaScript Developer - przykładowe pytania rekrutacyjne
Przygotowaliśmy zestaw najpopularniejszy pytań na stanowisku JavaScript Developera. Artykuł podzielony jest na kilka sekcji. W pierwszej sekcji sprawdzisz szybko swoją wiedzę, z pytaniami wielokrotnego wyboru. W kolejnej sekcji przejdziemy do pytań ogólnych. Na końcu dołączyliśmy także zadania do samodzielnego rozwiazania, polegające na implementacji wskazanej funkcji. Pytania z artykułu obejmują różne aspekty języka i pokazują, czego możesz się spodziewać na rozmowie rekrutacyjnej. Zaczynamy!
10 pytań wielokrotnego wyboru
Poniżej znajdziesz dziesięć przykładowych pytań obejmujących szeroki zakres tematów z języka JavaScript. Sprawdź, czy potrafisz prawidłowo odpowiedzieć.
Zdarzenia
Jaki jest efekt użycia metody “event.preventDefault()” w języku JavaScript?
A) Zatrzymuje propagację zdarzenia
B) Uniemożliwia domyślne zachowanie zdarzenia
C) Powoduje ponowne wywołanie zdarzenia
D) Wyłącza nasłuchiwanie zdarzenia
Prawidłowa odpowiedź: B. Tej metody używamy po to, aby zatrzymać domyślną obsługę zdarzenia i zaimplementować własną obsługę.
Daty
Spójrz na poniższy kod i odpowiedz, co zostanie wyświetlone na konsoli?
const date = new Date();
console.log(date.getMonth());
A) Numer miesiąca (0-11)
B) Numer dnia tygodnia (0-6)
C) Bieżący rok
D) Bieżąca godzina
Prawidłowa odpowiedź: A. Miesiące w JavaScript numerujemy od 0 do 11.
Prototype
Która metoda pozwala na dodanie nowej właściwości do prototypu obiektu?
A) Object.create()
B) Object.assign()
C) Object.defineProperty()
D) Object.prototype.hasOwnProperty()
Prawidłowa odpowiedź: C. Obiektowość w JS bazuje na tzw. prototypach. Za pomocą metody defineProperty() możemy dodać nową właściwość do obiektu. Właściwości dodane w ten sposób są domyślnie zabezpieczone przed zapisem oraz listowaniem.
Domknięcia
Kod w języku JavaScript przedstawiony poniżej zawiera domknięcie. Co zostanie zwrócone przez funkcję add()?
function add(a) {
return function(b) {
return a + b;
};
}
var addToFive = add(5);
console.log(addToFive(3));
A) 8
B) 15
C) 53
D) 35
Prawidłowa odpowiedź: A. Domknięcia to specyficzny mechanizm języka JS. Dzięki domknięciu, funkcja wewnętrzna ma dostęp do zmiennych funkcji zewnętrznej.
Filter
Jakie jest użycie metody filter() w języku JavaScript?
A) Tworzy nową tablicę z wynikami wywołania podanej funkcji dla każdego elementu tablicy
B) Filtruje elementy tablicy na podstawie określonego warunku
C) Redukuje tablicę do pojedynczej wartości na podstawie podanej funkcji
D) Wykonuje określoną funkcję dla każdego elementu tablicy
Prawidłowa odpowiedź: B. Filtrowanie to jedna z kluczowych technik programowania funkcyjnego. Dzięki niemu możemy odfiltrować z tablicy elementy, spełniające określone przez nas kryterium.
Funkcje czyste
Które z poniższych twierdzeń dotyczących funkcji czystych są prawdziwe?
A) Funkcja czysta może zmieniać zmienne globalne
B) Funkcja czysta zawsze zwraca wartość
C) Funkcja czysta nie może korzystać ze zmiennych lokalnych
Prawidłowa odpowiedź: B. Funkcje czyste to kolejny ważny element programowania funkcyjnego. Prawidłowa funkcja czysta zawsze powinna zwracać wartość.
Dziedziczenie
Który z poniższych fragmentów przedstawia poprawny sposób na wywołanie metody z klasy bazowej w klasie pochodnej?
A) super.methodName();
B) this.methodName();
C) base.methodName();
D) parent.methodName();
Prawidłowa odpowiedź: B. Za pomocą słowa kluczowego super.nazwaMetody możemy się odwołać do metody z klasy bazowej, w klasie pochodnej.
Obiekty
Zaznacz zdania prawdziwe dotyczące metod obiektów w języku JavaScript:
A) Metody to funkcje należące do obiektów
B) Obiekty nie mogą posiadać metod
C) Metody są używane tylko w celu tworzenia obiektów
Prawidłowa odpowiedź: A. Metoda to po prostu funkcja należąca do obiektu.
Tablice (Array)
Jak usunąć ostatni element z tablicy w języku JavaScript?
A) array.shift()
B) array.deleteLast()
C) array.removeLast()
D) array.pop()
Prawidłowa odpowiedź: D. Metoda pop() usuwa ostatni element z tablicy.
Zmienne
Jak zmienne są “hoistowane” w JavaScript?
A) Zmienne nie są hoistowane w JavaScript
B) Deklaracje zmiennych są przenoszone na początek swojego zakresu widoczności
C) Deklaracje zmiennych są przenoszone na koniec swojego zakresu widoczności
Prawidłowa odpowiedź: B. Hoisting to specyficzny dla JavaScript mechanizm. Polega on na tym, że deklaracje są przenoszone (windowane) automatycznie na samą górę zakresu. W praktyce pozwala to np. wywołać zmienną, zanim została zadeklrarowana. Trzeba jednak uważać na ważne różnice pomiędzy deklaracjami var oraz let.
Sprawdź swoje umiejętności przed rozmową o pracę na stanowisko JavaScript Developer.
Dowiedz się więcej5 pytań ogólnych z odpowiedziami
Jak działa dziedziczenie prototypowe w JavaScript?
Dziedziczenie prototypowe w JavaScript polega na tym, że każdy obiekt dziedziczy właściwości i metody od swojego obiektu prototypowego. Gdy próbujemy uzyskać dostęp do właściwości lub metody obiektu, JavaScript najpierw sprawdza obecny obiekt, a następnie jego obiekt prototypowy, przechodząc w górę łańcucha prototypów, aż do obiektu Object.
Wyjaśnij różnicę między var, let a const w JavaScript
var jest hoistowane i ma zakres funkcyjny, let ma zakres blokowy i nie jest hoistowane, a const ma zakres blokowy i nie może być ponownie przypisane po zainicjowaniu.
Co to są Promise w JavaScript?
Promise to obiekt reprezentujący asynchroniczną operację, która może zakończyć się sukcesem (resolve) lub niepowodzeniem (reject).
Jak działa hoisting w kontekście JavaScript?
Hoisting to mechanizm, w którym deklaracje zmiennych i funkcji są przenoszone (podniesione) na górę zakresu przed faktycznym wykonaniem kodu.
Co to jest Event Delegation?
Event Delegation to technika, w której zdarzenia obsługiwane są na jednym wspólnym elemencie rodzica, zamiast na każdym pojedynczym potomku. Pomaga to w efektywniejszym zarządzaniu zdarzeniami w przypadku dynamicznie generowanych elementów.
3 zadania do samodzielnego rozwiązania
Na rozmowie rekrutacyjnej możesz także spotkać sie z zadaniami, które będą wymagały od Ciebie samodzielnego pisania kodu. Przygotowaliśmy poniżej trzy przykładowe zadania.
Zliczanie znaków w ciągu tekstowym
Twoje zadanie: zaimplementuj algorytm zliczający spacje w ciągu tekstowym. Funkcja spaceCounter() będzie odpowiedzialna za zliczanie spacji w ciągu tekstowym. Oczekujemy, że twoja funkcja da następujące wyniki:
- spaceCounter("Hello !") -> 1
- spaceCounter(" ") -> 1
- spaceCounter("") -> 0
- spaceCounter("Hello JS !") -> 2
Twoim zadaniem w tym wypadku będzie implementacja funkcji spaceCounter(). Poradzisz sobie?
Łączenie znaków w ciągu tekstowym
Twoje zadanie: zaimplementuj algorytm łączący elementy ciągu tekstowego za pomocą underscore (_). Poniżej prezentujemy schemat blokowy algorytmu:
Spójrz na testy funkcji connect(). Oczekujemy, że twoja implementacja funkcji zwraca następujące wyniki:
- connect("a") -> a
- connect("ab") -> a_b
- connect("abc") -> a_b_c
Obliczanie mediany
Postaraj się wpaść na pomysł, w jaki sposób wyznaczyć medianę ze zbioru liczb całkowitych. Spójrz na testy funkcji median(). Oczekujemy, że twoja implementacja funkcji da następujące wyniki:
- median([1, 2, 3, 4, 5]) -> 3
- median([2, 3, 1, 4, 5]) -> 3
- median([1]) -> 1
- median([3, 2]) -> 2.5
- median([]) -> undefined
Twoim zadaniem w tym wypadku będzie implementacja funkcji spaceCounter(). Poradzisz sobie?
Jak przygotować się do rozmowy rekrutacyjnej z JavaScript?
Na rozmowie możesz trafić na przeróżne zadania: testy, pytania otwarte oraz implementację algorytmów w kodzie. Dlatego w artykule pokazaliśmy jak największą różnorodność takich pytań. Jeśli chcesz dobrze przygotować się do rozmowy rekrutacyjnej z JavaScript to zacznij od przerobienia 250 zadań, które znajdziesz w podlinkowanym kursie. Dzięki kursowi sprawdzisz swój stan wiedzy i uzupełnisz ewentualne braki. Powodzenia na rozmowie!