Pytania rekrutacyjne z algorytmów i struktur danych (Junior) z odpowiedziami
75 pytań na rozmowę rekrutacyjną z tematu Algorytmy i struktury danych (Junior) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.
Rozwiąż ten test- 1.Co opisuje notacja Big O?
- 2.Jaka jest złożoność czasowa tej funkcji?
- 3.Jaka jest złożoność czasowa dwóch zagnieżdżonych pętli po tej samej tablicy o długości
n? - 4.Dlaczego O(2n + 10) zapisuje się po prostu jako O(n)?
- 5.Która złożoność rośnie najwolniej wraz ze wzrostem
n? - 6.Jaka jest złożoność odczytu
arr[i]z tablicy w JavaScripcie? - 7.Która operacja na tablicy w JavaScripcie ma zwykle złożoność O(n)?
- 8.Jaka jest złożoność
arr.includes(x)na nieposortowanej tablicy? - 9.Dlaczego
set.has(x)jest zwykle szybsze niżarr.includes(x)dla dużych kolekcji? - 10.Jaka jest złożoność pamięciowa tej funkcji?
- 11.Co oznacza O(1) dodatkowej pamięci dla algorytmu?
- 12.Na czym polega główna idea tablicy haszującej?
- 13.Czym jest kolizja w tablicy haszującej?
- 14.Jaki jest czas wyszukiwania w tablicy haszującej w najgorszym przypadku?
- 15.Kiedy
Mapjest lepszym wyborem niż zwykły obiekt jako słownik? - 16.Jak najprościej usunąć duplikaty z tablicy wartości prostych?
- 17.Jak w O(n) sprawdzić, czy tablica zawiera duplikaty?
- 18.Co gwarantuje struktura danych stos?
- 19.Które zadanie naturalnie rozwiązuje się stosem?
- 20.Co gwarantuje kolejka?
- 21.Dlaczego kolejka oparta na
pushishiftmoże być wolna dla dużych danych? - 22.Gdzie sam silnik JavaScriptu używa stosu?
- 23.Czym jest lista jednokierunkowa?
- 24.Ile kosztuje pobranie k-tego elementu listy wiązanej?
- 25.Która operacja na liście wiązanej jest O(1), a na początku tablicy O(n)?
- 26.Czego potrzebuje każda poprawna funkcja rekurencyjna?
- 27.Co się stanie po wywołaniu tej funkcji?
- 28.Dlaczego ta funkcja Fibonacciego jest wolna dla
n = 40? - 29.Czym jest memoizacja?
- 30.Czym jest wyszukiwanie liniowe?
- 31.Czego wyszukiwanie binarne wymaga od danych?
- 32.Jaka jest złożoność czasowa wyszukiwania binarnego?
- 33.Ile mniej więcej porównań potrzebuje wyszukiwanie binarne w posortowanej tablicy 1 000 000 elementów?
- 34.Co zwróci ten kod?
- 35.Co powinien zwrócić komparator
(a, b) => ..., abysortpostawiłaprzedb? - 36.O czym warto pamiętać przy
arr.sort()? - 37.Co gwarantuje sortowanie stabilne?
- 38.Jaka jest typowa złożoność dobrego uniwersalnego sortowania przez porównania?
- 39.Jak działa sortowanie bąbelkowe?
- 40.Kiedy sortowanie przez wstawianie to dobry wybór?
- 41.Jak odwrócić tablicę w miejscu z O(1) dodatkowej pamięci?
- 42.Czym jest technika „dwóch wskaźników”?
- 43.Jak sprawdzić, czy napis jest palindromem, w czasie O(n) i z O(1) dodatkowej pamięci?
- 44.Jak w O(n) sprawdzić, czy dwa napisy są anagramami?
- 45.Jaka jest złożoność budowania napisu przez
+=w pętli w nowoczesnych silnikach JavaScriptu? - 46.Czym jest drzewo w strukturach danych?
- 47.Czym jest liść w drzewie?
- 48.Czym jest wysokość drzewa?
- 49.Jaką własność ma binarne drzewo poszukiwań (BST)?
- 50.Ile zajmuje znalezienie wartości w zbalansowanym BST z
nwęzłami? - 51.Co się stanie, jeśli wstawisz po kolei 1, 2, 3, 4, 5 do prostego BST bez balansowania?
- 52.Jaką strukturą jest DOM strony internetowej?
- 53.Czym różni się przechodzenie w głąb (DFS) od przechodzenia wszerz (BFS)?
- 54.Jakiej struktury danych używa przeszukiwanie wszerz (BFS)?
- 55.Czym jest graf?
- 56.Czym różni się graf skierowany od nieskierowanego?
- 57.Jak zwykle przechowuje się graf z wieloma wierzchołkami, ale niewieloma krawędziami?
- 58.Co opisuje ta lista sąsiedztwa?
- 59.Jaka jest złożoność znalezienia maksimum w nieposortowanej tablicy?
- 60.Dlaczego
Math.max(...arr)może zawieść na bardzo dużej tablicy? - 61.Jak w O(n) policzyć, ile razy każde słowo występuje na liście?
- 62.Two Sum: znajdź dwie liczby w nieposortowanej tablicy, które sumują się do
target. Jakie jest podejście O(n)? - 63.Co oznacza „zamortyzowane O(1)” dla
arr.push? - 64.Jaka jest złożoność czasowa sprawdzenia
isPrimeponiżej? - 65.Jaka jest złożoność tej pętli?
- 66.Jaka jest złożoność odczytu klucza ze zwykłego obiektu JavaScriptu,
obj[key]? - 67.Czym jest tablica sum prefiksowych?
- 68.Jaka jest złożoność
arr.slice()(kopii całej tablicy)? - 69.Jak zwykle reprezentuje się macierz (siatkę 2D) w JavaScripcie?
- 70.Dlaczego nie należy pisać
new Array(3).fill([])dla siatki 3 × 3? - 71.Czym jest algorytm zachłanny?
- 72.Co oznacza „brute force” (przegląd zupełny) dla algorytmu?
- 73.Algorytm ma O(n²). Ile mniej więcej razy dłużej będzie działał, gdy dane urosną z 1000 do 10 000 elementów?
- 74.Dlaczego
Setobiektów nie pomaga usunąć duplikatów o tej samej zawartości? - 75.Jak
arr.splice(i, 1)w środku tablicy wpływa na wydajność?