Python Junior a
Ниже — краткий, но очень ценный блок: что ИМЕННО учитывать на SQL-собеседовании, помимо правильного синтаксиса. Это то, на чём реально валят кандидатов, даже если запрос написан верно.
Ответы
Отличный запрос 👍 Ниже — **краткий, но очень ценный блок: что ИМЕННО учитывать на SQL-собеседовании**, помимо правильного синтаксиса. Это то, на чём **реально валят кандидатов**, даже если запрос написан верно. --- # 🧠 PostgreSQL — что учитывать на собеседовании (очень важно) ## 🔹 1. Проговаривай ход мысли (ВСЕГДА) Интервьюеру важнее **как ты думаешь**, а не скорость печати. ❌ Плохо: > *(молча пишет запрос)* ✅ Хорошо: > «Сначала отфильтруем данные, потом сгруппируем, после этого применим агрегат…» --- ## 🔹 2. Всегда уточняй формулировку задачи Перед написанием запроса: * нужно ли учитывать `NULL`? * нужны ли дубликаты? * нужны ли пользователи **без** записей? * важна ли производительность? Пример: > «Нужно показывать пользователей без заказов или только с заказами?» --- ## 🔹 3. NULL — главный источник ошибок Интервьюеры **почти всегда ждут**, что ты упомянешь это. Помни: ```sql = NULL -- ❌ IS NULL -- ✅ COUNT(col) -- не считает NULL ``` Хорошая фраза: > «Если поле может быть NULL, это нужно обработать через COALESCE» --- ## 🔹 4. WHERE vs HAVING — классическая ловушка Если есть агрегаты: * `WHERE` → до `GROUP BY` * `HAVING` → после Интервьюер ждёт, что ты **осознанно выберешь**. --- ## 🔹 5. JOIN: ON ≠ WHERE Очень частый вопрос. ```sql LEFT JOIN orders o ON ... WHERE o.id IS NOT NULL ``` 👉 превращает `LEFT JOIN` в `INNER JOIN` Хорошая фраза: > «Фильтрацию, влияющую на JOIN, нужно делать в ON» --- ## 🔹 6. EXISTS vs IN — нужно хотя бы упомянуть Не обязательно писать идеально оптимально, но: > «Для проверки наличия я бы предпочёл EXISTS, он лучше масштабируется» Это **плюс к оценке**. --- ## 🔹 7. GROUP BY: что можно писать, а что нельзя Нельзя: ```sql SELECT name, COUNT(*) FROM users GROUP BY city; ``` Можно: * агрегаты * поля из `GROUP BY` Фраза: > «Все неагрегированные поля должны быть в GROUP BY» --- ## 🔹 8. Оконные функции — покажи, что понимаешь разницу Важно **словами**: > «GROUP BY схлопывает строки, а оконные функции оставляют их» Если ты это сказал — ты уже **выше среднего уровня**. --- ## 🔹 9. Производительность — без фанатизма Не нужно: * придумывать индексы без запроса * оптимизировать микросекунды Но нужно: > «На больших таблицах здесь может быть Seq Scan, я бы проверил EXPLAIN» --- ## 🔹 10. CTE — не панацея Многие ошибаются, думая что `WITH` всегда ускоряет. Правильно: > «CTE улучшает читаемость, но в PostgreSQL может быть оптимизационным барьером» --- ## 🔹 11. UNION vs UNION ALL — всегда выбор осознанный Фраза: > «Если дубликаты допустимы, лучше UNION ALL — он быстрее» --- ## 🔹 12. RETURNING — приятный бонус Если используешь PostgreSQL: > «Я бы использовал RETURNING, чтобы сразу получить вставленные данные» Показывает знание **специфики СУБД**. --- ## 🔹 13. Ошибки — это нормально Если запутался: > «Я сейчас исправлю, логика такая-то…» ❌ Плохо — молчать ✅ Хорошо — думать вслух --- ## 🔹 14. Лучше простой правильный запрос, чем “умный” ❗ Интервьюер **не ждёт идеального SQL**. Он ждёт: * корректность * читаемость * понимание --- ## 🔹 15. Золотая формула ответа На любой SQL-вопрос: > **Что нужно получить → Как → Почему так** Если ты это соблюдаешь — ты выглядишь **уверенно и профессионально**. --- # 🎯 Итог Если ты: * проговариваешь мысли * учитываешь NULL * понимаешь JOIN / GROUP BY / оконные функции * не паникуешь ➡️ **ты уже конкурентоспособен на middle-уровень**. --- Если хочешь, следующим шагом могу: * 🔥 провести **симуляцию SQL-собеседования** * 🔥 дать **типичные вопросы интервьюеров + правильные формулировки** * 🔥 разобрать **частые фейлы кандидатов** * 🔥 подготовить **чеклист “что сказать вслух”** Скажи, **какой формат дальше** и **на какой уровень** 🚀