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
29 сентября новый поток программы Data Engineer от New Professions Lab
🔴 ВАЖНОЕ обращение!
Ко мне пришли ребята из New Professions Lab. *Я о них получал хорошие отзывы и даже на канале как-то выкладывал их материалы.
Изначально было предложение - просто сделать рекламу нового потока (это 17-ый поток😱 ). Но я предложил другой формат:
Я буду сам проходить этот курс от начала и до конца и делать посты с обзорами материала.
Мне очень понравилась их программа и самому полезно будет пройти курс. Например, у меня есть темы, в которых я слаб - на новой работе сейчас много dbt, скоро начну работать с nifi и в ближайшем будущем будет flink, знания по докеру и куберу тоже нужно подтянуть.
Я сам по себе самоучка и надеюсь закрою пробелы в знаниях. Заранее с New Professions Lab обговорили, что обзор буду делать честный, критика тоже возможна.
Постараюсь оценивать со стороны новичка и со стороны инженера с опытом.
Это будет мой первый настоящий курс, который я пройду. Я закладываю время на обучение, как указано, в рекомендации ~ 15 часов в неделю.
Так что, друзья, предупреждаю - в ближайшее несколько месяцев периодически будут посты с обзором программы. Следите за новостями и делитесь мнением. Ну и залетайте со мной на курс😁🤝
➖➖➖➖➖➖➖➖➖➖➖➖➖
Формат: 10 недель (29 сент - 5 дек)| 30 занятий в Zoom | 8 практических лаб в облачном кластере | Поддержка менторов
Обучение подойдет junior- и middle- дата-инженерам, аналитикам данных, бэкенд-разработчикам, техлидам и менеджерам, работающим с дата-командой.
Программа систематизирует твои знания, даст практический опыт работы с Apache Spark, Kafka и другими продвинутыми инструментами, что ускорит твой рост до уровня Senior Data Engineer.
Что конкретно прокачаешь:
➖ System Design - проектирование архитектуры для высоконагруженных проектов
➖ Современный стек - Airflow (оркестрация), Kafka (стриминг), ClickHouse (аналитика)
➖ Масштабируемость - пайплайны, которые устойчивы к росту данных и нагрузки
Понравилась их цитата:
🎯 Пройдите интерактивный квиз и получите рекомендации о пользе программы в зависимости от вашей роли + персональный промокод от пингвина со скидкой 16%
Ко мне пришли ребята из New Professions Lab. *Я о них получал хорошие отзывы и даже на канале как-то выкладывал их материалы.
Изначально было предложение - просто сделать рекламу нового потока (это 17-ый поток
Я буду сам проходить этот курс от начала и до конца и делать посты с обзорами материала.
Мне очень понравилась их программа и самому полезно будет пройти курс. Например, у меня есть темы, в которых я слаб - на новой работе сейчас много dbt, скоро начну работать с nifi и в ближайшем будущем будет flink, знания по докеру и куберу тоже нужно подтянуть.
Я сам по себе самоучка и надеюсь закрою пробелы в знаниях. Заранее с New Professions Lab обговорили, что обзор буду делать честный, критика тоже возможна.
Постараюсь оценивать со стороны новичка и со стороны инженера с опытом.
Это будет мой первый настоящий курс, который я пройду. Я закладываю время на обучение, как указано, в рекомендации ~ 15 часов в неделю.
Так что, друзья, предупреждаю - в ближайшее несколько месяцев периодически будут посты с обзором программы. Следите за новостями и делитесь мнением. Ну и залетайте со мной на курс😁
➖➖➖➖➖➖➖➖➖➖➖➖➖
Формат: 10 недель (29 сент - 5 дек)| 30 занятий в Zoom | 8 практических лаб в облачном кластере | Поддержка менторов
Обучение подойдет junior- и middle- дата-инженерам, аналитикам данных, бэкенд-разработчикам, техлидам и менеджерам, работающим с дата-командой.
Программа систематизирует твои знания, даст практический опыт работы с Apache Spark, Kafka и другими продвинутыми инструментами, что ускорит твой рост до уровня Senior Data Engineer.
Что конкретно прокачаешь:
Понравилась их цитата:
Эта программа – глубокое погружение в практику. Наша цель — научить вас решать задачи из реальной жизни, а не покрыть список тем. Теория — это инструмент, необходимый для решения задач, а не самоцель
🎯 Пройдите интерактивный квиз и получите рекомендации о пользе программы в зависимости от вашей роли + персональный промокод от пингвина со скидкой 16%
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3🤣2💅2❤1😱1🙈1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19😱5🤣3🔥2❤1😭1 1