Базы данных и системы обработки данных
Подтемы:
В чем отличия между нереляционными (NoSQL) и реляционными (SQL) базами данных, и для каких целей они обычно применяются?
Нереляционные (NoSQL) и реляционные (SQL) базы данных отличаются по структуре данных, модели запросов и способу обработки информации:
Реляционные базы данных (SQL):
-
Организованы в виде таблиц с жесткими схемами и строгими правилами отношений между таблицами.
-
Для доступа и обработки данных используется язык структурированных запросов (SQL).
-
Подходят для приложений с жесткими требованиями к структуре данных и целостности, таких как финансовые системы, системы управления заказами и CRM.
Нереляционные базы данных (NoSQL):
-
Основаны на различных моделях данных, таких как документы, ключ-значение, столбцы или графы.
-
Обычно не имеют жестких схем и позволяют гибко хранить разнородные данные.
-
Предоставляют горизонтальное масштабирование и высокую производительность при работе с большими объемами данных.
-
Часто используются для хранения и обработки полуструктурированных или неструктурированных данных, таких как веб-логи, социальные сети, аналитика больших данных и системы интернета вещей (IoT).
Ссылки для изучения
Указана база PosgreSQL. Вы ее самостоятельно разворачивали, в контейнере?
Опишите свой реальный опыт развёртывания PostgreSQL. Если использовали Docker, расскажите об образе, настройках подключения, постоянном томе для данных и запуске через Docker CLI или Compose. Если самостоятельно базу не разворачивали, укажите это прямо.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Java мок-интервью: коллекции, JVM и observability · 52:30–53:30Мок-собеседование · Ответ кандидата
Кандидат рассказывает, что поднимал PostgreSQL в Testcontainers для тестов и использовал временный контейнер.
Как получить план выполнения запроса (EXPLAIN/EXPLAIN ANALYZE)?
Чтобы получить план выполнения запроса в PostgreSQL, вы можете использовать команду EXPLAIN перед вашим SQL-запросом. Если вы хотите выполнить запрос и получить его план выполнения, используйте команду EXPLAIN ANALYZE.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Мок-собеседование Junior Python-разработчика · 1:42:20–1:46:50Мок-собеседование · Ответ кандидата
Кандидат разбирает медленный PostgreSQL-запрос через план выполнения и EXPLAIN ANALYZE, чтобы увидеть фактические операции и их стоимость.
Что представляет собой Apache Spark и какие цели он решает?
Apache Spark - это распределенная вычислительная система, предназначенная для обработки и анализа больших объемов данных. Он предоставляет высокоуровневый API для работы с данными, включая операции над данными в памяти, потоковую обработку, машинное обучение и анализ графов. Spark использует концепцию Resilient Distributed Datasets (RDD), которая позволяет выполнить операции над данными в распределенной среде с высокой отказоустойчивостью.
Цели Apache Spark:
-
Ускорение обработки данных: Spark обеспечивает высокую производительность за счет выполнения операций в памяти и оптимизации планирования выполнения задач.
-
Обработка больших данных: Spark позволяет обрабатывать данные, которые не помещаются в память одного узла, путем распределения их на кластер узлов.
-
Многозадачность и гибкость: Spark поддерживает широкий спектр задач обработки данных, включая аналитику, машинное обучение, потоковую обработку и анализ графов.
-
Упрощение разработки: Spark предоставляет высокоуровневые API на разных языках программирования, таких как Scala, Java, Python и R, что облегчает разработку и развертывание приложений обработки данных.
Ссылки для изучения
Почему join двух таблиц может неожиданно исчерпать память?
Главная причина неожиданного роста join состоит в неуникальных ключах. Если одному ключу соответствуют m строк слева и n справа, результат содержит m*n строк. До join проверяют уникальность, распределение multiplicity и оценивают размер результата. Помогают фильтрация и выбор колонок до соединения, подходящие типы, индексы, партиционирование и выполнение join в СУБД. Chunking снижает пиковую память, но не спасает от логически огромного результата. После join проверяют число строк и гранулярность.
Ссылки для изучения
Чем SQLAlchemy Core отличается от ORM?
SQLAlchemy Core работает с Engine, соединениями, таблицами и expression language и возвращает строки результата. ORM связывает таблицы с Python-классами, управляет identity map, отношениями и unit of work через Session. Оба подхода используют parameter binding и общую SQL-базу; ORM не отменяет знания транзакций и запросов. Core удобен для явных bulk-запросов и SQL-подобной логики, ORM для доменных объектов и связей. Их можно сочетать в одной транзакции, контролируя границы Session.
Ссылки для изучения







