Питання на співбесіді з баз даних (Middle) з відповідями

75 запитань для співбесіди з теми Бази даних (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.

Пройти цей тест
  1. 1.Яку структуру даних використовує індекс PostgreSQL за замовчуванням?
  2. 2.Є індекс на (last_name, first_name). Який запит може ефективно його використати?
  3. 3.Є індекс на created_at. Чому WHERE date(created_at) = '2026-11-01' може його ігнорувати?
  4. 4.Чому звичайний B-tree індекс не пришвидшить WHERE name LIKE '%son'?
  5. 5.Що таке частковий індекс?
  6. 6.Що таке покривний індекс і index-only scan?
  7. 7.Чому PostgreSQL може обрати послідовне сканування, хоча індекс є?
  8. 8.Що дає CREATE INDEX CONCURRENTLY?
  9. 9.Який тип індексу підходить для пошуку всередині стовпця jsonb, як-от WHERE data @> '{"tags": ["sale"]}'?
  10. 10.Чому випадкові UUID (v4) як первинні ключі можуть сповільнювати вставки у великі таблиці?
  11. 11.Чим EXPLAIN відрізняється від EXPLAIN ANALYZE?
  12. 12.У EXPLAIN ANALYZE планувальник очікував 10 рядків, а отримав 500 000. На що це вказує?
  13. 13.Які алгоритми з'єднання може використовувати PostgreSQL?
  14. 14.Чому SELECT COUNT(*) FROM big_table у PostgreSQL може бути повільним?
  15. 15.Як знайти запити, що в продакшені забирають найбільше сумарного часу?
  16. 16.Який рівень ізоляції транзакцій у PostgreSQL за замовчуванням?
  17. 17.Що таке «неповторюване читання» (non-repeatable read)?
  18. 18.Що таке «втрачене оновлення» і як йому запобігти?
  19. 19.Що робить SELECT ... FOR UPDATE?
  20. 20.Що таке взаємоблокування (deadlock) і що з ним робить PostgreSQL?
  21. 21.Як працює оптимістичне блокування?
  22. 22.Що робить INSERT ... ON CONFLICT (email) DO UPDATE?
  23. 23.Чим шкідливі довгі транзакції в PostgreSQL?
  24. 24.Що таке savepoint?
  25. 25.Що робить віконна функція на кшталт ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC)?
  26. 26.Чим RANK() відрізняється від DENSE_RANK()?
  27. 27.Як порахувати наростаючий підсумок платежів кожного користувача?
  28. 28.Для чого корисний CTE (WITH ...)?
  29. 29.Що дозволяє WITH RECURSIVE?
  30. 30.Чому WHERE id NOT IN (SELECT user_id FROM bans) може не повернути жодного рядка?
  31. 31.Що дозволяє LEFT JOIN LATERAL?
  32. 32.Для чого COUNT(*) FILTER (WHERE status = 'paid')?
  33. 33.Коли варто використовувати стовпці jsonb у PostgreSQL?
  34. 34.Що дає повнотекстовий пошук PostgreSQL порівняно з ILIKE '%word%'?
  35. 35.Що таке проблема N+1 запитів?
  36. 36.Чому keyset-пагінація (курсором) швидша за OFFSET на далеких сторінках?
  37. 37.Навіщо застосунки використовують пул з'єднань?
  38. 38.Як у сучасному PostgreSQL додати стовпець NOT NULL зі значенням за замовчуванням у величезну таблицю без довгих блокувань?
  39. 39.Як безпечно перейменувати стовпець, який використовує запущений застосунок?
  40. 40.Що таке матеріалізоване представлення?
  41. 41.Який поширений недолік бізнес-логіки в тригерах?
  42. 42.Що робить Row-Level Security (RLS) у PostgreSQL?
  43. 43.Де слід забезпечувати правило «унікальний email»?
  44. 44.Як ефективно вставити 10 000 рядків?
  45. 45.Що означає MVCC у PostgreSQL?
  46. 46.Що робить VACUUM?
  47. 47.Чому UPDATE у PostgreSQL записує цілу нову версію рядка?
  48. 48.Коли в MongoDB пов'язані дані варто вбудовувати в один документ, а не посилатися на них?
  49. 49.Що таке aggregation pipeline у MongoDB?
  50. 50.Чи підтримує MongoDB транзакції з кількома документами?
  51. 51.Який тип даних Redis підходить для таблиці лідерів?
  52. 52.Що найскладніше в кешуванні результатів з бази?
  53. 53.Що станеться, коли Redis досягне ліміту maxmemory?
  54. 54.Яка ключова відмінність у масштабуванні SQL і NoSQL, як її зазвичай описують?
  55. 55.Що таке третя нормальна форма (3НФ), якщо коротко?
  56. 56.Як зберігати зміни тарифів підписки користувача, щоб бачити історію?
  57. 57.Що таке поліморфний зв'язок і в чому його проблема?
  58. 58.Як зазвичай зберігати теги статей у реляційній базі?
  59. 59.Навіщо зберігати ціну на момент покупки в замовленні, а не завжди з'єднувати з поточною ціною товару?
  60. 60.Для чого використовують репліку для читання?
  61. 61.Що таке відновлення на момент часу (PITR)?
  62. 62.Чому ALTER TABLE на навантаженій таблиці може заморозити весь застосунок?
  63. 63.Для чого потрібен seed бази даних?
  64. 64.Чому інтеграційні тести зі справжньою базою (наприклад, у Docker) часто кращі за мокання бази?
  65. 65.Що таке «фантомне читання» (phantom read)?
  66. 66.Що має робити застосунок, використовуючи рівень ізоляції Serializable у PostgreSQL?
  67. 67.Що поверне SELECT DISTINCT ON (user_id) * FROM orders ORDER BY user_id, created_at DESC?
  68. 68.Що додає до результату GROUP BY ROLLUP (country, city)?
  69. 69.Що таке генерований стовпець?
  70. 70.Які компроміси типу ENUM у PostgreSQL для стовпця статусу?
  71. 71.Чому ORDER BY created_at DESC LIMIT 10 може бути дуже швидким на величезній таблиці?
  72. 72.Що таке «Bitmap Heap Scan» у плані EXPLAIN?
  73. 73.Від чого захищає statement_timeout?
  74. 74.Чому INCR у Redis добре підходить для простого обмежувача частоти запитів?
  75. 75.Що робить зовнішній ключ з ON DELETE RESTRICT (або NO ACTION за замовчуванням), коли видаляють рядок, на який посилаються?