Айти-Пингвин | Дата инженер
1.96K subscribers
54 photos
14 videos
2 files
75 links
Канал главного разработчика Data Lake крупного банка.
База знаний для джунов, разбор собесов, задачи (jun/mid/sen) с решениями, полезные материалы, обзоры технологий и архитектур.

По вопросам и менторству писать @it_pengwin
Download Telegram
Обзор собеседования

Должность: Data Engineer
Компания: EmployCity
Тип собеса: #тех_собес
Этапы: 1 техничка > тестовое задание, созвон и обсуждение решения > знакомство с командой
Грейд: #middle
Вилка: 3-4к евро плюс оплата перелета и 700 евро на проживание каждый месяц
Вакансия: https://hh.ru/vacancy/128579553
Итог собеса: 1 этап прошел

Краткий обзор собеседования:
Вопросы по CDC:
• Как работал со связкой Kafka+CDC?
• Как забирали историчные данные с источника CDC?

Вопросы по dbt:
• Какие материализациии использовались чаще всего?
• Какие стратегии иксрементного обновления использовал?

Вопросы:
• Как запускали даги в Dagster?
• Что использовали для контроля зависимостей в проекте?


Новый обзор подъехал. Как вам?
По мне так зп для Кипра небольшая 🤔

it пингвин | data engineer 🐧

#собеседование #подписчик
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥8👍411
This media is not supported in your browser
VIEW IN TELEGRAM
Коллектив, тимбилдинги и корпораты - это реально важно 🙌

В одной из моих первых IT-компаний был оч крутой коллектив.
У нас имелся свой маленький закрытый чатик с личными мемасами и внутренними шутками. Мы могли поугарать над заказчиками, поболтать на рандомные темы или просто сидеть на созвоне часами, параллельно работая. А тусовки были вообще огонь..💔
Please open Telegram to view this post
VIEW IN TELEGRAM
196👍4🔥3🤣2
Очередные вопросы по SQL с собеседования

Итак, дана таблица с одним полем flag


CREATE TABLE sandbox.test (flag integer);

INSERT INTO sandbox.test (flag) VALUES
(0), (1), (2), (3), (4), (5), (null), (null);



Давайте закрепим популярные вопросы про count

• select count(*) from sandbox.test;
-- Результат 8
• select count(1) from sandbox.test;
-- Результат 8
• select count(0) from sandbox.test;
-- Результат 8
• select count(null) from sandbox.test;
-- Результат 0
• select count(flag) from sandbox.test;
-- Результат 6
• select count('flag') from sandbox.test;
-- Результат 8

Объяснение почему так:

• COUNT(*) считает количество строк в таблице

• COUNT(1) и COUNT(0) - то же самое: 1 и 0 здесь просто константы, они не NULL, поэтому каждая строка учитывается

• COUNT(flag) - считает только не NULL значения в колонке flag.

• COUNT(NULL) - всегда 0, потому что NULL - это отсутствие значения. Еще раз, COUNT никогда не возвращает null


Вопросы про count популярны на собесах. А вот про функцию sum более редкие. И меня один кейс удивил..

• select sum(*) from sandbox.test;
-- Ошибка!
• select sum(flag) from sandbox.test;
-- Результат 15
• select sum(0) from sandbox.test;
-- Результат 0
• select sum(1) from sandbox.test;
-- Результат 8
• select sum(2) from sandbox.test;
-- Результат 16
• select sum(4) from sandbox.test;
-- Результат 32

Почему SUM(*) - ошибка?
Потому что * означает «все колонки». А как сложить строку с числом? Или дату с текстом? База данных справедливо говорит: «Я не умею складывать всё подряд, дай конкретную колонку».

SUM(flag) = 15 - логично
Складываем числа: 0+1+2+3+4+5 = 15. NULL игнорируются (не участвуют в сумме).

А теперь самое неочевидное - SUM(1), SUM(2), SUM(4)


Многие думают: SUM(1) должен вернуть 1. Но нет!

Давайте представим, как база данных выполняет этот запрос:

Берем таблицу из 8 строк

Для каждой строки вычисляем выражение в скобках:

Для SUM(1) → значение 1 в каждой строке

Для SUM(2) → значение 2 в каждой строке

Для SUM(4) → значение 4 в каждой строке

Складываем все эти значения

Получается:
SUM(0) = 0+0+0+0+0+0+0+0 = 0 (тут логично)

SUM(1) = 1+1+1+1+1+1+1+1 = 8 (количество строк)

SUM(2) = 2+2+2+2+2+2+2+2 = 16 (2 × 8 строк)

SUM(4) = 4+4+4+4+4+4+4+4 = 32 (4 × 8 строк)


SUM(константа) работает как умножение константы на количество строк в выборке.

И да, количество полей в таблице никак не влияет на результат. Даже если в таблице 100 колонок, SUM(2) всё равно вернет 16. Главное - сколько строк попало в выборку.

Честно говоря, я такие вопросы на собесах оч не люблю. Какой от них практический смысл я хз. Кто хоть раз писал count(0) или sum(4). Но раз такое часто спрашивают на собесах, то нужно быть готовым 🤝

Интересно, сколько людей ответили правильно на всё?
Ставь если на все ответил правильно
И ставь если допустил хотя б одну ошибку.

it пингвин | data engineer 🐧
Please open Telegram to view this post
VIEW IN TELEGRAM
45617👍10🔥964
Вопросы с hr скрининга

1️⃣ 1 + NULL в SQL = NULL
2️⃣ Типы физических джоинов = Nested Loop, Hash, Merge, Broadcast (в Spark)
3️⃣ Какими оконными функциями можно получить номер строки = ROW_NUMBER(), RANK(), DENSE_RANK()
4️⃣ Может ли быть число ключом словаря = да
5️⃣ Может ли быть строка ключом словаря = да
6️⃣ Может ли быть список ключом словаря = нет
7️⃣Какое максимально и минимальное число драйверов может быть в спарк = min/max =1 (в одном Spark-приложении)

it пингвин | data engineer 🐧
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍3610🔥532💅2
Программа со скидкой до 5 марта (напоминаю я делал серию обзорных постов курса)
👍5🔥11
Мне тут прилетел подгончик от моего топового менти

У нас была цель - в сжатые сроки устроиться на работу.
Менти всё это время жёстко гикал, и в итоге мы достигли результата:
спустя два месяца после начала занятий он уже вышел на свою первую работу в DE

Испытательный срок тоже успешно пройден - на работе им довольны.

Параллельно он начинал вести канал, но из-за высокой нагрузки пришлось поставить на паузу. Скоро вернётся к постам.

Его тэгэшчка 🔜 DROP TABLE

И вот мне прилетел обещанный тречок
(менти вообще битмейкер и продюсировал популярных исполнителей) ⬇️😮‍💨

*трек рофельный и сделан на скорую руку - думаю, это всем понятно 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1342🤣2👍1😱1💅11
Вопрос

В конце каждого месяца загрузка многих таблиц замедляется. В чем причина замедления?
При условии, что общее количество ETL потоков в БД не увеличивается.

Причину замедления в своем хранилище напишу в комментах и как ее решили
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1541
Лучше пост сделаю

В целом вот правильный ответ - https://t.me/data_penguin/229?comment=4524
Точнее так - это проблема была в моем dwh. Но там еще интересные варианты написали 👍

Просто это вроде как очевидно, но я об это не задумывался пока не столкнулся с замедлением.

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

Например, по одной таблице раньше за один день прилетало 50к строк. И за месяц было ~1,5 млн строк (это нормальный размер для партиции). А теперь прилетает ~1млн строк в день. Партиции к концу месяца уже десятки миллионов строк.
Конечно выбор данных из них всё медленнее и медленнее. Хотя по классике в скриптах чаще всего фильтр стоит по дню и нам не нужно просматривать целый месяц.

В общем, решение:
Там где это можно и не поломает запросы - аккуратно переходим на недельные партиции. Запросы стали бегать быстрее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍218🔥211
Бесплатная реклама для своей компании))

Если часто покупаете в Пятерочке рекомендую оформить апельсиновую карту (коллаба с Альфа банком) + сервис пакет (вроде 130 рублей в месяц стоит).

Реально много баллов кэшбэком приходит. Вчера потратил 3500 - вернулось баллами ~600 рублей (10 апельсинок = 1 рубль). + Допом кэшбэк на банковскую карту приходит. Сервис пакет дает много категорий с повышенным кэшбэком.

Доставкой еще приятнее пользоваться, больше апельсинок и еще какие-то доп акции.
В общем, рекомендую 👍

Прикольно когда нравится продукт, в котором работаешь 💅
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥9😁7💅322
Анализ рынка IT

Напишу свои мысли о ситуации на рынке DE в 2026. Просто мое мнение. Можно сказать сплетни 💅

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

В марте стало лучше, предложений стало гораздо больше. У моих менти сейчас по несколько собесов в неделю. Рекрутеры почти каждый день пишут. Но опять же в прошлом году было предложений больше. Надеюсь рыночек будет активный до мая🤞

ЗПки в среднем тоже стали меньше. Раньше если писал аутстафф с предложением устроиться на проект Сбера, то предлагали вилки от 300+ легко. Сейчас очень часто пишут зп 220, 250, 270. Торгуются не охотно.
Имхо в прошлом году на мидл+ можно было найти работу с зп 270-350. В этом году вилка стала ~230-320.

Хорошие предложения тоже есть. Не все так плохо. Просто конкуренция больше. Недавно знакомый получил оффер на 465к.
Кстати, на стажировке Яндекс может платить ~70к, Райф ~100к.

С другой стороны если сравнить средние ЗП перед новым годом с хабр карьеры (мой пост), то вроде средние зп немного даже выросли 🤷‍♂️

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

Еще слышал инфу, что на собеседовании могут попросить покрутить камеру, показать помещение. Интервьюеры хотят убедиться, что у тебя рядом нет второго моника с чатом гпт 🤡

А что вы скажите по рынку it? Чувствуете просадку? Что там в аналитике? Может у кого-то есть инсайдики 🎮⬇️

it пингвин | data engineer 🐧
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥874
Год назад создал тг канал

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

Из прикольного, нашел у себя в заметках варианты названий для канала😁:

it пингвин
Data and Dota
404 not data found
Базовичек
Это БАЗА данных
Айтигр

Хочется только сказать, что грустно что сейчас происходит с тг в России. За год как-то сильно все поменялось. Столько сил и времени вложено в канал, не хочется его потерять.

И я представляю, как обидно создателям больших тгк. Когда у тебя канал 5к - 10к. Ты очень вкладываешься в посты, должен выдавать посты несколько раз в неделю. Постоянно продаешь и покупаешь рекламу, у тебя сложный график, всякие договоренности, очень хороший доход. Это настоящая вторая работа. И тебя ее практически лишают..
Кто не знает, реклама в тг сейчас незаконна.

В общем, ситуация грустная. Я не уверен, что в текущих условиях я бы создавал канал. Из-за возможности какой-то блокировки. На рекламу мне все равно. Для меня это просто приятный бонус.
А так надеемся на ВПН 🙏, чтоб его не блокнули.

И спасибо, что читаете ♥️ Сейчас большая нагрузка на работе, в менторстве, ремонт.. Так что сложно часто делать посты. В заметках уже много тем для постов, нужно только найти время на написание.
Please open Telegram to view this post
VIEW IN TELEGRAM
49🔥1142💅1
Вакансия - аналитик данных

Аналитики, кто ищет работу, нашел интересное предложение:
hh.ru/vacancy/131239680

Компания ищет талантливого Аналитика данных, который поможет сделать путешествия еще более доступными и увлекательными!

Дерзайте!😘
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣376😱5🔥2💅1
Итоги по Performance Review поставили на 1 апреля..😭
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁35🤣75😭1
Произошла утечка исходников Claude Code

Мб кому-то будет интересно покопаться в репе:
https://github.com/instructkr/claude-code

И уже накатали неплохой обзор проекта
https://habr.com/ru/companies/bar/articles/1017574/
1🔥1262
Обзор собеседования

Должность: Data Engineer
Компания: Лига цифровой экономики на проект Альфа
Тип собеса: #тех_собес
Грейд: #middle
Вилка: 250 на руки
Итог собеса: Прошел
* отказ при оформлении на уровне банка

Вопросы:
1. Отличие БД от ХД
2. Что такое партиционирование и шардирование
3. На какие типы делятся индексы (кластеризованный и некластеризованный)
4. физ join и алгоритмы их под капотом
5. ACID - определение каждой буквы
6. Уровни изоляции и какие аномалии решают

Кейсы:
7. Что бы делал при такой ситуации:
Пайплайн данных, новые данные приходят ночью, во вторник объем данных на входе увеличивается в 5 раз, что замедляют работу пайплайна.
8. Пришел заказчик попросил сделать витрину, ты понимаешь что у вас нет столько ресурсов или по другим причинам не можешь сделать эту задачу. Как ты будешь это обсуждать с заказчиком?

Задачи:
1. Выбрать name сотрудников, получающих зарплату больше своих руководителей.
Атрибуты в таблице table : employee_id, name, department, id_master, salary

2. В таблице имена не могут повторяться.
Задача: найдите имена и количество двоек у тех учеников, у которых больше 10 пятерок.
Соответственно надо получить табличку с именем и количеством двоек.

3.
employees (
id INT PRIMARY KEY,
name VARCHAR(100),
manager_id INT REFERENCES employees(id) -- NULL для топ-менеджера
)

Задание:
Для каждого сотрудника вывести:
его имя,
уровень в иерархии (0 для топ-менеджера),
Отсортировать по уровню, затем по имени.


Как вам собес?🤔

it пингвин | data engineer 🐧

#собеседование #подписчик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2684🤔21👍1
Бизнесу не всегда нужны истинные данные

Часто заказчику нужно показать руководству доказательство, что их бизнес-решение верное, их новая фича отлично работает и принесла прибыль. Не важно как это доказывается, как интерпретируются данные, насколько они корректные.
Часто аналитика должна быть не объективной, а аналитика должна подтверждать то, что мы уже решили.

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

И это не всегда минус. Просто упор сделан на скорость принятия решения, а не на качество. По ощущениям такое чаще в продуктовых современных компаниях, где бизнес очень быстро развивается.

В финансовом секторе, особенно в окологосушных банках (почти все в РФ) ситуация немного другая. Здесь наоборот цена ошибки дорогая. Отсюда и медленные процессы, куча проверок и бюрократии.

Оба подхода имеют право на жизнь. Как всегда нужно искать баланс.
👍7🤣733🔥2😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Лучшее время на работе 🚬💅
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣18💅5🔥4😁1
Обзор собеседования

Должность: Data Engineer
Компания: СБЕР в команду GigaData
Тип собеса: #тех_собес
Грейд: #middle
Этапы: Тех интервью -> системный дизайн -> интервью с Тим лидом
Вилка: 250+ на руки
Итог собеса: Не прошел 1 этап

Python:
1. почему только неизменяемые типы данных могут быть ключом словаря?
2. Какой алгоритм используется для поиска по словарю? Какая сложность?
2.5. от каких типов данных можно посчитать hash?
3. Чем отличается по сложности вставка через insert и через append в список? Какая сложность у каждого?
4. Что такое GIL?
5. Итераторы, генераторы? Как каждый из них взаимодействует с памятью?

Spark:
1. Какие методы оптимизации использовал?
2. Что такое parquet?
3. Как понять, сколько будет тасок после считывания parquet в спарк(число row group в паркете)?
4. Когда мы выделяем память на каждый экзекьютор, какая память на что распределяется и как на это повлиять?
5. Типы джоинов в spark? Как оптимизатор решает, когда какой выбрать?
6. Coalesce и repartition, когда при coalesce будет shuffle?

Airflow:
1. Какие операторы использовал?
2. Что такое сенсоры?
3. Что такое xcom?

Кубер:
1. просто скипнул вопросы


Как вам собес?🤔

it пингвин | data engineer 🐧

#собеседование #подписчик
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥7👍5😱41😁1