Дата-инженерские заметки – Telegram
Дата-инженерские заметки
1.47K subscribers
70 photos
18 videos
7 files
55 links
Пытаюсь выжить в корпоративных реалиях, делюсь вопросами с дата-инженерских собеседований и ссылочками для подготовки к ним

Написать мне: @aylin_gee
Download Telegram
Сегодня мне рассказали, что мой знакомой с 0 месяцев опыта устроился разрабом на Senior'ский грейд, накрутив опыт в резюме.
Таски на Senior'ской позиции очевидно больше софтовые, найм Senior'ов дорогой, поэтому вполне могу представить, что задержаться на позиции он может надолго.

Представляю как прихожу к такому Senior'у за код-ревью.

Как вы относитесь к накрутке опыта в резюме?
😭6😁2
This media is not supported in your browser
VIEW IN TELEGRAM
🥰6😁4🔥2🏆1
➡️Вопросы с тех собеса в Иннотех(Т1)◀️

Что такое Data Lake?
Что такое DWH?
Расскажите про слои DWH?
Чем отличается моделирование по Кимбаллу и по Инмону?
Звезда и снежинка это Кимбалл или Инмон?
Чем звезда отличается от снежинки?
Чем отличаются факт таблицы и таблицы измерений?
Расскажите про Data Vault
Расскажите про Anchor Modeling
Зачем нужна нормализация?

Какие вида JOIN'ов знаете?
Расскажите про SELF JOIN.
Что знаете про агрегационные функции?
Можно ли использовать несколько агрегационных функций в select?
Можно ли использовать GROUP BY без агрегационной функции?
Как убрать дубликаты? То есть сделать так, чтобы таблица осталась без дубликатов, а не запрос вывел данные таблицы без дубликатов?

Что такое первичный ключ? Что такое foreign key? В каком разрезе формируют ключ? Что он должен в себе нести?
Что такое суррогатный ключ? Как его построить?

Как RANK() работает с NULL?

Расскажите про способы оптимизации SQL зпросов

#de_собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
110🔥4
YouTube последнее время частенько рекомендует мне подкасты с hr. И во всех обсуждают следующие два тезиса: кадровый голод и поколение z.

Первое буквально про нехватку высококвалифицированных низкооплачиваемых кадров. Кадровый голод и +-5 этапов отбора не могут существовать в одной плоскости.

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

Искренне верю, что мы никак не отличаемся от предыдущих поколений, изменились только условия, в которых мы существуем.
Миллениалами можно было управлять кнутом, потому что их удерживала часто сбыточная перспектива попасть в средний класс.
Большинству моего поколения атрибуты среднего класса не светят. Да и работа у белых воротничков как по мне стала сложнее, требует больше квалификаций и более узких знаний.

Мы зарабатываем не на квартиры, а на айс латте на кокосовом, отношение к работе оттого соответствующее.
19
Сегодня мне кажется, что этот канал вообще никто не читает, а сердечки мне ставят только мои друзья

Завтра я сижу на собесе с человеком, подписанным на этот канал, и отвечаю на вопросы из моих постов
132😁7👍4🍓1
Теперь буду дата-инженерить тут

Поиск работы не прекращается, он продолжается всегда, просто сейчас немного замедлится
121🔥8🏆8
Установила челу убунту - в резюме отмечу как опыт девопса
😁12108
Физические JOIN'ы

Мое незнание этой темы привело к 6-месячному куллдауну в Авито😭
Чтобы у вас не было также, давайте разберем ее подробнее.

😍Физический джойн — это алгоритм, который используется для выполнения операции объединения двух таблиц. Иными словами, это то, что происходит "под капотом", когда вы вызываете join в запросе

Основных алгоритмов всего 3: nested loops, merge join, hash join/hash match.

🩷Nested loops

Принцип работы уже понятен из названия: каждый элемент внешнего цикла сравнивается с каждым элементом внутреннего.
Алгоритмическая сложность - O(n**2)

For Each value in pile1
For Each value in pile2
If pile1.value = pile2.value
Return pile1.value, pile2.value


🩷Merge join

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

Если не считать сортировку, алгоритмическая сложность - O(n).

get first row R1 from   input 1
get first row R2 from input 2

while not at the end of either input
begin
if R1 joins with R2
begin
get next row R2 from input 2
return (R1, R2)
end
else if R1 < R2
get next row R1 from input 1
else
get next row R2 from input 2
end


🩷Hash join

Вычисляем хэш для каждого элемента левой таблицы, затем вычисляем хэш у элементов правой таблицы и проверяем его наличие в левой.
Алгоритмическая сложность - O(n).

// Build phase
FOR each row in BuildTable DO
Compute hash value for the join key
Insert row into HashTable based on hash value
END FOR

// Probe phase
FOR each row in ProbeTable DO
Compute hash value for the join key
IF hash value exists in HashTable THEN
Retrieve matching rows from HashTable
FOR each matching row DO
Combine rows from ProbeTable and BuildTable
Add the combined row to the result set
END FOR
END IF
END FOR

Рекомендую просмотреть псевдокод и реализовать все на своем языке💖
#de_обсуждение
Please open Telegram to view this post
VIEW IN TELEGRAM
29🏆4👍2🔥1
Друзья, не делайте так, иначе складывается ложное ощущение, что мемы нравятся больше:)
👍5
Во-первых, осень действительно лучшее время для поиска работы.
Во-вторых, мне нужны бусты☹️

У меня заволялись телеги hr'ок из МТС, Билайна, Мегафона, Яндекс Маркета и Сбера. Отправлю их забустившим канал.

Забустить тут⬇️
https://news.1rj.ru/str/boost/data_interviews

📍Написать hr'у напрямую всегда лучше отклика на хх, так как личное сообщение гарантирует просмотр резюме.

Также если хотите рефералку в Авито, отпишитесь в комментариях и я свяжусь с вами ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
10🍓4🔥3👍2
Физические JOIN'ы 2.0

Рекомендую сначала прочесть
этот пост.

После оценки алгоритмической сложности физических джойнов можно прийти к выводу, что выбор hash join является оптимальным решением, однако это далеко не так. Как и во многом в программировании, всегда есть space–time trade-off, и выбор оптимального джойна будет зависеть от входных данных.

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

🩷Условие соединения
Для equi-joins (равенство =, неравенство !=) и non-equi-joins (>, <, >=, <=). Для второго типа подойдет только nested loops.

💕Размер таблиц
Также, конечно, важен размер таблиц. Из-за необходимости многократно проходить по второй таблице в случае с nested loops будет велика цена I/O, в случае merge join будет дорогой сортировка, а в случае hash join может не хватить памяти для хеширования, и часть придется переносить на диск. Хешируется, кстати, меньшая таблица.

Если вы работаете с отсортированными данными, выиграет merge join, а с неотсортированными — hash join.

В случае, когда обе таблицы маленькие, эффективнее может быть nested loops, ведь с merge сортировка может вовсе не окупиться.

💓Индексы и дубликаты
В случае с неиндексированными данными лучше справятся merge и hash join, однако наличие большого количества дубликатов при выборе hash join может повлечь неправильное распределение данных и необходимость обработки коллизий.

📍У каждого джойна есть свои преимущества и ограничения, в посте перечислены лишь очевидные из них. Как было упомянуто выше, в очень редких случаях вам придется выбирать физический джойн самостоятельно, однако всё же полезно понимать их различия.

#de_обсуждение
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥5🥰3🍓1
Добавила теги для навигации на канале

#de_собеседование - вопросы с собеседований

#de_тестовое_livecoding - задачи с лайвкодинга и тестовых

#de_обсуждение - посты на популярные на собеседованиях темы
13
Есть идея сделать серию интервью с дата-инженерами из разных компаний бигтеха
Вам было бы интересно такое?
Anonymous Poll
98%
Да
2%
Нет
🔥53
🐝Костя, дата-инженер из Билайна

🟡Расскажи про свой путь в Билайн, где работал до и почему выбрал именно эту компанию?

Работал до этого в сбере дата-аналитиком. Начал проходить собеседования и Билайн предложил больше денег и удаленку. Тут все просто, я иду туда, где вижу выгоду.

🟡Какой стэк у тебя в команде и какими задачами ты занимаешься?

Стэк: scala, spark, airflow, oracle. Задачи - это обычное написание ETL для передачи данных из одних источников в другие.

🟡Из каких этапов состоял отбор и насколько показался сложным?

По количеству этапов, то их было вроде 2. Сначала с HR, после беседы с ней, она отправила мне тестовое и уже потом созвон с продактом, где немного погоняли по базовой теории SQL, python, spark. В целом собес не сложный. Самое сложно, что было во время прохождения, так это установить spark на личный ноутбук)

🟡Что нравится в компании и команде больше всего?

Нравится в компании, что они платят деньги и дают удаленку. Я не привязываюсь к командам и компаниям.

🟡Что хотелось бы улучшить?

Улучшить? Я даже не знаю. Как обычно, то это убрать говнокодеров, потому что тяжело потом разбираться в их логике.

🟡Ты порекомендовал бы другу своего работадателя?

Ну смотря что важно для моего друга. Работа не пыльная, сильно не трясут. Поделал утром что-то и можно идти развиваться. Если другу нравится прям плотно работать и создавать, то это точно не про Билайн (по крайней мере не моя команда)

📍P.S: в комментариях можете написать свои вопросы Косте, возможно он их увидит и ответит:)
Напишите также, каких вопросов вам не хватило, добавлю в следующем интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆8🔥65