Pytania rekrutacyjne JQuery

53 pytań — 20 odpowiedzi dostępnych od razu

Ten darmowy podgląd pytań rekrutacyjnych jQuery przydaje się podczas rozmów dotyczących utrzymania istniejących aplikacji webowych. Zawiera przykładowe pytania i odpowiedzi z pełnej puli 53 zagadnień.

Fiszki obejmują selektory, manipulację DOM, zdarzenia, animacje i efekty. Pomagają przypomnieć sobie praktyczne elementy biblioteki oraz jej miejsce w starszych projektach frontendowych.

Darmowy start

Pierwsze 20 odpowiedzi są dostępne od razu

Przeglądaj pełną listę 53 pytań. Pełne odpowiedzi, przykłady kodu i materiały do nauki odblokujesz w panelu.

Odblokuj 33 odpowiedzi

1. Podstawy JQuery

Czym jest jQuery i czym różni się od czystego JavaScriptu?

jQuery to lekka biblioteka JavaScript, która upraszcza operacje na DOM (Document Object Model), obsługę zdarzeń oraz wykonywanie zapytań AJAX. W praktyce oznacza to, że wiele typowych zadań w JavaScript (np. selekcja elementów, manipulacja strukturą strony, animacje) można zrealizować w krótszym kodzie, używając prostszego i bardziej czytelnego API. Różnica polega również na tym, że jQuery zapewnia spójny interfejs we wszystkich głównych przeglądarkach, co eliminuje wiele problemów z kompatybilnością.

Linki referencyjne:

W jaki sposób dołączyć bibliotekę jQuery do strony internetowej?

Można to zrobić na dwa sposoby:

  1. Lokalnie – pobierając paczkę jQuery ze strony jquery.com i umieszczając ją w projekcie, a następnie odwołując się do pliku w znaczniku <script> w kodzie HTML.
  2. Zdalnie (CDN) – korzystając z sieci dostarczania treści (np. Google Hosted Libraries lub jQuery CDN). Wtedy w <script> podajemy URL do hostowanego pliku.

Przykładowy kod:

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

Linki referencyjne:

Jaki jest cel funkcji ready() (np. $(document).ready()) i dlaczego jest ona istotna?

Funkcja ready() gwarantuje, że kod jQuery zostanie wykonany dopiero wtedy, gdy struktura HTML (DOM) zostanie załadowana i jest gotowa do manipulacji. Zapobiega to sytuacji, w której próbujemy odwołać się do elementów, które nie zostały jeszcze utworzone przez przeglądarkę.

Linki referencyjne:

Jak sprawdzić, której wersji jQuery używamy w trakcie działania aplikacji?

Można odwołać się do właściwości jQuery.fn.jquery lub $.fn.jquery:

console.log($.fn.jquery);

Wyświetli to numer wersji, np. 3.6.0.

Linki referencyjne:

Jaką rolę pełni symbol $ w jQuery?

Symbol $ jest jedynie aliasem dla obiektu jQuery. Pozwala na skrócony zapis, np. zamiast pisać jQuery(document).ready(), możemy użyć $(document).ready(). W przypadku konfliktu z innymi bibliotekami (używającymi $), można skorzystać z trybu tzw. noConflict i używać pełnej nazwy jQuery.

Linki referencyjne:

2. Selektory jQuery

Jakie rodzaje selektorów oferuje jQuery (np. selektory według elementu, klasy, ID)?

  • Selektory podstawowe:
    • $('p') – wszystkie elementy <p>
    • $('.nazwa-klasy') – elementy o podanej klasie
    • $('#nazwa-id') – konkretny element o danym identyfikatorze
  • Selektory atrybutów: np. $('[name="username"]')
  • Selektory hierarchiczne (potomkowie, rodzice, sąsiedzi): np. $('div span'), $('div > ul'), $('h2 + p')
  • Selektory pseudoklas (np. :first, :last, :odd, :even).

Linki referencyjne:

W jaki sposób można wybrać wiele elementów (np. kilka klas lub ID) równocześnie?

Możemy łączyć selektory, rozdzielając je przecinkiem, np. $('.klasa1, .klasa2, #jakiesId'). Wtedy jQuery zwróci wspólną kolekcję elementów odpowiadających któremukolwiek z podanych warunków.

Linki referencyjne:

Jakie aspekty wydajnościowe należy brać pod uwagę przy stosowaniu złożonych selektorów?

  • Zbyt skomplikowane selektory (np. mocno zagnieżdżone, używające wielu pseudoklas) mogą spowodować wolniejszą pracę parsera selektorów.
  • Zamiast tworzyć jeden bardzo złożony selektor, często lepiej jest stosować krótsze, bardziej oczywiste selektory lub selekcję krokową (np. najpierw wybieramy mniejszy zbiór, a następnie filtrujemy).
  • Dobrym pomysłem jest cache’owanie często używanych selektorów w zmiennych (zwłaszcza jeśli odwołujemy się do nich wielokrotnie).

Linki referencyjne:

Na czym polegają selektory atrybutów (np. "[type='text']") w jQuery?

Selektory atrybutów umożliwiają wybór elementów na podstawie wartości danego atrybutu HTML. Przykładowo:

  • $("[type='text']") zwróci wszystkie elementy, które posiadają atrybut type="text".
  • $("[data-role='active']") wybierze elementy z atrybutem data-role o wartości active.

Możliwe są także warianty ze znakiem ^ (zaczyna się od), * (zawiera), ~ (zawiera wyraz) itp.

Linki referencyjne:

Czym się różnią metody .find() i .children() podczas nawigacji po DOM?

  • .find(selector) – wyszukuje wszystkie elementy (wielopoziomowo) wewnątrz wybranego kontenera, pasujące do danego selektora.
  • .children(selector?) – zwraca tylko bezpośrednie dzieci elementu (jeden poziom w dół). Można opcjonalnie przekazać selektor, który zawęzi wyniki.

Linki referencyjne:

3. Modyfikacja i przechodzenie po DOM

Jak dodać lub usunąć element HTML w sposób dynamiczny z użyciem jQuery?

  • Dodawanie: Można użyć metod takich jak .append() lub .prepend() w celu wstawiania nowego elementu wewnątrz wybranego kontenera.
// Dodanie nowego akapitu na końcu diva o id="container"
  $('#container').append('<p>Treść nowego akapitu</p>');
  • Usuwanie: Do usuwania elementów służy metoda .remove().
// Usunięcie wszystkich elementów <p> wewnątrz diva
  $('#container p').remove();

Dodatkowe materiały:

W jaki sposób modyfikować tekst bądź zawartość HTML wybranych elementów?

  • Zmienianie tekstu: metoda .text() pozwala zamienić istniejący tekst wewnątrz elementu na nowy.
$('.element-klasy').text('Nowa treść tekstowa');
  • Zmienianie zawartości HTML: metoda .html() pozwala ustawić lub pobrać kod HTML (wraz z tagami) w danym elemencie.
$('#sekcja').html('<strong>Podkreślona treść</strong>');

Dodatkowe materiały:

Na czym polega różnica między metodami .html() a .text()?

  • .html(): Zwraca lub ustawia dokładny kod HTML wewnątrz wybranego elementu (łącznie z tagami, atrybutami, itp.).
  • .text(): Zwraca lub ustawia tylko tekst (bez znaczników). Wszelkie znaczniki HTML zostaną potraktowane jako zwykły tekst.

Dodatkowe materiały:

W jaki sposób sklonować element w jQuery i kiedy może to być potrzebne?

Można użyć metody .clone(), która zwraca kopię wybranego elementu wraz z jego zawartością. Zastosowanie może być potrzebne np. gdy chcemy powielić istniejący formularz, zestaw pól, czy elementy listy:

let kopiaElementu = $('.sekcja-do-klonowania').clone();
$('#miejsce-na-kopie').append(kopiaElementu);

Można również przekazać argumenty do .clone() (true/false), aby skopiować także zdarzenia i dane (np. .clone(true)).

Dodatkowe materiały:

Omów różnice między .append(), .prepend(), .after() i .before().

  • .append(): Dodaje zawartość na końcu (wewnątrz) wybranego elementu.
  • .prepend(): Dodaje zawartość na początku (wewnątrz) wybranego elementu.
  • .after(): Dodaje zawartość tuż za (obok) wybranym elementem w drzewie DOM.
  • .before(): Dodaje zawartość tuż przed (obok) wybranym elementem w drzewie DOM.

Przykład:

$('#element').append('<p>Dodane na końcu</p>');
$('#element').prepend('<p>Dodane na początku</p>');
$('#element').after('<div>Dodane za elementem</div>');
$('#element').before('<div>Dodane przed elementem</div>');

Dodatkowe materiały:

Jakie dobre praktyki warto stosować przy masowej modyfikacji DOM, by uniknąć spadku wydajności?

  1. Cache’owanie selektorów: Wykorzystuj zmienne, by nie wyszukiwać wielokrotnie tych samych elementów.
  2. Zastosowanie fragmentów dokumentu (DocumentFragment) lub tymczasowych kontenerów do budowy złożonych struktur, a następnie jednorazowe wstawienie do DOM.
  3. Zmniejsz liczbę reflow/repaint: Unikaj ciągłego dodawania/usuwania elementów w pętli. Lepiej zbudować całą strukturę w pamięci, a potem wstawić do DOM w jednym kroku.
  4. Używanie metod kolektywnych (np. .map(), .each()) zamiast wielu osobnych wywołań.

Dodatkowe materiały:

4. Obsługa zdarzeń

Jak dodać obsługę zdarzenia do elementu za pomocą jQuery?

Używamy metody .on():

$('.button').on('click', function() {
  alert('Kliknięto przycisk!');
});

Można też stosować skrócone metody, np. .click(), .hover(), .keyup(), jednak .on() daje większą kontrolę i jest nowsze.

Dodatkowe materiały:

Czym jest delegacja zdarzeń (event delegation) i jak zaimplementować ją w jQuery?

Delegacja zdarzeń polega na tym, że zamiast rejestrować handler na wielu podobnych elementach (np. w dużej liście), przypisujemy go do rodzica lub przodka tych elementów. Dzięki temu, gdy element powstanie dynamicznie, zdarzenie będzie wciąż obsługiwane.

Przykład:

$('#lista').on('click', 'li', function() {
   alert('Kliknięto element listy: ' + $(this).text());
});

Tutaj event click jest przypisany do #lista, co pozwala obsługiwać kliknięcia na dynamicznie dodanych elementach li.

Dodatkowe materiały:

Czym różni się .on() od starszych metod, takich jak .bind() czy .live()?

  • .on() jest nowszym, uniwersalnym sposobem rejestrowania zdarzeń.
  • .bind() jest starszą metodą, która rejestruje zdarzenia tylko na istniejących elementach.
  • .live() była metodą pozwalającą na delegację zdarzeń, ale została uznana za przestarzałą i usuniętą w nowszych wersjach jQuery.

W praktyce warto używać .on(), ponieważ obsługuje zarówno bezpośrednie wiązanie zdarzeń, jak i delegację w jednym podejściu.

Dodatkowe materiały:

Jak obsługiwać zdarzenia (np. click, hover, keyup) w przypadku dynamicznie tworzonych elementów?

Należy stosować delegację zdarzeń (patrz pytanie wyżej). Przy pomocy .on() możemy przypisać zdarzenie do rodzica, który już istnieje, i wskazać selektor elementu docelowego jako drugi parametr:

$('#kontener').on('click', '.element-dynamiczny', function() {
  // Akcja wykonywana przy kliknięciu
});

Dodatkowe materiały:

21. Jak powstrzymać propagowanie (bubbling) zdarzenia do elementów nadrzędnych?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
22. W jaki sposób usunąć (odpiąć) zarejestrowany wcześniej handler zdarzenia?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

5. Animacje i efekty

23. Jakie wbudowane efekty i animacje udostępnia jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
24. W jaki sposób łączyć wiele animacji tak, by uruchamiały się jedna po drugiej?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
25. Jakie znaczenie ma parametr callback w metodach animacji jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
26. Jak zatrzymać trwającą animację w jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
27. Jakie aspekty wydajnościowe należy brać pod uwagę przy intensywnym używaniu animacji w jQuery i jak je optymalizować?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

6. Ajax i komunikacja z serwerem

28. Jak wykonać żądanie AJAX w jQuery z użyciem .ajax() lub metod pomocniczych .get() i .post()?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
29. W jaki sposób obsłużyć błędy w komunikacji AJAX przy pomocy jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
30. Jaką rolę pełnią callbacki success, error i complete w metodach AJAX?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
31. Jak przetwarzać dane w formacie JSON otrzymane przez AJAX?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
32. Czym są metody .done(), .fail() i .always() w jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
33. Jak można przerwać trwające żądanie AJAX w jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

7. Tworzenie wtyczek (pluginów)

34. Jak stworzyć podstawową wtyczkę (plugin) w jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
35. Dlaczego rozszerzanie obiektu jQuery.fn jest kluczowe przy pisaniu wtyczek?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
36. Jakie praktyki zapobiegają konfliktom nazw podczas tworzenia wtyczek jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
37. W jaki sposób wprowadzić opcje konfiguracyjne oraz wartości domyślne?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
38. Jak obsłużyć łańcuchowanie wywołań metod (method chaining) we wtyczkach?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

8. Dobre praktyki i wydajność

39. Jakie techniki mogą poprawić wydajność w przypadku intensywnego używania jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
40. W jaki sposób można efektywnie obsługiwać wiele zapytań do DOM (np. korzystać z mechanizmu cache’owania selektorów)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
41. Dlaczego ważne jest ograniczanie liczby reflow/repaint w przeglądarce i w jaki sposób operacje jQuery mogą na to wpływać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
42. Kiedy warto rozważyć użycie czystego JavaScriptu zamiast jQuery ze względu na wydajność?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
43. Jakie często popełniane błędy (anti-patterns) można spotkać przy korzystaniu z jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

9. Zaawansowane techniki i wewnętrzne działanie jQuery

44. Jak działa mechanizm selektorów w jQuery (Sizzle) i dlaczego jest istotny?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
45. Jak obsługuje się obiekty typu Deferred w jQuery i czym różnią się one od natywnych Promise de facto w ES6?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
46. Jakie problemy może powodować wstrzykiwanie zawartości przy pomocy .html()?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
47. Na czym polega mechanizm kolejkowania (queue) w animacjach jQuery?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
48. Jakie ważne zmiany pojawiły się między dużymi wersjami jQuery (np. z 1.x na 2.x oraz 3.x)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
49. Jak zapewnić kompatybilność między różnymi wersjami jQuery lub pomóc sobie w migracji starszego kodu?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

10. Migracja i integracja

50. W jaki sposób umieścić wiele wersji jQuery na jednej stronie i kiedy może być to konieczne?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
51. Czym jest wtyczka jQuery Migrate i do czego służy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
52. Jak uniknąć konfliktu ze zmienną $ w sytuacji, gdy w projekcie używana jest również inna biblioteka (np. Prototype.js)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
53. Jakie są możliwe podejścia do stopniowego zastępowania jQuery natywnymi funkcjami JavaScript, jeśli projekt tego wymaga?

Odpowiedź dostępna w pełnej wersji. Odblokuj 33 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Chcesz poznać wszystkie odpowiedzi?

Uzyskaj pełny dostęp do 53 pytań rekrutacyjnych z JQuery oraz pozostałych technologii.

Zobacz plany cenowe