Data Engineer: учебное пособие для прохождения собеседования

Обложка поста

Перевод статьи «The Interview Study Guide For Data EngineersThe Interview Study Guide For Data Engineers»

Вадим Сычёв

Собеседование на любую техническую должность, как правило, требует подготовки и занимает немало времени. И не всегда понятно, что нужно конкретно изучать инженеру данных. Некоторые позиции требуют Hadoop, другие — SQL, а третьи — понимания статистики.

В материале собрано много ресурсов для подготовки, благодаря которым можно пройти собеседования в крупных технологических компаниях.

Вы также можете использовать чек-лист, который поможет отслеживать прогресс и ничего не забыть.

SQL

Почти неизбежно, что вам, как инженеру данных, зададут вопросы по SQL.

Типичные вопросы:

  • объединение с фильтрацией;
  • последовательные объединения;
  • формирование подзапросов.

 

Базовые задачи на знание SQL

Эти первые несколько проблем помогут вам на разных концепциях понять, какой у вас уровень.

Комплексные запросы

Задача: В городе X построен новый стадион. Каждый день его посещает много людей, и статистика сохраняется в виде следующих столбцов: id, дата посещения, количество людей.

Напишите запрос, чтобы отобразить записи, которые имеют 3 или более последовательных строк и количество человек более 100 (включительно).

Задача: В таблице находится список сотрудников.

У каждого сотрудника есть идентификатор, а также столбец для идентификатора отдела. Напишите SQL-запрос, чтобы найти сотрудников, которые получают три самые высокие зарплаты в каждом отделе.

Дополнительно: Таблица содержит все отделы компании:

Для приведённых выше таблиц ваш запрос SQL должен возвращать следующие строки (порядок строк не имеет значения).

Задача: Для заданной таблицы напишите SQL-запрос, чтобы найти идентификаторы всех дат с более высокой температурой по сравнению с предыдущими датами.

Например, верните следующие идентификаторы для приведённой выше таблицы:

Aggregation

Задача: таблица Trips содержит все поездки такси. Каждая поездка имеет уникальный идентификатор, в то время как Client_Id и Driver_Id являются внешними ключами для Users Id в таблицеUsers. Статус является типом ENUM («завершено», «отменено водителем», «отменено клиентом»).

Напишите SQL запрос, чтобы найти число отменённых заявок среди незаблокированных пользователей с 1 по 3 октября 2013 года.

Расширенные объединения (Advanced Join)

Задача: Мэри — учитель в средней школе, и у неё есть таблица seat, в которой записаны имена учеников с их соответствующими местами.

Столбец ID является неизменным. Мэри хочет поменять местами соседствующих студентов.

Можете ли вы написать запрос SQL для вывода результата Мэри?

Простые объединения (Simple Joins)

Задача: Кетти даёт Еве задание создать отчёт, содержащий три столбца: Имя, Оценка и Отметка. Кетти не нужны имена тех учеников, которые получили оценку ниже 8. Отчёт должен быть составлен в порядке убывания по классам — более высокие оценки вводятся первыми. Если у двух и более учеников одинаковые оценки (8–10), упорядочите их по алфавиту. Наконец, если оценка ниже 8, используйте «NULL» в качестве имени и перечислите их по оценкам в порядке убывания. Если у двух и более учеников одинаковые оценки (1–7), упорядочите учеников по их оценкам в порядке возрастания.

Напишите запрос, чтобы помочь Еве.

Ранжирование количества строк и аналитические функции

Задача: написать запрос SQL, чтобы получить n-ую самую высокую зарплату из таблицы Employee:

Сложные запросы Self Join

Задача: Приведена таблица, содержащая два столбца: X и Y.

Две пары (X 1 , Y 1) и (X 2 , Y 2) называются симметричными парами, если X 1 = Y 2 и X 2 = Y 1.

Напишите запрос для вывода всех таких симметричных пар в порядке возрастания величины X.

Дополнительно

Если вам нужно больше задач SQL:

Вы также можете посмотреть обучающие видео (на английском языке):

Решение SQL задач после просмотра обучающих видео

Как только вы закончите смотреть видео по SQL, посмотрите задачи ниже. Если остались пробелы, запишите темы, в которых вы ещё слабы, и больше работайте над ними.

Базы данных, ETL и хранилища данных

Чтобы разобраться с вопросами по проектированию баз данных, ETL и хранилищ данных, посмотрите несколько видеороликов. А также рассмотрите несколько концепций баз данных, которые вы могли бы попробовать разработать самостоятельно.

Видео:

Самостоятельная практика и возникающие проблемы

Перечислим несколько бизнес-систем, которые вы можете попытаться разработать. Сначала рекомендуется создать реляционную базу данных, а затем подумать о том, как бы вы разработали ETL и DW, которые полагаются на неё:

  • Приложение для знакомств;
  • Прокат велосипедов;
  • Приложения Music Streaming;
  • Сайта поиска работы;
  • Веб-сайта Udemy.

Эти несколько вариантов помогут вам получить более чёткое представление о том, что вы можете практиковать в моделировании и проектировании. Прежде чем начинать, подумайте о том, как пользователи взаимодействуют с этими приложениями.

Задачи по программированию

Инженеры данных обычно используют несколько языков, и Python среди них наиболее распространённый. Если требуется много работать с Hadoop, то хорошо подойдёт Java, а если вы работаете в Windows, то также Powershell.

Обычно вопросы бывают двух типов: прикладные и по алгоритмам и структурам данных.

Алгоритмы и структуры данных

Задачи перед подготовкой:

Теперь, когда вы решили эти задачи, давайте начнём рассмотрение других концепций по следующим видео.

Структуры данных

Big O

Введение в анализ сложности алгоритмов

Ещё варианты прохождения интервью:

Задачи после изучения

Как только вы закончили с видео, попробуйте свои силы в решении задач. Следите за тем, насколько уверенно вы себя чувствовали, работая над ними.

Если вы всё ещё чувствуете, что нуждаетесь в помощи, подумайте о прохождении курса по алгоритмам и структурам данных.

Задачи оперативного программирования

Будет полезно знать, как использовать массивы и словари. Вот некоторые задачи, которые отлично подходят для подготовки.

Проектирование систем

Вопросы по проектированию систем встречаются не так часто. Тем не менее, лучше быть к ним готовым.

Потратив некоторое время на просмотр видео, вы будете готовы ко всему, что интервьюер может попросить вас сделать:

Курсы

Если вы разобрали все задачи и посмотрели видеоролики, но по-прежнему не чувствуете уверенности, подумайте о прохождении курсов. Они, скорее всего, будут охватывать те же понятия, что и видео, однако полезно услышать одну и ту же информацию из нескольких источников.

Англоязычные курсы на Udemy:

Заключение

Надеемся, что этот обзор поможет вам подготовиться к собеседованию на должность Data Engineer. Если вам нужен контрольный список, вы можете найти его здесь.

Хинт для программистов: если зарегистрироваться на соревнования Huawei Honor Cup, бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании. Перейти к регистрации.