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