Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😱23😁7 3 2🔥1
Есть предложение по работе в большой банк , зп ~400к гросс
*предложение актуально, пока пост опубликован
*upd. На указанную вакансию отправил резюме кандидатов.
Если среди моих подписчиков есть опытные DE, которые ищут работу, пишите в лс, может помогу. Есть контакты hr.
Пишите в личку @it_pengwin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13 8 3❤2🫡2🔥1
Задачи Яндекса
Выкладываю первую часть задачек с собеса с Я:
====================================
1️⃣ Таблица table с 1 колонкой id
Значения в таблице:
Что вернет функция в запросе вида:
-- SELECT … FROM table
count(*)=
count(1)=
count(id)=
count('id')=
sum(id) OVER (ORDER BY id NULLS LAST) =
sum(id) OVER () =
===================================
2️⃣ Есть две таблицы DEBIT и CREDIT, содержащие транзакции о поступлениях (DEBIT) и расходах (CREDIT) на лицевых счетах, со следующей одинаковой структурой
Напишите SQL-запрос, возвращающий разность между поступлениями и расходами за каждый день по каждому лицевому
===================================
Как вам задачки? Тоже думали будет сложнее😅
Присылайте решения и задавайте вопросы⬇️
*На днях выложу вторую часть
it пингвин | data engineer 🐧
boost🥰
Выкладываю первую часть задачек с собеса с Я:
====================================
Значения в таблице:
2
3
4
5
NULL
NULL
Что вернет функция в запросе вида:
-- SELECT … FROM table
count(*)=
count(1)=
count(id)=
count('id')=
sum(id) OVER (ORDER BY id NULLS LAST) =
sum(id) OVER () =
===================================
ACC_ID | номер лицевого счета
DT | дата транзакции
AMNT | сумма транзакции (всегда положительная)
Напишите SQL-запрос, возвращающий разность между поступлениями и расходами за каждый день по каждому лицевому
===================================
Как вам задачки? Тоже думали будет сложнее
Присылайте решения и задавайте вопросы
*На днях выложу вторую часть
it пингвин | data engineer 🐧
boost🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5💅4🔥2 2 1
Задачи Яндекса ч2
Продолжение задачек с собеса:
Рассмотрим таблицу sessions за 1 календарный день с тремя колонками:
Задача 1
Необходимо вывести данные, чтобы нарисовать распределение:сколько пользователей проводит на сайте Х часов
====================================
Задача 2
Вывести любых 100 пользователей, впервые зашедших на сайт в 5 часов
====================================
Задача 3
В какое время наибольшее число пользователей на сайте?
Если таких вариантов несколько, вывести все
====================================
Задача 4
В какое время наибольшее число изменений изменений параметра?
====================================
Задача 5
Написать запрос, который преобразует колонку value не в изменение параметра, а в актуальное значение параметра:
Если value не NULL, оставить значение без изменений. Иначе, заменить value на предыдущее по времени не NULL значение для этого пользователя.
Гарантируется, что для каждого id первое по времени значение value всегда не NULL
====================================
На самом деле не такой уж и простой собес был. За 1 час я немного рассказал о своем опыте, порешали первый пулл задачек, поговорили про SQL и DWH. И так как осталось время, то еще порешали задачки (и это только первый этап 😃)
Когда пишешь решение тебя сразу спрашивают какие-то тонкости по sql-ым конструкциям. Задачки не сложные, но нужно все быстро решать.
Интервьюер понравился, вообще не душный. Например, можно было условно сказать про обработку времени, но сам код не писать и обработку null-ов проговорить просто и переходить к след задачам.
Он как будто сам хотел, чтоб я все успешно решил. Вайб такой дружеский был.
Сказал, что у меня хороший результат и редко кто доходит до последней задачи и решает ее.
Советую последнюю задачку отработать.
Как вам задачки?🎮 ⬇️
it пингвин | data engineer🐧
Продолжение задачек с собеса:
Рассмотрим таблицу sessions за 1 календарный день с тремя колонками:
|| id | time | value ||
|| 1 | 1 | a ||
|| 1 | 2 | NULL ||
|| 1 | 3 | NULL ||
|| 1 | 4 | b ||
|| 1 | 5 | NULL ||
|| 2 | 1 | c ||
|| 2 | 2 | d ||
|| 2 | 3 | NULL ||
Задача 1
Необходимо вывести данные, чтобы нарисовать распределение:сколько пользователей проводит на сайте Х часов
====================================
Задача 2
Вывести любых 100 пользователей, впервые зашедших на сайт в 5 часов
====================================
Задача 3
В какое время наибольшее число пользователей на сайте?
Если таких вариантов несколько, вывести все
====================================
Задача 4
В какое время наибольшее число изменений изменений параметра?
====================================
Задача 5
Написать запрос, который преобразует колонку value не в изменение параметра, а в актуальное значение параметра:
Если value не NULL, оставить значение без изменений. Иначе, заменить value на предыдущее по времени не NULL значение для этого пользователя.
Гарантируется, что для каждого id первое по времени значение value всегда не NULL
====================================
На самом деле не такой уж и простой собес был. За 1 час я немного рассказал о своем опыте, порешали первый пулл задачек, поговорили про SQL и DWH. И так как осталось время, то еще порешали задачки (и это только первый этап 😃)
Когда пишешь решение тебя сразу спрашивают какие-то тонкости по sql-ым конструкциям. Задачки не сложные, но нужно все быстро решать.
Интервьюер понравился, вообще не душный. Например, можно было условно сказать про обработку времени, но сам код не писать и обработку null-ов проговорить просто и переходить к след задачам.
Он как будто сам хотел, чтоб я все успешно решил. Вайб такой дружеский был.
Сказал, что у меня хороший результат и редко кто доходит до последней задачи и решает ее.
Советую последнюю задачку отработать.
Как вам задачки?
it пингвин | data engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤4👍2 2💅1 1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3❤2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
😱6❤4👍2
Задача "допустимые скобки"
Классическая задачка на скобки 🤩
Мне эта задачка как-то давно на собесе попалась. И недавно решал алгосы на neetcode и снова попалась эта задачка. Попробуйте решить, неплохая разминОчка.
Вот как по мне самое лаконичное и четенькое решение)
def isValid(s: str) -> bool:
stack = []
closeToOpen = {")": "(", "]": "[", "}": "{"}
for c in s:
if c in closeToOpen:
if stack and stack[-1] == closeToOpen[c]:
stack.pop()
else:
return False
else:
stack.append(c)
return True if not stack else False
print(isValid('([{}])'))
И вот второй вариант, но ресурсов больше жрет
def isValid( s: str) -> bool:
while '()' in s or '{}' in s or '[]' in s:
s = s.replace('()', '')
s = s.replace('{}', '')
s = s.replace('[]', '')
return s == ''
print(isValid('([{})]'))
Есть упрощенная вариация этой задачки - с одним видом скобочек, у нее решение будет полегче.
Стоит ли периодически постить задачки по питону?🤔 ⬇️
Сложные не хочется, так мало кто будет вникать 😁
it пингвин | data engineer🐧
Классическая задачка на скобки 🤩
Вам дана строка, s состоящая из следующих символов: '(', ')', '{', '}', '[' и ']'.
Входная строка s валиднаяя тогда и только тогда, когда:
• Каждая открывающаяся скобка закрывается закрывающейся скобкой того же типа.
• Открытые скобки закрываются в правильном порядке.
• Каждой закрывающейся скобке соответствует открывающая скобка того же типа.
Верните true если s это валидная (допустимая) строка, и false наоборот.
=======================================
Пример 1:
Input: s = "[]"
Output: true
Пример 2:
Input: s = "([{}])"
Output: true
Пример 3:
Input: s = "[(])"
Output: false
Пояснение: Скобки закрыты в неправильном порядке.
=======================================Мне эта задачка как-то давно на собесе попалась. И недавно решал алгосы на neetcode и снова попалась эта задачка. Попробуйте решить, неплохая разминОчка.
Вот как по мне самое лаконичное и четенькое решение)
def isValid(s: str) -> bool:
stack = []
closeToOpen = {")": "(", "]": "[", "}": "{"}
for c in s:
if c in closeToOpen:
if stack and stack[-1] == closeToOpen[c]:
stack.pop()
else:
return False
else:
stack.append(c)
return True if not stack else False
print(isValid('([{}])'))
И вот второй вариант, но ресурсов больше жрет
while '()' in s or '{}' in s or '[]' in s:
s = s.replace('()', '')
s = s.replace('{}', '')
s = s.replace('[]', '')
return s == ''
print(isValid('([{})]'))
Есть упрощенная вариация этой задачки - с одним видом скобочек, у нее решение будет полегче.
Стоит ли периодически постить задачки по питону?
Сложные не хочется, так мало кто будет вникать 😁
it пингвин | data engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39🔥8❤5 4💅2
Продолжаю серию постов про ACID
Раскроем буковку🔤 :
Consistency или согласованность (C) в контексте транзакций ACID гарантирует, что любая транзакция переведет базу данных из одного допустимого состояния в другое допустимое состояние, никогда не оставляя ее в поврежденном или «недопустимом» состоянии.
Это означает, что все ограничения целостности данных, такие как ограничения первичного ключа (отсутствие повторяющихся идентификаторов), ограничения внешнего ключа (связанные записи должны существовать в родительских таблицах) и проверочные ограничения (возраст не может быть отрицательным), удовлетворяются до и после транзакции.
Если транзакция попытается нарушить эти правила, она не будет зафиксирована, а база данных вернется в предыдущее состояние.
Пример:
В базе данных электронной коммерции есть две таблицы:
• products(со столбцами: product_id, stock_quantity и т.д.)
• orders(со столбцами: order_id, product_id, quantity и т.д.)
Ограничение : Вы не можете разместить заказ на товар, если quantity(кол-во в заказе) больше, чем указано stock_quantity(кол-во на складе) в таблице products - CHECK (stock_quantity >= 0) или через триггер.
Транзакция:
Если у товара stock_quantity было 8 (меньше, чем то, что мы пытаемся заказать), то СУБД видит, что новое значение будет -2, что нарушает правило согласованности (оно не должно быть отрицательным).
Транзакция завершается неудачей и инициируется откат.
Еще пример:
Например, пользователь в системе заполняет карточку: ФИО, Дата рождения, ИНН, Телефон(отдельно код страны, города и номер), Адрес(тоже разбит на несколько полей).
В базе данных у нас есть несколько таблиц: client, phone, address
Так что когда пользователь заполнил форму и нажал «сохранить», система отправляет в базу данных 3 запроса:
Можно отправить 3 разных запроса, но лучше сделать одну транзакцию, внутри которой будут эти 3 запроса.
Атомарность гарантирует, что не получится такого, что адрес с телефоном сохранились, а сам клиент — нет. Это сделало бы базу неконсистентной, ведь у нас бы появились атрибуты, «висящие в воздухе», никому не принадлежащие. Что, в свою очередь, приведет к ошибкам в системе.
❗️ Важный момент. За консистентностью должен следить разработчик. Ведь это вопрос скорее бизнес-логики, чем технологий. Разработчик знает, что:
✅ если есть телефон в таблице phone, то он должен ссылаться на таблицу client
База об этом не знает ничего, если ей не рассказать. И она легко пропустит запрос «добавь в базу телефон без ссылки на клиента», если сам по себе запрос корректный, а разработчик не повесил на таблицу foreign key.
Разработчик пишет код, пошагово переводящий БД в нужное согласованное состояние и, если где-то посередине возникает ошибка,то откатывает всю транзакцию.
Как реализовать согласованность:
1. Ограничения схемы базы данных
➖ Ограничения NOT NULL , UNIQUE , PRIMARY KEY , FOREIGN KEY , CHECK и другие определения схемы гарантируют, что недопустимые записи не допускаются.
2. Триггеры и хранимые процедуры
➖ Триггеры могут автоматически проверять дополнительные правила при каждой вставке, обновлении или удалении строк.
➖ Хранимая процедура может содержать логику для проверки данных перед их фиксацией.
3. Защитные меры на уровне приложений
➖ В то время как база данных обеспечивает соблюдение ограничений на более низком уровне, приложения часто добавляют дополнительные проверки, например, обеспечивают соблюдение бизнес-правил или проверяют данные еще до того, как они попадут на уровень базы данных.
➖➖➖➖➖➖➖➖➖➖➖➖
Согласованность тесно связана с уровнями изоляции транзакций, о чем расскажу дальше..
it пингвин | data engineer🐧
#Вопросы_с_собесов #архитектура #acid
Раскроем буковку
Consistency или согласованность (C) в контексте транзакций ACID гарантирует, что любая транзакция переведет базу данных из одного допустимого состояния в другое допустимое состояние, никогда не оставляя ее в поврежденном или «недопустимом» состоянии.
Это означает, что все ограничения целостности данных, такие как ограничения первичного ключа (отсутствие повторяющихся идентификаторов), ограничения внешнего ключа (связанные записи должны существовать в родительских таблицах) и проверочные ограничения (возраст не может быть отрицательным), удовлетворяются до и после транзакции.
Если транзакция попытается нарушить эти правила, она не будет зафиксирована, а база данных вернется в предыдущее состояние.
Пример:
В базе данных электронной коммерции есть две таблицы:
• products(со столбцами: product_id, stock_quantity и т.д.)
• orders(со столбцами: order_id, product_id, quantity и т.д.)
Ограничение : Вы не можете разместить заказ на товар, если quantity(кол-во в заказе) больше, чем указано stock_quantity(кол-во на складе) в таблице products - CHECK (stock_quantity >= 0) или через триггер.
Транзакция:
BEGIN TRANSACTION;
INSERT INTO orders (product_id, quantity)
VALUES (101, 10);
-- Next, try to decrement stock from the products table
UPDATE products
SET stock_quantity = stock_quantity - 10
WHERE product_id = 101;
-- Check constraint: If 'stock_quantity' goes below 0, this violates the rule.
COMMIT;
Если у товара stock_quantity было 8 (меньше, чем то, что мы пытаемся заказать), то СУБД видит, что новое значение будет -2, что нарушает правило согласованности (оно не должно быть отрицательным).
Транзакция завершается неудачей и инициируется откат.
Еще пример:
Например, пользователь в системе заполняет карточку: ФИО, Дата рождения, ИНН, Телефон(отдельно код страны, города и номер), Адрес(тоже разбит на несколько полей).
В базе данных у нас есть несколько таблиц: client, phone, address
Так что когда пользователь заполнил форму и нажал «сохранить», система отправляет в базу данных 3 запроса:
insert into client… -- вставить в таблицу клиентов такие-то данные
insert into phone…
insert into address…
Можно отправить 3 разных запроса, но лучше сделать одну транзакцию, внутри которой будут эти 3 запроса.
Атомарность гарантирует, что не получится такого, что адрес с телефоном сохранились, а сам клиент — нет. Это сделало бы базу неконсистентной, ведь у нас бы появились атрибуты, «висящие в воздухе», никому не принадлежащие. Что, в свою очередь, приведет к ошибкам в системе.
База об этом не знает ничего, если ей не рассказать. И она легко пропустит запрос «добавь в базу телефон без ссылки на клиента», если сам по себе запрос корректный, а разработчик не повесил на таблицу foreign key.
Разработчик пишет код, пошагово переводящий БД в нужное согласованное состояние и, если где-то посередине возникает ошибка,то откатывает всю транзакцию.
Как реализовать согласованность:
1. Ограничения схемы базы данных
2. Триггеры и хранимые процедуры
3. Защитные меры на уровне приложений
➖➖➖➖➖➖➖➖➖➖➖➖
Согласованность тесно связана с уровнями изоляции транзакций, о чем расскажу дальше..
it пингвин | data engineer
#Вопросы_с_собесов #архитектура #acid
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11🔥5🫡1🗿1 1 1
Талант или дисциплина
Я все-таки хочу напомнить про базовую базу..
Дисциплина и упорство сильнее таланта. Человек с супер талантом в школе, в универе, из-за своей лени, боязни принимать серьезные решения или маленьких амбиций может его не реализовать. Если это осознанный выбор, просто наслаждаться жизнью - то это збс, такое не осуждаем.
И, наоборот, обычный работяга со средним талантом, но с высоким упорством, за счет большего числа попыток и системной работы, способен добиться значительно большего.
Гениями, которые меняют мир, становятся когда есть и талант, и дисциплина и удача.
В айти тоже самое. Есть куча талантливых программистов, которые пишут на ассемблере с 5 лет и каждый год участвуют в олимпиадах. Я на работе часто таких встречаю.
Объективно чел гораздо сильнее меня - шарит за алгосы, архитектуру, как работает память, сети, знает несколько языков программирования, делает кучу крутых пет проектов. И все это ему дается легко. Например, он просто быстрее читает документацию, статьи и сразу усваивает информацию.
Но во-первых он особо не парится из-за карьеры и во-вторых на этих должностях высокие навыки могут быть избыточны. Закрывать базовые задачи в дате объективно не сложно.
Он мог бы пойти дальше, но ему это не надо. А мне надо 😃 Поэтому смотрю всегда чуть выше. Думаю чего хочу добиться и строю план.
Так что, друзья, работаем✊
#МыслиВслух
Я все-таки хочу напомнить про базовую базу..
Дисциплина и упорство сильнее таланта. Человек с супер талантом в школе, в универе, из-за своей лени, боязни принимать серьезные решения или маленьких амбиций может его не реализовать. Если это осознанный выбор, просто наслаждаться жизнью - то это збс, такое не осуждаем.
И, наоборот, обычный работяга со средним талантом, но с высоким упорством, за счет большего числа попыток и системной работы, способен добиться значительно большего.
Гениями, которые меняют мир, становятся когда есть и талант, и дисциплина и удача.
В айти тоже самое. Есть куча талантливых программистов, которые пишут на ассемблере с 5 лет и каждый год участвуют в олимпиадах. Я на работе часто таких встречаю.
Объективно чел гораздо сильнее меня - шарит за алгосы, архитектуру, как работает память, сети, знает несколько языков программирования, делает кучу крутых пет проектов. И все это ему дается легко. Например, он просто быстрее читает документацию, статьи и сразу усваивает информацию.
Но во-первых он особо не парится из-за карьеры и во-вторых на этих должностях высокие навыки могут быть избыточны. Закрывать базовые задачи в дате объективно не сложно.
Он мог бы пойти дальше, но ему это не надо. А мне надо 😃 Поэтому смотрю всегда чуть выше. Думаю чего хочу добиться и строю план.
Так что, друзья, работаем
#МыслиВслух
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥47❤19👍10 5💅2🗿1
Обзор собеседований
Должность: Sql-разработчик
Компания: ics-it
Тип собеса: #тех_собес
Грейд: #Middle
Вилка: 150-200к
Вакансия: https://hh.ru/vacancy/118564648
Краткий обзор собеседования:
➖➖➖➖➖➖➖➖➖➖➖➖
Должность: Data Engineer
Компания: ООО РСХБ-Интех
Тип собеса: #тех_собес
Грейд: #middle #senior
Вилка: 300к
Вакансия: https://hh.ru/vacancy/119266338
Краткий обзор собеседования:
➖➖➖➖➖➖➖➖➖➖➖➖
Присылайте свои обзоры собесов. Нарабатываем базу🤝
it пингвин | data engineer🐧
Должность: Sql-разработчик
Компания: ics-it
Тип собеса: #тех_собес
Грейд: #Middle
Вилка: 150-200к
Вакансия: https://hh.ru/vacancy/118564648
Краткий обзор собеседования:
• Как оптимизировать запросы?
• На что ориентируешься при создании индекса, когда лучше его создавать?
• Что такое BTree? В чем именно скорость поиска?
• Задачка про джоины
• Задачка вывести третью по велечине зп
• В чем смысл транзакции и для чего они нужны?
• Что такое изоляция в ACID?
• Уровни изоляции в транзакции?
• Вопрос про DEADLOCK?
• Backup как сделать?
➖➖➖➖➖➖➖➖➖➖➖➖
Должность: Data Engineer
Компания: ООО РСХБ-Интех
Тип собеса: #тех_собес
Грейд: #middle #senior
Вилка: 300к
Вакансия: https://hh.ru/vacancy/119266338
Краткий обзор собеседования:
• Как устроен классический DWH?
Задачи:
1)SELECT Year(Date) as date_year
FROM Balance
GROUP BY date_year
WHERE date_year >= 2024
В чем ошибка?
2) Как в sql запросе выбрать при пересечении A и B множества выбрать только множество A без пересекающейся части. Перечислить разные варианты.
3) Есть таблица с id sum date.
Вывести нарастающий итог. Вывести только первые записи по каждому клиенту.
4) Задача про вывод записей, которые вставлены задним числом (нарушена последовательность id)
➖➖➖➖➖➖➖➖➖➖➖➖
Присылайте свои обзоры собесов. Нарабатываем базу
it пингвин | data engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤9👍4 2 1
День рождения 🎉
Друзья, всем привет!
У меня сегодня др. Исполнилось 26 лет.
И хотелось бы взять за традицию подведение итогов. Потом будет прикольно перечитывать😁
Сейчас времени совсем мало, пишу пост с первого раза, особо без правок, так что будет не оч структурно и с ошибками)
За прошедший год в моей карьере произошло много событий. Осень 2024 и зиму 2025 я работал в красном банке через консалтинг.
В консалтинге я работал 2,5 года и последний год хотел уволиться. Проходил много собесов, погружался в DE, смотрел что происходит на рынке.
В компании в целом мне нравилось - условия работы и отношение были топ (только зп особо не хотели поднимать), но сами проекты были скучны.
В марте я уволился. Было тяжело и грустно, так как коллектив мне очень нравился. Особенно запомнил корпораты и тимбилдинги😢 💔
Устроился напрямую в другой большой банк. В трудовой написано - главный разработчик озера данных. "Вау, круто" - думал я🤡
По сути я там ничего сложного не делал. Писал простенькие одинаковые запросы в hive. Забирал данные с разных СУБД и складывал в Hadoop.
Первые 1,5 месяца у меня вообще не было работы, тк до сих все доступы мне не могли выдать. Ужасная бюрократия.
И 20 марта я решил создать тг канал.
Почему решил создать? Было свободное время, осталось много задокументированных собесов, материала для подготовки к собесам, различные задачи и просто хотелось высказывать мысли.
Также меня очень вдохновили каналы Реджектика, Вовы инженерообязанного и Жени.
Создал канал и прям от души делал посты. Это очень классный опыт. Перед работой час, полтора делал заготовки постов. Потом нравилось получать фидбэк.
Канал начал быстро расти, все с помощью комментинга. Тема не оч классная, но других способов раскрутить канал не вижу. Сейчас меньше комментирую, немного утерян интерес и в целом мне кажется, что канал итак уже большой.
Решил вести канал анонимно, так как могу более открыто говорить об индустрии и меньше переживать о последствиях. Например, моим коллегам и руководителям явно бы не нравилось, что я прохожу кучу собесов и говорю как я чилю на работе.
ТГ канал реально моя отдушина. Кто сомневается в создании - начните, а дальше пойдет. Позже сделаю пост со своими мыслями о ведении тг канала (вообще не претендую на экспертное мнение).
И при создании тг канала я думал о каком-то заработке. Немного денег есть с рекламы. Но главное сразу понимал, что можно раскручивать свое менторство.
Менторить я начал еще в консалтинге - около года собесил стажеров, поднимал базу знаний де/аналитиков и выводил их на проекты ТОП банков. Около 10 стажеров вывел на проекты, некоторых продали даже как мидлов (темная история)😈
И еще был репетитором с объявлением на авито. И школьников обучал sql/python, сессии помогал проходить студентам (почти всей группе из ВШЭ зимой делал лабы), помогал перекатываться из других ит направлений в DE. В общем, опыт уже был.
Продолжил менторить с появлением тг канала с более серьёзным подходом. Особо это пока что не афиширую. Но люди приходят. Есть уже прям большие успехи. Когда-нибудь расскажу о результатах.
В июле подумал, что надо быть на одной волне со своими менти и посмотреть что там ны рынке (+ контентик для канала). Надо попроходить собесы.
Прошел собесы, получил несколько офферов и решил уйти😎
Я выбирал между двумя офферами:
1- Жирный оффер в другой банк и скорее всего снова бюрократия и скучная работа
2 - Доставка, деньги такие же как были и оч интересная работа
Выбрал 2 вариант. Даже пошел на даунгрейд по должности.
Был главный разраб озера (сеньор) -> Инженер по обработке данных (мидл). А сейчас вообще чувствую себя джуном🤡
И вот с понедельника я снова в новой компании. Надеюсь это надолго😊
Стек очень крутой, команда очень сильная. По сути это стартап внутри большой компании. Работать буду на всех слоях хранилища. Куча разных технологий и большие планы.
Сейчас впервые я буду переживать за испыталку.
О смене работы и новом стеке тоже сделаю пост🫡
Рассказываю только про карьеру, другое наверно особо не интересно читать.
Спасибо, дорогие подписчики, за внимание и поддержку ❤️
Друзья, всем привет!
У меня сегодня др. Исполнилось 26 лет.
И хотелось бы взять за традицию подведение итогов. Потом будет прикольно перечитывать😁
Сейчас времени совсем мало, пишу пост с первого раза, особо без правок, так что будет не оч структурно и с ошибками)
За прошедший год в моей карьере произошло много событий. Осень 2024 и зиму 2025 я работал в красном банке через консалтинг.
В консалтинге я работал 2,5 года и последний год хотел уволиться. Проходил много собесов, погружался в DE, смотрел что происходит на рынке.
В компании в целом мне нравилось - условия работы и отношение были топ (только зп особо не хотели поднимать), но сами проекты были скучны.
В марте я уволился. Было тяжело и грустно, так как коллектив мне очень нравился. Особенно запомнил корпораты и тимбилдинги
Устроился напрямую в другой большой банк. В трудовой написано - главный разработчик озера данных. "Вау, круто" - думал я
По сути я там ничего сложного не делал. Писал простенькие одинаковые запросы в hive. Забирал данные с разных СУБД и складывал в Hadoop.
Первые 1,5 месяца у меня вообще не было работы, тк до сих все доступы мне не могли выдать. Ужасная бюрократия.
И 20 марта я решил создать тг канал.
Почему решил создать? Было свободное время, осталось много задокументированных собесов, материала для подготовки к собесам, различные задачи и просто хотелось высказывать мысли.
Также меня очень вдохновили каналы Реджектика, Вовы инженерообязанного и Жени.
Создал канал и прям от души делал посты. Это очень классный опыт. Перед работой час, полтора делал заготовки постов. Потом нравилось получать фидбэк.
Канал начал быстро расти, все с помощью комментинга. Тема не оч классная, но других способов раскрутить канал не вижу. Сейчас меньше комментирую, немного утерян интерес и в целом мне кажется, что канал итак уже большой.
Решил вести канал анонимно, так как могу более открыто говорить об индустрии и меньше переживать о последствиях. Например, моим коллегам и руководителям явно бы не нравилось, что я прохожу кучу собесов и говорю как я чилю на работе.
ТГ канал реально моя отдушина. Кто сомневается в создании - начните, а дальше пойдет. Позже сделаю пост со своими мыслями о ведении тг канала (вообще не претендую на экспертное мнение).
И при создании тг канала я думал о каком-то заработке. Немного денег есть с рекламы. Но главное сразу понимал, что можно раскручивать свое менторство.
Менторить я начал еще в консалтинге - около года собесил стажеров, поднимал базу знаний де/аналитиков и выводил их на проекты ТОП банков. Около 10 стажеров вывел на проекты, некоторых продали даже как мидлов (темная история)
И еще был репетитором с объявлением на авито. И школьников обучал sql/python, сессии помогал проходить студентам (почти всей группе из ВШЭ зимой делал лабы), помогал перекатываться из других ит направлений в DE. В общем, опыт уже был.
Продолжил менторить с появлением тг канала с более серьёзным подходом. Особо это пока что не афиширую. Но люди приходят. Есть уже прям большие успехи. Когда-нибудь расскажу о результатах.
В июле подумал, что надо быть на одной волне со своими менти и посмотреть что там ны рынке (+ контентик для канала). Надо попроходить собесы.
Прошел собесы, получил несколько офферов и решил уйти
Я выбирал между двумя офферами:
1- Жирный оффер в другой банк и скорее всего снова бюрократия и скучная работа
2 - Доставка, деньги такие же как были и оч интересная работа
Выбрал 2 вариант. Даже пошел на даунгрейд по должности.
Был главный разраб озера (сеньор) -> Инженер по обработке данных (мидл). А сейчас вообще чувствую себя джуном
И вот с понедельника я снова в новой компании. Надеюсь это надолго
Стек очень крутой, команда очень сильная. По сути это стартап внутри большой компании. Работать буду на всех слоях хранилища. Куча разных технологий и большие планы.
Сейчас впервые я буду переживать за испыталку.
О смене работы и новом стеке тоже сделаю пост
Рассказываю только про карьеру, другое наверно особо не интересно читать.
Спасибо, дорогие подписчики, за внимание и поддержку ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
14❤77🔥38👍19😱4 2😁1
Обзор собеседования
Должность: Data Engineer
Компания: Газпромбанк
Тип собеса:#тех_собес #livecoding
Грейд: #middle #senior
Вилка: 350к
Вакансия: https://hh.ru/vacancy/112316856
Краткий обзор собеседования:
Как вам собес?🤔
Мне кажется, достаточно сложный.
it пингвин | data engineer🐧
Должность: Data Engineer
Компания: Газпромбанк
Тип собеса:#тех_собес #livecoding
Грейд: #middle #senior
Вилка: 350к
Вакансия: https://hh.ru/vacancy/112316856
Краткий обзор собеседования:
• Зачем нужна нормализация и денормализация, что и когда используется?
• Привести примеры кейсов, где нужна нормализация, а где денормализация
• MapReduce и Spark сравнить их верхнеуровнево
• Что такое Map, что такое Reduce
• Назвать концепции ООП и объяснить что они означают
• Что такое алгоритм и алгоритмическая сложность?
• Как отсортировать массив размером 32 ГБ, если в оперативке 8ГБ
Задачи:
• Python
Задача 1
У нас есть два списка а и b, каждый длиной от 0 до 1000 включительно.
Требуется написать функцию, которая вернет список res, содержащий чередующиеся элементы [a1,b1,a2,b2,…], начиная с первого элемента первого списка.
Пример 1:
a = [1,7,3,5,8,3,4]
b = [5,6,7]
res = [1,5,7,6,3,7,5,8,3,4]
Задача 2
Написать функцию, которая находит самый длинный палиндром в списке чисел.
Если таких несколько, возвращаем все. Если самый большой палиндром имеет длину 2 и меньше,то возвращаем -1.
Пример 1
Вход: [3,4,2,1,6,7,8,7,6]
Выход: [6,7,8,7,6]
Пример 2
Вход: [1,2,2,3,4,5]
Выход: -1
• SQL
Имеем таблицу транзакций transactions следующего вида:
id_tr | id_client | date_time | status
1 | 1 |2025-01-01 12:34:56 | Success
2 | 1 |2025-01-02 01:23:45 | Failed
3 | 2 |2025-01-01 10:23:54 | Success
...
123 | 12 |2025-01-01 11:24:55 | Success
Примечание: Пары id_client, date_time - уникальные, т.е. у клиента не может быть 2 и более транзакции в одну дату/время
1.1 Посчитать общее количество транзакций за последние 7 дней
1.2 Посчитать долю успешных транзакций за последние 30 дней
1.3 Посчитать количество клиентов, ушедших в отток
*Определение оттока: у клиента не менее 1 транзакции в период [t-90,t-30), и ни одной транзакции в период [t-30,t]
t - сегодня
Как вам собес?
Мне кажется, достаточно сложный.
it пингвин | data engineer
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥19 9❤6👍4🫡3 2
Может это не синдром, а ты и правда самозванец.
#МыслиВслух
#МыслиВслух
😭41😁17❤3👍3🔥1😱1😢1
С началом рабочей недели!
Друзья, хочу вам рассказать о новом канале DB developers channel
Мне поступило интересное предложение стать дружественными каналами и обменяться ссылками для взаимной поддержки. Я с огромным энтузиазмом поддержу эту инициативу, ведь такие шаги помогают укреплять связи и делиться ценными знаниями в нашей области!🫡
На канале делятся "интересными задачами, примерами, обсуждениями без воды".
Автор выделяется своей адекватностью, балансируя глубокие знания с практическими советами, всегда оставаясь надежным и уравновешенным профессионалом.
По классике, я бы привел в пример несколько его интересных постов, но к сожалению, у меня перестал открываться его канал 😭
Можете сами зайти убедиться в качестве контента и поставить положительные реакции!
Поддержим начинающего блогера!
Подписываемся!
Друзья, хочу вам рассказать о новом канале DB developers channel
Мне поступило интересное предложение стать дружественными каналами и обменяться ссылками для взаимной поддержки. Я с огромным энтузиазмом поддержу эту инициативу, ведь такие шаги помогают укреплять связи и делиться ценными знаниями в нашей области!🫡
На канале делятся "интересными задачами, примерами, обсуждениями без воды".
Автор выделяется своей адекватностью, балансируя глубокие знания с практическими советами, всегда оставаясь надежным и уравновешенным профессионалом.
По классике, я бы привел в пример несколько его интересных постов, но к сожалению, у меня перестал открываться его канал 😭
Можете сами зайти убедиться в качестве контента и поставить положительные реакции!
Поддержим начинающего блогера!
Подписываемся!
🤣44🙈6😁5🤡3💅3👍1
Как вы знаете, я уволился из банка (это был РСХБ) и перед уходом поговорил с начальником по душам. Он меня понял и был согласен, что мне лучше уволиться. Я начал сильно тонуть в бюрократии и он тоже побоялся, что в банке огонь в глазах может потухнуть.
После разговора, я спокойно отработал 2 недели и наконец-то без какого-либо угрызения совести уволился.
Еще мне очень понравилась его аналогия, что дата инженеры в it - это грузчики. Просто занимаешься перекладкой данных с одного места в другое. Забавно 😁
После разговора, я спокойно отработал 2 недели и наконец-то без какого-либо угрызения совести уволился.
Еще мне очень понравилась его аналогия, что дата инженеры в it - это грузчики. Просто занимаешься перекладкой данных с одного места в другое. Забавно 😁
😁47🔥15 7❤3👍3
Сколько часов в день ты работаешь?
Anonymous Poll
8%
1-2
16%
3-4
16%
5-6
24%
7-8
14%
8-10
5%
10-12
4%
12+
14%
весь день чилю 🦦
🤣2