Data Engineer: учебное пособие для прохождения собеседования
Детальный план по обучению профессии Data Engineer. В нём вы найдёте задачи разного уровня сложности, видеоуроки и курсы.
42К открытий46К показов
Собеседование на любую техническую должность, как правило, требует подготовки и занимает немало времени. И не всегда понятно, что нужно конкретно изучать инженеру данных. Некоторые позиции требуют 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:
Вы также можете посмотреть обучающие видео (на английском языке):
- 6 частых вопросов по SQL запросам на собеседовании;
- Изучение ROW_NUMBER и аналитических функций;
- Усовершенствованная реализация аналитических функций по расчёту промежуточного итога;
- Расширенная реализация аналитических функций Median;
- Написание основных запросов. SQL Server.
Решение SQL задач после просмотра обучающих видео
Как только вы закончите смотреть видео по SQL, посмотрите задачи ниже. Если остались пробелы, запишите темы, в которых вы ещё слабы, и больше работайте над ними.
- Структуры данных: бинарные деревья;
- Большие страны;
- Обмен мест;
- Станция наблюдения за погодой 18;
- Задача по кодированию;
- Вывод простых чисел;
- Вопросы по SQL при собеседовании: 3 упражнения для технического интервью.
Базы данных, ETL и хранилища данных
Чтобы разобраться с вопросами по проектированию баз данных, ETL и хранилищ данных, посмотрите несколько видеороликов. А также рассмотрите несколько концепций баз данных, которые вы могли бы попробовать разработать самостоятельно.
Видео:
- Проектирование традиционной реляционной базы данных;
- Проектирование хранилища данных;
- Рекомендации по SQL – Разработка ETL.
Самостоятельная практика и возникающие проблемы
Перечислим несколько бизнес-систем, которые вы можете попытаться разработать. Сначала рекомендуется создать реляционную базу данных, а затем подумать о том, как бы вы разработали ETL и DW, которые полагаются на неё:
- Приложение для знакомств;
- Прокат велосипедов;
- Приложения Music Streaming;
- Сайта поиска работы;
- Веб-сайта Udemy.
Эти несколько вариантов помогут вам получить более чёткое представление о том, что вы можете практиковать в моделировании и проектировании. Прежде чем начинать, подумайте о том, как пользователи взаимодействуют с этими приложениями.
Задачи по программированию
Инженеры данных обычно используют несколько языков, и Python среди них наиболее распространённый. Если требуется много работать с Hadoop, то хорошо подойдёт Java, а если вы работаете в Windows, то также Powershell.
Обычно вопросы бывают двух типов: прикладные и по алгоритмам и структурам данных.
Алгоритмы и структуры данных
Задачи перед подготовкой:
- Сумма чётных чисел после выполнения запросов;
- Возвращение робота в исходную точку;
- N-повторный элемент в массиве размера 2N;
- Сбалансированное бинарное дерево;
- Самая длинная подстрока без повторяющихся символов;
- Удалить N-й узел из конца списка;
- Объединение k отсортированных списков;
- Следующая перестановка (next_permutation).
Теперь, когда вы решили эти задачи, давайте начнём рассмотрение других концепций по следующим видео.
Структуры данных
- Структуры данных и алгоритмы – Что такое структуры данных?
- Структуры данных: связные списки.
- Структуры данных: деревья.
- Структуры данных: кучи.
- Структуры данных: хеш-таблицы.
- Структуры данных: стеки и очереди.
- Структуры данных: ускоренный курс по информатике.
- Структуры данных: Trie.
Big O
Введение в анализ сложности алгоритмов
Ещё варианты прохождения интервью:
- Вопрос на собеседовании Amazon Coding – проблема рекурсивной лестницы;
- Google Coding Interview — проблема универсального дерева значений;
- Google Coding Interview: первый повторяющийся символ.
Задачи после изучения
Как только вы закончили с видео, попробуйте свои силы в решении задач. Следите за тем, насколько уверенно вы себя чувствовали, работая над ними.
- Bigger Is Greater (largeIsGreater);
- Преобразование зигзага. (ZigZag Conversion);
- Реверсирование цифр целого числа;
- Combination Sum II;
- Умножение строк;
- Массив Ларри;
- Короткий палиндром;
- Валидное число.
Если вы всё ещё чувствуете, что нуждаетесь в помощи, подумайте о прохождении курса по алгоритмам и структурам данных.
Задачи оперативного программирования
Будет полезно знать, как использовать массивы и словари. Вот некоторые задачи, которые отлично подходят для подготовки.
- Задача с кенгуру;
- Побить рекорды;
- Найти строку;
- itertools.permutations ();
- Без понятия!
- День программиста;
- Таблица лидеров;
- Порядок слов;
- Шерлок Холмс и Квадраты чисел;
- Выровнять массив (функция
equalize Array
); - Яблоки и апельсины;
- Python. Больше практики.
Проектирование систем
Вопросы по проектированию систем встречаются не так часто. Тем не менее, лучше быть к ним готовым.
Потратив некоторое время на просмотр видео, вы будете готовы ко всему, что интервьюер может попросить вас сделать:
Курсы
Если вы разобрали все задачи и посмотрели видеоролики, но по-прежнему не чувствуете уверенности, подумайте о прохождении курсов. Они, скорее всего, будут охватывать те же понятия, что и видео, однако полезно услышать одну и ту же информацию из нескольких источников.
Англоязычные курсы на Udemy:
- Bootcamp «Интервью программиста»: алгоритмы + структуры данных.
- Концепции хранилища данных: от базовых до расширенных.
- Структуры данных и алгоритмы Bootcamp.
Заключение
Надеемся, что этот обзор поможет вам подготовиться к собеседованию на должность Data Engineer. Если вам нужен контрольный список, вы можете найти его здесь.
42К открытий46К показов