Я – Дата Инженер | Евгений Виндюков
4.53K subscribers
337 photos
34 videos
12 files
234 links
💵 Как стать Data Engineer
🗄 Смотри Roadmap в закрепе!
_____________________________
Автор @halltape
Все вопросы по рекламе @k_shredinger
Download Telegram
Собеседование

В понедельник я вывесил свое резюме на Хабре и на hh.ru.

ВАЖНО!
Я сделал буквально 8 откликов на hh. Среди них только один сработал на приглашение. Все остальное - мне писали сами! Не все так плохо!

Во вторник-среду мне начали писать в WhatsApp, на почту с предложениями о работе. Также меня рекомендовали рефералы из зеленого банка. Предложения 80% на BI и поровну на DA и DE.

За две недели у меня было где-то 4-5 собеседований. Все онлайн в районе 17:00-18:00. На некоторые предложения я отказывался сразу, где мне было неинтересно. Кстати однажды предлагали даже с другим вообще стеком - бывает и такое!

Где-то два собеса я бы назвал прям провальными. Не дно конечно, но половину вопросов я запорол.

Все собесы состоят из двух-трех-четырех этапов (Интервью с HR - Техническое интервью LiveCode - Тестовое задание - Soft Skills).
Крайне рекомендую планировать по одному интервью в день. Вам будет очень стрессво, тяжело и страшно! Поэтому не забывайте отдыхать, особенно если параллельно работаете!

Следующий пост про Теорию с собеседований
👍7
Собеседование. Теория

Перед тем, как вам дадут решать задачи, вас могут погонять по теории. Не факт, что спросят их все, но прокачаетесь знатно!

Вопросы по SQL:
1. Какие бывают оконные функции?
2. Как работают (INTERSECT, EXCEPT, Union, Union all)
3. Что такое Coalesce(), NVL(), IFNULL(), NVL2?
4. Как работает exists and not exists?
5. Как работают JOIN?
6. Что такое EXPLAIN? Что можно узнать из плана запроса?

Теория по базам данных:
1. 1НФ, 2НФ, 3НФ (что это и как выглядит) - ответ по ссылке
2. Как работает Map Reduce? - ответ по ссылке
3. Что такое индекс и зачем он нужен? Кластеризованный индекс и некластеризованный - ответ по ссылке
4. Алгоритмы соединения таблиц (hash join, merge sort, nested loop) - ответ по ссылке
4.1. Коллизии и способы их разрешения? - ответ по ссылке
5. Сложность алгоритмов (О большое) - ответ по ссылке и вторая часть
6. Что такое звезда, снежинка? Что такое data vault? - сами погуглите
7. Как хранятся данные в clickhouse и как это работает? - на сайте clickhouse
8. Транзакции (rollback, for share, for update, commit, deadlock). Ограничения в уровнях изоляций (Read uncommitted, Read committed, Repeatable Read, Serializable)
- ответ по ссылке

Очевидно, что вопросы могут быть и другие, но если вы глубоко разберетесь с темами написанными выше, то у вас будет мощное преимущество


Следующий пост про задачи с собеседований
🔥84👍3👎1
Собеседование. Задачи [часть 1] Live Coding

На собесах будет либо live coding:
1) Вам дают простую sql задачу и вы должны устно рассказать запрос, попутно усложняя условиями
2) В режиме "yandex.code" вы пишите запросы и потом вам дают новые условие для усложнения
В первом случае как правило все в рамках одного JOIN, одного подзапроса и группировки, но с намеком на каверзные места. Во втором случае могут быть оконные функции, вложенные запросы и так далее.

Либо дадут тестовое задание на дом:
1) Написать два-три запроса по нескольким таблицам (можно сделать за 20 минут)
2) Дадут три задачи на разные темы (займет до суток)

Итак задачи-примеры для live coding:
1. Напишите SQL-запрос, который выбирает и отображает имена и возраст всех сотрудников,
чей возраст выше среднего возраста всех сотрудников, из таблицы "employees_age".

2. Напишите SQL-запрос, который выбирает и отображает названия departments из таблицы "departments",
в которых работают сотрудники, имена которых начинаются на J в таблице "employees".

3. Дана таблица "products" с полями "id", "name" и "price". Напишите SQL-запрос, который удаляет все продукты, у которых цена ниже 10 долларов.

4. Напишите SQL-запрос, который выбирает и отображает имена и возраст трех самых старших сотрудников из таблицы "employees_age", а также добавляет новый столбец "age_interval", где указано "30-39" в случае если возраст от 30 до 39 включительно и 'others' во всех остальных случаях. Отсортировать по убыванию возраста.

5. Дана таблица "orders" с полями "id", "customer_id" и "total_amount". Напишите SQL-запрос, используя только оконные функции, который выбирает и отображает общую сумму заказов и средний чек заказа для каждого клиента из таблицы "orders"

Также рекомендую для практики сразу пробовать переписать запросы на pandas и отработать их в jupyter notebook.
👍53
В каких программах я пишу?

Когда JetBrains выдавали лицензии, я использовал исключительно их!
Но теперь из free осталось только PyCharm (тут пишем на питоне).

Поэтому на сегодняшний день мой стек такой:
1. VSCode (python)
2. PyCharm Comunity Edition (python)
3. DBeaver (пишем на SQL)
4. Jupiter Notebook (pandas, numpy)
5. Docker Desktop

Можно все писать в VSCode, но я столкнулся со странным отображением при работе с SQL с CROSS JOIN. Возможно плагин писал какой-то индус и он перестарался.. результат соединения там странноватый. Поэтому рекомендую DBeaver, либо если есть возможность, ставьте DataGrip - это топчик!

Следующий пост с ответами
❤‍🔥7
Ответы на задачи по live coding

Файл sql_create_data.txt для создания таблиц с данными

Файл sql_query.txt содержит условия задач и ответы на них в виде запросов.

Для быстрого создания таблиц и работы с SQL можете использовать этот онлайн ресурс. Только поставьте там диалект PostgreSQL.

Но я крайне рекомендую установить СУБД на комп локально и запускаться из DBeaver или DataGrip. Для PostgreSQL есть отдельный плагин для компа(MacOS), который сам подключается к ней. Нажали кнопку и субд сама ждет подключений.

Все написано на PostgreSQL.
⬇️⬇️⬇️
2
Собеседование. Задачи [часть 2.1]

Прикладываю пример тестового задания на дом. Можно сделать за минут 20-30.

Следующий пост с ответами на это задание
👍1👎1🔥1
Ответы на задачи по тестовым

Файл sql_create_part2.txt для создания таблиц с данными

Файл sql_key_part2.txt содержит ответы на них в виде запросов.

Все написано на PostgreSQL.
⬇️⬇️⬇️
👍1
Тестовое DE 21-02.pdf
117.8 KB
Собеседование. Задачи [часть 2.2]
Второе задание с витринами данных займет до двух дней.

Следующий пост с ответами
👍2
Keys_DE.zip
159.2 KB
Ответ на тестовое

Здесь в архиве лежат файлы с решением этого тестового задания. Достаточно объемная работа, поэтому уже архивом
👍2
❗️Всмысле нет опыта?

Вы еще скажите, что телепортом не умеете пользоваться! Минимум 2 года опыта!
😁12👍1😨1
Docker

Тем, кто будет изучать docker, рекомендую поставить docker desktop. Запуск контейнеров, удаление и прочее - прямо из коробки. Но все также можно зайти в сам bash контейнера через терминал. И все также можно управлять процессами через терминал. Просто у вас всегда по рукой десктоп версия, если нужно что-то быстро запустить-остановить.

⬇️⬇️⬇️
Отсюда скачать
👍5
PostgreSQL

Аналогично докеру, есть desktop версия postgresql. Тоже все просто. Установил и пользуешься. Можно конечно ставить все без него и порты всякие везде менять... но оно вам надо? Универсальное решение.

⬇️⬇️⬇️
Отсюда скачать
7❤‍🔥1
Кто такой этот Hadoop?

Очень коротко и по факту на пальцах. Про хеши, ноды и map reduce можете почитать сами в интернетах.

https://telegra.ph/Kto-takoj-ehtot-Hadoop-07-13
7🔥1
System Design на минималках!

На собеседовании по soft skills мне задали такой вопрос:
Сколько чашек кофе выпивают в Москве?

На этот вопрос я ответил почти сразу и это было так:
"В Москве 15 млн человек, из них 5 млн не пьют кофе. В среднем мы пьем по 3 кружки в день, стало быть 3 * 10 млн = 30 млн кружек"

Но меня попросили подумать и посчитать более детально. Показываю пример:
В Москве 15 млн человек. Допустим из них 5 млн человек действительно не пьют кофе (аллергия, пьют чай и прочее). Остается 10 млн человек. Но туда входят дети, старики и средний возраст. Очевидно каждый из них либо не пьет совсем, либо пьет редко.
Прикинем наши 10 млн:
5 млн взрослых (18 - 40) - 3 раза/день - 15 млн чашек
3 млн взрослых (41 - 59) - 2 раза/день - 6 млн чашек
1 млн стариков (60 - 80) - 1 раз в 4 дня = 0.25 раза/день - 250 000 чашек
1 млн детей - 0 раз/день - 0 чашек

15 + 6 + 0.25 = 21.25 млн чашек кофе
Получается, что так мы получаем более точное число и уже можем проследить категории людей, а также задуматься об адекватной периодичности и так далее.

Кстати в последнее время я смотрю на примеры собеседований по system Design с Валерием Бабушкиным. Мощный и очень харизматичный чувак, нетипичный для IT сферы)

P.S. Насколько такие задачи нужны - хз.. но поразгонять мозг в целом прикольно
👍9