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