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