Pytania rekrutacyjne z baz danych (Senior) z odpowiedziami
75 pytań na rozmowę rekrutacyjną z tematu Bazy danych (Senior) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.
Rozwiąż ten test- 1.Jak PostgreSQL decyduje, czy wersja wiersza jest widoczna dla transakcji?
- 2.Czym jest przepełnienie ID transakcji (wraparound) i dlaczego jest groźne?
- 3.Czym jest puchnięcie tabeli (bloat) i co je zwykle powoduje?
- 4.Jaki jest cel dziennika zapisu z wyprzedzeniem (WAL)?
- 5.Z czego rezygnuje się, ustawiając
synchronous_commit = off? - 6.Czym różnią się silniki oparte na B-drzewach i na drzewach LSM przy zapisach?
- 7.Dlaczego bazy wierszowe słabo radzą sobie z zapytaniami analitycznymi po miliardach wierszy?
- 8.Dlaczego zbyt wiele indeksów szkodzi tabeli z intensywnymi zapisami nie tylko przez miejsce na dysku?
- 9.Czym jest write skew?
- 10.Jak PostgreSQL implementuje poziom Serializable?
- 11.Jak zbudować na PostgreSQL kolejkę zadań, którą bezpiecznie odpytuje wiele workerów?
- 12.Czym są blokady doradcze (advisory locks) w PostgreSQL?
- 13.Wiele żądań aktualizuje ten sam wiersz licznika (
UPDATE stats SET views = views + 1 WHERE id = 1). Jaki jest problem i rozwiązanie? - 14.Dlaczego unikalność klucza idempotencji należy wymuszać ograniczeniem unikalności, a nie przez „sprawdź, potem wstaw”?
- 15.Dlaczego rozproszona blokada w Redisie (np. Redlock) sama nie wystarcza do ochrony poprawności danych?
- 16.Jaki jest kompromis między replikacją synchroniczną a asynchroniczną?
- 17.Użytkownik aktualizuje profil i od razu widzi stare dane. Odczyty idą do replik. Jaki jest problem i rozwiązanie?
- 18.Na co pozwala replikacja logiczna, a na co nie pozwala fizyczna replikacja strumieniowa?
- 19.Czym jest change data capture (CDC)?
- 20.Czym jest „split brain” w układzie z przełączaniem awaryjnym?
- 21.Co oznaczają RPO i RTO?
- 22.Kiedy partycjonowanie tabel w PostgreSQL pomaga najbardziej?
- 23.Co cechuje dobry klucz shardowania?
- 24.Dlaczego w rozproszonych magazynach danych używa się haszowania spójnego?
- 25.Jakie problemy pojawiają się, gdy dane są shardowane między bazy?
- 26.Jak generować unikalne ID między shardami bez centralnej sekwencji?
- 27.Co mówi twierdzenie CAP?
- 28.Co oznacza „spójność ostateczna” (eventual consistency)?
- 29.Czym jest linearyzowalność?
- 30.Dlaczego w systemie kworum z N replikami odczyty i zapisy z
R + W > Ndają aktualne odczyty? - 31.Zapytanie jest szybkie w developmencie, ale wolne na produkcji przy tych samych indeksach. Co sprawdzić najpierw?
- 32.Jaki problem mogą powodować prepared statements z planami generycznymi?
- 33.Jakie pułapki niesie PgBouncer w trybie puli transakcji?
- 34.Jak bezpiecznie uzupełnić nową kolumnę w tabeli z 500 milionami wierszy?
- 35.Jak dodać klucz obcy lub sprawdzenie
NOT NULLdo dużej tabeli bez długiego blokowania zapisów? - 36.Jak tanio liczyć unikalnych odwiedzających w ogromnych zbiorach danych, gdy wystarczy wynik przybliżony?
- 37.Jaki jest typowy powód, by ograniczać
max_connectionsw PostgreSQL i używać puli zamiast podnosić je do tysięcy? - 38.Jakie są kompromisy między „wspólnymi tabelami z
tenant_id” a „schematem lub bazą na tenanta” w aplikacji SaaS? - 39.Czym jest event sourcing?
- 40.Czym jest CQRS w kontekście przechowywania danych?
- 41.Dlaczego „podwójny zapis” (zapisz do bazy, potem opublikuj w Kafce) jest ryzykowny i jaka jest alternatywa?
- 42.Jak zamodelować w PostgreSQL szeregi czasowe, np. metryki co sekundę z 10 000 urządzeń?
- 43.Czym jest single-table design w DynamoDB?
- 44.Dlaczego trzymanie ważnych danych biznesowych tylko w Redisie jest ryzykowne?
- 45.Kiedy wyszukiwarka, jak Elasticsearch czy OpenSearch, ma sens obok PostgreSQL?
- 46.Do czego służy schemat gwiazdy (star schema)?
- 47.Jak przeprowadzić aktualizację głównej wersji PostgreSQL z minimalnym przestojem?
- 48.Dlaczego same zrzuty logiczne (
pg_dump) nie wystarczą jako strategia kopii zapasowych dużej, obciążonej bazy? - 49.Jakie środki chronią wrażliwe kolumny (np. dane osobowe) w bazie?
- 50.W czym podczas incydentu pomaga
pg_stat_activity? - 51.Jak zespół powinien podejść do wyboru bazy dla nowego produktu?
- 52.Jaka jest rola
shared_buffersi cache stron systemu w wydajności PostgreSQL? - 53.Dlaczego zapytanie z
ORpo różnych kolumnach może być wolne i co może pomóc? - 54.Co robi ustawienie
fillfactordla często aktualizowanej tabeli? - 55.Do czego służą rozszerzone statystyki (
CREATE STATISTICS)? - 56.Dlaczego zapytanie z
LIMITbywa wolniejsze od tego samego zapytania bezLIMIT? - 57.Do czego zaprojektowano magazyny wide-column, jak Cassandra?
- 58.Kiedy baza grafowa (np. Neo4j) pasuje lepiej niż relacyjna?
- 59.Jak write concern i read concern w MongoDB wiążą się ze spójnością?
- 60.Do czego używa się bazy wektorowej (albo rozszerzenia
pgvector)? - 61.Dlaczego porządkowanie zdarzeń po znacznikach czasu generowanych przez bazy na różnych serwerach jest ryzykowne?
- 62.Jakie jest główne ryzyko łańcuchów
ON DELETE CASCADEw dużym schemacie? - 63.Dla
WHERE tenant_id = $1 AND created_at > $2 ORDER BY created_atjaka kolejność indeksu złożonego jest najlepsza? - 64.Jak PostgreSQL może na poziomie bazy zapobiec dwóm nakładającym się rezerwacjom tej samej sali?
- 65.Kiedy przydaje się partycjonowanie haszowe?
- 66.Proces zamówienia obejmuje serwisy zamówień, płatności i wysyłki, każdy z własną bazą. Jak utrzymać spójność bez transakcji rozproszonych?
- 67.Długie zapytania analityczne na replice strumieniowej są anulowane z komunikatem „conflict with recovery”. Dlaczego?
- 68.Jaka jest bezpieczna kolejność usuwania kolumny w systemie ze stopniowymi wdrożeniami?
- 69.Tuż po przełączeniu bazy opóźnienia skaczą, choć nowy serwer główny ma ten sam sprzęt. Jaka jest prawdopodobna przyczyna?
- 70.Użytkownik prosi o usunięcie wszystkich swoich danych osobowych (RODO). Co często się pomija?
- 71.Dlaczego migracje warto testować na kopii danych wielkości produkcji?
- 72.Po wdrożeniu setki nowych instancji aplikacji otwierają połączenia naraz i baza przestaje odpowiadać. Co pomoże?
- 73.Czym jest TOAST w PostgreSQL?
- 74.Jak utrzymać poprawność zdenormalizowanej wartości, np.
posts.comments_count, przy współbieżności? - 75.Dlaczego indeks unikalny na
emailmoże przestać pasować po dodaniu miękkiego usuwania?