Питання на співбесіді з баз даних (Senior) з відповідями
75 запитань для співбесіди з теми Бази даних (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Як PostgreSQL вирішує, чи видима версія рядка для транзакції?
- 2.Що таке переповнення ID транзакцій (wraparound) і чому воно небезпечне?
- 3.Що таке роздування таблиці (bloat) і що його зазвичай спричиняє?
- 4.Яке призначення журналу попереднього запису (WAL)?
- 5.Чим жертвує
synchronous_commit = off? - 6.Чим відрізняються рушії зберігання на B-деревах і на LSM-деревах щодо запису?
- 7.Чому рядкові бази погано справляються з аналітичними запитами по мільярдах рядків?
- 8.Чому забагато індексів шкодить таблиці з інтенсивним записом не лише місцем на диску?
- 9.Що таке write skew?
- 10.Як PostgreSQL реалізує рівень Serializable?
- 11.Як побудувати на PostgreSQL чергу задач, яку безпечно опитують багато воркерів?
- 12.Що таке рекомендаційні блокування (advisory locks) у PostgreSQL?
- 13.Багато запитів оновлюють той самий рядок-лічильник (
UPDATE stats SET views = views + 1 WHERE id = 1). У чому проблема і як її вирішити? - 14.Чому унікальність ключа ідемпотентності слід забезпечувати унікальним обмеженням, а не «перевірити, потім вставити»?
- 15.Чому розподіленого блокування в Redis (наприклад, Redlock) самого по собі недостатньо для коректності даних?
- 16.Який компроміс між синхронною та асинхронною реплікацією?
- 17.Користувач оновлює профіль і одразу бачить старі дані. Читання йдуть на репліки. У чому проблема і як виправити?
- 18.Що дозволяє логічна реплікація, чого не дає фізична потокова?
- 19.Що таке change data capture (CDC)?
- 20.Що таке «split brain» у схемі з перемиканням (failover)?
- 21.Що означають RPO і RTO?
- 22.Коли партиціонування таблиць у PostgreSQL допомагає найбільше?
- 23.Яким має бути добрий ключ шардингу?
- 24.Навіщо в розподілених сховищах використовують консистентне хешування?
- 25.Які проблеми з'являються, коли дані розшардовано між базами?
- 26.Як генерувати унікальні ID між шардами без центральної послідовності?
- 27.Що стверджує теорема CAP?
- 28.Що означає «узгодженість у кінцевому підсумку» (eventual consistency)?
- 29.Що таке лінеаризованість?
- 30.Чому в кворумній системі з N репліками читання й записи з
R + W > Nдають актуальне читання? - 31.Запит швидкий у розробці, але повільний у продакшені з тими самими індексами. Що перевірити першим?
- 32.Яку проблему можуть спричинити підготовлені інструкції з generic-планами?
- 33.Які пастки має PgBouncer у режимі пулу транзакцій?
- 34.Як безпечно заповнити новий стовпець у таблиці з 500 мільйонами рядків?
- 35.Як додати зовнішній ключ чи перевірку
NOT NULLдо великої таблиці, не блокуючи запис надовго? - 36.Як дешево рахувати унікальних відвідувачів на величезних даних, якщо досить приблизного результату?
- 37.Яка типова причина обмежувати
max_connectionsу PostgreSQL і використовувати пул, а не піднімати його до тисяч? - 38.Які компроміси між «спільними таблицями з
tenant_id» і «схемою чи базою на тенанта» в SaaS-застосунку? - 39.Що таке event sourcing?
- 40.Що таке CQRS у контексті зберігання даних?
- 41.Чим ризикований «подвійний запис» (записати в базу, потім опублікувати в Kafka) і яка альтернатива?
- 42.Як змоделювати в PostgreSQL часові ряди, як-от метрики щосекунди від 10 000 пристроїв?
- 43.Що таке single-table design у DynamoDB?
- 44.Чому ризиковано тримати важливі бізнес-дані лише в Redis?
- 45.Коли пошуковий рушій, як-от Elasticsearch чи OpenSearch, має сенс поруч із PostgreSQL?
- 46.Для чого використовують схему «зірка» (star schema)?
- 47.Як оновити мажорну версію PostgreSQL з мінімальним простоєм?
- 48.Чому самих логічних дампів (
pg_dump) недостатньо як стратегії резервного копіювання великої навантаженої бази? - 49.Які заходи захищають чутливі стовпці (наприклад, персональні дані) в базі?
- 50.Що допомагає діагностувати
pg_stat_activityпід час інциденту? - 51.Як команді підходити до вибору бази для нового продукту?
- 52.Яка роль
shared_buffersі кешу сторінок ОС у продуктивності PostgreSQL? - 53.Чому запит з
ORпо різних стовпцях може бути повільним і що допоможе? - 54.Що робить налаштування зберігання
fillfactorдля таблиці з частими оновленнями? - 55.Для чого розширена статистика (
CREATE STATISTICS)? - 56.Чому запит з
LIMITіноді повільніший за той самий запит безLIMIT? - 57.Для чого спроєктовано wide-column сховища, як-от Cassandra?
- 58.Коли графова база (як-от Neo4j) підходить краще за реляційну?
- 59.Як write concern і read concern у MongoDB пов'язані з узгодженістю?
- 60.Для чого використовують векторну базу (або розширення
pgvector)? - 61.Чому ризиковано впорядковувати події за часовими мітками, згенерованими базами на різних серверах?
- 62.Який головний ризик ланцюжків
ON DELETE CASCADEу великій схемі? - 63.Для
WHERE tenant_id = $1 AND created_at > $2 ORDER BY created_atякий порядок складеного індексу найкращий? - 64.Як PostgreSQL може на рівні бази заборонити два бронювання однієї кімнати, що перетинаються?
- 65.Коли корисне хеш-партиціонування?
- 66.Оформлення замовлення проходить через сервіси замовлень, платежів і доставки, кожен із власною базою. Як тримати їх узгодженими без розподілених транзакцій?
- 67.Довгі аналітичні запити на потоковій репліці скасовуються з «conflict with recovery». Чому?
- 68.Яка безпечна послідовність видалення стовпця в системі з поступовими деплоями?
- 69.Одразу після перемикання бази затримка стрибає, хоча новий основний сервер має те саме залізо. Яка ймовірна причина?
- 70.Користувач просить видалити всі його персональні дані (GDPR). Що часто випускають з уваги?
- 71.Чому міграції треба перевіряти на копії даних розміру продакшену?
- 72.Після деплою сотні нових інстансів застосунку одночасно відкривають з'єднання, і база перестає відповідати. Що допоможе?
- 73.Що таке TOAST у PostgreSQL?
- 74.Як тримати коректним денормалізоване значення на кшталт
posts.comments_countпри паралельних запитах? - 75.Чому унікальний індекс на
emailможе стати непридатним, коли додаєте м'яке видалення?