Pytania rekrutacyjne z baz danych (Middle) z odpowiedziami

75 pytań na rozmowę rekrutacyjną z tematu Bazy danych (Middle) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.

Rozwiąż ten test
  1. 1.Jakiej struktury danych używa domyślny indeks w PostgreSQL?
  2. 2.Jest indeks na (last_name, first_name). Które zapytanie może go efektywnie użyć?
  3. 3.Jest indeks na created_at. Dlaczego WHERE date(created_at) = '2026-11-01' może go zignorować?
  4. 4.Dlaczego zwykły indeks B-tree nie przyspieszy WHERE name LIKE '%son'?
  5. 5.Czym jest indeks częściowy?
  6. 6.Czym jest indeks pokrywający i index-only scan?
  7. 7.Dlaczego PostgreSQL może wybrać skan sekwencyjny, mimo że indeks istnieje?
  8. 8.Co daje CREATE INDEX CONCURRENTLY?
  9. 9.Który typ indeksu pasuje do wyszukiwania wewnątrz kolumny jsonb, np. WHERE data @> '{"tags": ["sale"]}'?
  10. 10.Dlaczego losowe UUID (v4) jako klucze główne mogą spowalniać wstawienia do dużych tabel?
  11. 11.Czym różni się EXPLAIN od EXPLAIN ANALYZE?
  12. 12.W EXPLAIN ANALYZE planer oszacował 10 wierszy, a dostał 500 000. Na co to wskazuje?
  13. 13.Jakich algorytmów złączeń może używać PostgreSQL?
  14. 14.Dlaczego SELECT COUNT(*) FROM big_table może być wolne w PostgreSQL?
  15. 15.Jak znaleźć zapytania, które na produkcji zużywają najwięcej łącznego czasu?
  16. 16.Jaki jest domyślny poziom izolacji transakcji w PostgreSQL?
  17. 17.Czym jest „niepowtarzalny odczyt” (non-repeatable read)?
  18. 18.Czym jest „utracona aktualizacja” (lost update) i jak jej zapobiec?
  19. 19.Co robi SELECT ... FOR UPDATE?
  20. 20.Czym jest zakleszczenie (deadlock) i co robi z nim PostgreSQL?
  21. 21.Jak działa blokowanie optymistyczne?
  22. 22.Co robi INSERT ... ON CONFLICT (email) DO UPDATE?
  23. 23.Dlaczego długie transakcje są szkodliwe w PostgreSQL?
  24. 24.Czym jest savepoint?
  25. 25.Co robi funkcja okna, np. ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC)?
  26. 26.Czym różni się RANK() od DENSE_RANK()?
  27. 27.Jak policzyć sumę narastającą płatności każdego użytkownika?
  28. 28.Do czego przydaje się CTE (WITH ...)?
  29. 29.Na co pozwala WITH RECURSIVE?
  30. 30.Dlaczego WHERE id NOT IN (SELECT user_id FROM bans) może nie zwrócić żadnego wiersza?
  31. 31.Na co pozwala LEFT JOIN LATERAL?
  32. 32.Do czego służy COUNT(*) FILTER (WHERE status = 'paid')?
  33. 33.Kiedy używać kolumn jsonb w PostgreSQL?
  34. 34.Co daje wyszukiwanie pełnotekstowe PostgreSQL w porównaniu z ILIKE '%word%'?
  35. 35.Czym jest problem N+1 zapytań?
  36. 36.Dlaczego paginacja keyset (kursorem) jest szybsza niż OFFSET na dalekich stronach?
  37. 37.Po co aplikacje używają puli połączeń?
  38. 38.Jak w nowoczesnym PostgreSQL dodać kolumnę NOT NULL z wartością domyślną do ogromnej tabeli bez długich blokad?
  39. 39.Jak bezpiecznie zmienić nazwę kolumny używanej przez działającą aplikację?
  40. 40.Czym jest widok zmaterializowany?
  41. 41.Jaka jest częsta wada umieszczania logiki biznesowej w triggerach?
  42. 42.Co robi Row-Level Security (RLS) w PostgreSQL?
  43. 43.Gdzie należy wymuszać regułę „unikalny e-mail”?
  44. 44.Jak wydajnie wstawić 10 000 wierszy?
  45. 45.Co oznacza MVCC w PostgreSQL?
  46. 46.Co robi VACUUM?
  47. 47.Dlaczego UPDATE w PostgreSQL zapisuje całą nową wersję wiersza?
  48. 48.Kiedy w MongoDB powiązane dane warto osadzić w jednym dokumencie zamiast się do nich odwoływać?
  49. 49.Czym jest aggregation pipeline w MongoDB?
  50. 50.Czy MongoDB obsługuje transakcje obejmujące wiele dokumentów?
  51. 51.Który typ danych Redisa pasuje do tabeli wyników (leaderboardu)?
  52. 52.Co jest najtrudniejsze w cache'owaniu wyników z bazy?
  53. 53.Co się dzieje, gdy Redis osiągnie limit maxmemory?
  54. 54.Jaka jest kluczowa różnica w skalowaniu SQL i NoSQL, jak się ją zwykle opisuje?
  55. 55.Czym, w przybliżeniu, jest trzecia postać normalna (3NF)?
  56. 56.Jak przechowywać zmiany planów subskrypcji użytkownika, żeby widzieć historię?
  57. 57.Czym jest asocjacja polimorficzna i jaki ma problem?
  58. 58.Jak zwykle przechowywać tagi artykułów w bazie relacyjnej?
  59. 59.Po co zapisywać cenę z chwili zakupu w zamówieniu, zamiast zawsze łączyć z aktualną ceną produktu?
  60. 60.Do czego służy replika do odczytu?
  61. 61.Czym jest odtwarzanie do punktu w czasie (PITR)?
  62. 62.Dlaczego ALTER TABLE na obciążonej tabeli może zamrozić całą aplikację?
  63. 63.Do czego służy seed bazy danych?
  64. 64.Dlaczego testy integracyjne na prawdziwej bazie (np. w Dockerze) są często lepsze niż mockowanie bazy?
  65. 65.Czym jest „odczyt fantomowy” (phantom read)?
  66. 66.Co musi robić aplikacja, używając poziomu izolacji Serializable w PostgreSQL?
  67. 67.Co zwróci SELECT DISTINCT ON (user_id) * FROM orders ORDER BY user_id, created_at DESC?
  68. 68.Co dodaje do wyniku GROUP BY ROLLUP (country, city)?
  69. 69.Czym jest kolumna generowana?
  70. 70.Jakie są kompromisy typu ENUM w PostgreSQL dla kolumny statusu?
  71. 71.Dlaczego ORDER BY created_at DESC LIMIT 10 może być bardzo szybkie na ogromnej tabeli?
  72. 72.Czym jest „Bitmap Heap Scan” w planie EXPLAIN?
  73. 73.Przed czym chroni statement_timeout?
  74. 74.Dlaczego INCR w Redisie dobrze nadaje się do prostego limitera żądań?
  75. 75.Co robi klucz obcy z ON DELETE RESTRICT (lub domyślnym NO ACTION) przy usuwaniu wiersza, do którego są odwołania?