Перфекционизм - это полная х*йня
Еще в 2022 я очень переживал за чистоту кода. Кто-то не так переменную назвал и я готов был мясить его лицо ближайшие 2 часа и причмокивать...
И знаете что?
Я действительно открыл много крутых материалов по чистому коду и мог заткнуть за пояс даже матерых сеньоров
И я думал...
Даже не так - я верил, чточистый код это то что сделает меня безумно крутым прогером
Я вылизывал все начиная от имен переменных и заканчивая LLD (low level design)
Сейчас конечно это выглядит смешно
Если бы я мог вернуться назад во времени и дать самому себе совет, то выпалил бы такой абзадц:
"Твой перфекционизм, Максон, полная х*йня - ты прячешься за экспертизой чистого кода и пытаешься им закрыть недостатки опыта управления проектом, командой, архитектурой
Но разве перфекционизм это про чистый код, а не про максимальный эмпакт для проекта?
Ты действительно думаешь, что максимизация результата это сидеть и задрачивать всех именами переменных и LLD?
Или ты уже поднимешь свою жопу и изучишь компетенции, которые дадут X10 буст проекту?"
----
Сказал бы мне кто такой абзац несколько лет назад, я бы поклон до земли отвесил и 🌭 на все посты поставил
Еще в 2022 я очень переживал за чистоту кода. Кто-то не так переменную назвал и я готов был мясить его лицо ближайшие 2 часа и причмокивать...
И знаете что?
Я действительно открыл много крутых материалов по чистому коду и мог заткнуть за пояс даже матерых сеньоров
И я думал...
Даже не так - я верил, что
Я вылизывал все начиная от имен переменных и заканчивая LLD (low level design)
Сейчас конечно это выглядит смешно
Если бы я мог вернуться назад во времени и дать самому себе совет, то выпалил бы такой абзадц:
Но разве перфекционизм это про чистый код, а не про максимальный эмпакт для проекта?
Ты действительно думаешь, что максимизация результата это сидеть и задрачивать всех именами переменных и LLD?
Или ты уже поднимешь свою жопу и изучишь компетенции, которые дадут X10 буст проекту?"
----
Сказал бы мне кто такой абзац несколько лет назад, я бы поклон до земли отвесил и 🌭 на все посты поставил
🌭99🤣3🍓1
"А че там делать то надо было?"
"А где паттерн 2 указателя используется - я что-то не понял"
Частенько получаю такие вопросы
- в чатах
- на работе
- ...
И у них у всех одна большая проблема: отсутствие контекста
Человек явно не постарался сформулировать вопрос - потребуется еще минут 5 чтобы понять что он имел ввиду, а потом еще и ответ будет по первой ссылке в гугле...
А вот пример хорошего вопроса:
"Прочитал теорию про быстрый и медленный указатель, но не понял до конца можно ли применять для нескольких строк
Посмотрел все задачи, нигде такого не нашел, GPT тоже особо ничего не сказал
Правильно понимаю что обычно он используется для 1 строки?"
-----
Поклон до земли за такие вопросы - скорость ответа при такой формулировке у меня будет быстрее старта Шумахера на 100-метровке
Вопрос полностью раскрывает контекст, показывает что уже сделано, и уважает время собеседника
СПАСИБО!
Челлендж:п отрекай сколько раз тебе задают уточняющие вопросы прежде чем ответить
А для самых любопытствующих мини-структура:
- краткое описание проблемы
- что сделал сам чтобы решить проблему
- какой результат получил когда сам решал
- на каком именно из этапов нужна помощь
- твои ожидания от собеседника - что он должен сделать в идеале чтобы помочь тебе
Конечно, это идельный мир, но почему бы не сделать жизнь своего коллеги проще и получить респект
Ну и понятно, что если хочешь узнать время у прохожего то такое не нужно 🙂
P.S. пока будешь писать такой вопрос еще и ответ найдешь в 60% случаев
"А где паттерн 2 указателя используется - я что-то не понял"
Частенько получаю такие вопросы
- в чатах
- на работе
- ...
И у них у всех одна большая проблема: отсутствие контекста
Человек явно не постарался сформулировать вопрос - потребуется еще минут 5 чтобы понять что он имел ввиду, а потом еще и ответ будет по первой ссылке в гугле...
А вот пример хорошего вопроса:
Посмотрел все задачи, нигде такого не нашел, GPT тоже особо ничего не сказал
Правильно понимаю что обычно он используется для 1 строки?"
-----
Поклон до земли за такие вопросы - скорость ответа при такой формулировке у меня будет быстрее старта Шумахера на 100-метровке
Вопрос полностью раскрывает контекст, показывает что уже сделано, и уважает время собеседника
СПАСИБО!
Челлендж:
А для самых любопытствующих мини-структура:
- что сделал сам чтобы решить проблему
- какой результат получил когда сам решал
- на каком именно из этапов нужна помощь
- твои ожидания от собеседника - что он должен сделать в идеале чтобы помочь тебе
Конечно, это идельный мир, но почему бы не сделать жизнь своего коллеги проще и получить респект
Ну и понятно, что если хочешь узнать время у прохожего то такое не нужно 🙂
P.S. пока будешь писать такой вопрос еще и ответ найдешь в 60% случаев
🌭39❤🔥11🍓1
Как я просил своё первое повышение...
На первую свою стажировку я попал осенью на 3 курсе вуза — это была локальная контора в Нижнем Новгороде
Прошёл в районе 5 этапов собесов
Ииии
Меня наняли 🙂
Было прикольно — мы писали разные программки
1. Zip-архиватор собственный
2. Анимацию поиска кратчайшего пути
3. ...
И всё это наC++ . Ухх — были же времена...
Как раз зимой я прошёл собес в Huawei и мне предложили аж90 000. На эти деньги я мог оплатить своё обучение в вузе, оплатить квартиру, есть что-то кроме макарон и не просить больше у родителей деньги
Это — просто мечта...
Я пришёл радостный к своему работодателю и сказал: вот так получается, что предложили 90 000, мб поднимем с 35 000 до чего-то большего, я готов остаться но мб есть шанс со стажировки перейти сразу к рабочим задачам - я же и так лучше всех справляюсь...
Меня осадили и сказали, мол — разработка не про деньги, и давай-ка, дружок, ты доучись на стажировке
Когда я отказался просто потому, что на 35 000 не могу нормальной еды себе купить, я получил:
"Всё-таки нанимать тебя было ошибкой, лучше бы мы взяли кого-то другого..."
Это был первый удар под дых
У меня аж слёзы покатились
Спустя время это забавная история, которую могу писать в ТГ канальчике
Мораль каждый сам найдёт свою. А я пойду ёлку наряжать и вешать на неё украшения. Елка то сама себя не украсит
А если нашел для себя пост интересным бахни 🌭, а с меня продолжение истории...
На первую свою стажировку я попал осенью на 3 курсе вуза — это была локальная контора в Нижнем Новгороде
Прошёл в районе 5 этапов собесов
Ииии
Было прикольно — мы писали разные программки
1. Zip-архиватор собственный
2. Анимацию поиска кратчайшего пути
3. ...
И всё это на
Как раз зимой я прошёл собес в Huawei и мне предложили аж
Это — просто мечта...
Я пришёл радостный к своему работодателю и сказал: вот так получается, что предложили 90 000, мб поднимем с 35 000 до чего-то большего, я готов остаться но мб есть шанс со стажировки перейти сразу к рабочим задачам - я же и так лучше всех справляюсь...
Меня осадили и сказали
Когда я отказался просто потому, что на 35 000 не могу нормальной еды себе купить, я получил:
У меня аж слёзы покатились
Спустя время это забавная история, которую могу писать в ТГ канальчике
Мораль каждый сам найдёт свою. А я пойду ёлку наряжать и вешать на неё украшения. Елка то сама себя не украсит
А если нашел для себя пост интересным бахни 🌭, а с меня продолжение истории...
🌭128🤣7❤🔥2
С наступившим 2026!
Желаю, чтобы в 2026 пайплайны бегали в 2 раза быстрее
Чтобы деплой раскатывался как икра по маслу, SLA не нарушался, а метрики были зелёными как корнишоны в банке
Ну и конечно, чтобы ты выучил алгосы и рвал всех на собесах!
А карьера росла как запас оливье перед новым годом
В общем, с НГ!
Желаю, чтобы в 2026 пайплайны бегали в 2 раза быстрее
Чтобы деплой раскатывался как икра по маслу, SLA не нарушался, а метрики были зелёными как корнишоны в банке
Ну и конечно, чтобы ты выучил алгосы и рвал всех на собесах!
А карьера росла как запас оливье перед новым годом
В общем, с НГ!
🌭55🍓6❤🔥5
Как я получил повышение ЗП
По итогам переговоров с местной конторкой из поста выше я таки сменил место на Huawei
Там меня ждал один из самых крутых проектов, на котором пработал примерно год
Разрабатывал параллельный алгоритм на графах поиска критического пути
В общем-то те самые алгосы))) Тогда-то я их и полюбил X2
24 на 7 я думал, как чёрт побери ускорить уже имеющиеся алгоритмы, и в итоге-то получилось!
Даже статейку написали...
Но пост немного о другом. ЗП-шка там у меня была уже в районе 100-ки, и я хотел повышение, а тут Яндекс заманьячил с офером интересным и цифрой в X3...
У меня челюсть отвалилась
Такие деньги для меня только чуваки с ютуба зарабатывали
------
Так вот, когда я показал офер, меня ждал разговор с руководителем. Предлагали меньше, но меня смутило другое...
В процессе разговора я услышал такое:
На что я ответил:
(И это была правда. Мне на каждом дейлике говорили что я красавчик и это капец как подстегивало меня)
Пронзительное молчание на 10 или 15 секунд... А потом:
И вот так я попал в Яндекс на X3 (икс три)
Интересно будет в комментах почитать ваши истории повышения...
P.S. я максимально спокойно отношусь к тому, что было. Ну было и было, никакой злобы или обиды нет
Ну и бахни 🌭если зацепило - буду больше такого контента делать, если зайдет
По итогам переговоров с местной конторкой из поста выше я таки сменил место на Huawei
Там меня ждал один из самых крутых проектов, на котором пработал примерно год
Разрабатывал параллельный алгоритм на графах поиска критического пути
В общем-то те самые алгосы))) Тогда-то я их и полюбил X2
24 на 7 я думал, как чёрт побери ускорить уже имеющиеся алгоритмы, и в итоге-то получилось!
Даже статейку написали...
Но пост немного о другом. ЗП-шка там у меня была уже в районе 100-ки, и я хотел повышение, а тут Яндекс заманьячил с офером интересным и цифрой в X3...
У меня челюсть отвалилась
------
Так вот, когда я показал офер, меня ждал разговор с руководителем. Предлагали меньше, но меня смутило другое...
В процессе разговора я услышал такое:
"Макс, да куда тебе в Москву, тебя же с говном съедят там..."
На что я ответил:
"Мне всегда нравилось в тебе, что ты в меня верил..."
(И это была правда. Мне на каждом дейлике говорили что я красавчик и это капец как подстегивало меня)
Пронзительное молчание на 10 или 15 секунд... А потом:
"Ну что, желаю тебе удачи!"
И вот так я попал в Яндекс на X3 (икс три)
P.S. я максимально спокойно отношусь к тому, что было. Ну было и было, никакой злобы или обиды нет
🌭100🍓3🤣1
А какой сортировкой сортировать то будешь, милок?
Как же интервьюерам периодически хочется за сортировки поспрашивать
Ты ещё только "nums.sor..." пишешь, а уже вопросик
— А это оптимально?
— Какая сортировка внутри?
— А может можно без сортировки?
Тут нужно ультовать сходу, чтобы тебя не похоронили этими вопросами
Тут всё изи
Есть такие категории сортировок:
- Квадратичные
- Линейно-логарифмические
- Условно линейные
- Гибриды
Квадратичные — тут из полезных только Insertion Sort. Применяется для сортировки небольших массивов (до 32 элементов) и зачастую используется как часть гибридных алгоритмов
Линейно-логарифмические:
- Quick Sort
- Merge Sort
- Heap Sort
Просто база — тут каждую сортировку желательно знать. Выделю только Quick Sort — капец быстрый на практике, но худшая оценка O(n²), а средняя O(n·log n)
Условно линейные:
- Count Sort
- Bucket Sort
- Radix Sort (LSD/MSD)
Count Sort — работает за O(n) только если разных чиселок очень мало. Например, на 1 000 000 элементов всего 1000 уникальных
Bucket Sort — если все элементыравномерно распределены от минимального к максимальному , то O(n), иначе суши вёсла
Radix Sort — тут O(n·k), где k — число разрядов.Для 32-битных чисел k фиксирован, так что на практике O(n)
⸻
А теперь представь: выдаёшь вот такую базу по сортировкам
Потом тебя спрашивают про Quick Sort и худший случай
А ты такой:
— Выдал несколько алгоритмов выбора pivot
— Рассказал вскользь про Median of Medians, который ультра хорош на словах, и подсветил его нюансы
— Рассказал алгоритмы партиционирования Хоара и Ломуто
— Сравнил их
— Сказал как оптимизировать глубину рекурсии до log(n)
— Указал почему не будет stack overflow
— Гибридом докинул Insertion Sort
И просто уничтожил интервьюера!
Его лицо это просто 🙂🙂🙂🙂 ибо он сам половины не знал
⸻
Все праздники собирал инфу и выдал её всем, кто уже в сообществе algocode.io
курс по сортировкам
Чёрт побери, я прям мега советую посмотреть — раз и навсегда поймёшь все оптимизации и на практике их реализуешь
Учишь 1 раз, а ультуешь по интервьюерам на каждом алго-собесе
👉 https://clck.ru/3RFtKv
Как же интервьюерам периодически хочется за сортировки поспрашивать
Ты ещё только "nums.sor..." пишешь, а уже вопросик
— А это оптимально?
— Какая сортировка внутри?
— А может можно без сортировки?
Тут нужно ультовать сходу, чтобы тебя не похоронили этими вопросами
Тут всё изи
Есть такие категории сортировок:
- Линейно-логарифмические
- Условно линейные
- Гибриды
Квадратичные — тут из полезных только Insertion Sort. Применяется для сортировки небольших массивов (до 32 элементов) и зачастую используется как часть гибридных алгоритмов
Линейно-логарифмические:
- Quick Sort
- Merge Sort
- Heap Sort
Просто база — тут каждую сортировку желательно знать. Выделю только Quick Sort — капец быстрый на практике, но худшая оценка O(n²), а средняя O(n·log n)
Условно линейные:
- Count Sort
- Bucket Sort
- Radix Sort (LSD/MSD)
Count Sort — работает за O(n) только если
Bucket Sort — если все элементы
Radix Sort — тут O(n·k), где k — число разрядов.
⸻
А теперь представь: выдаёшь вот такую базу по сортировкам
Потом тебя спрашивают про Quick Sort и худший случай
А ты такой:
— Выдал несколько алгоритмов выбора pivot
— Рассказал вскользь про Median of Medians, который ультра хорош на словах, и подсветил его нюансы
— Рассказал алгоритмы партиционирования Хоара и Ломуто
— Сравнил их
— Сказал как оптимизировать глубину рекурсии до log(n)
— Указал почему не будет stack overflow
— Гибридом докинул Insertion Sort
Его лицо это просто 🙂🙂🙂🙂 ибо он сам половины не знал
⸻
Все праздники собирал инфу и выдал её всем, кто уже в сообществе algocode.io
Чёрт побери, я прям мега советую посмотреть — раз и навсегда поймёшь все оптимизации и на практике их реализуешь
👉 https://clck.ru/3RFtKv
🌭42
Худший момент на алгособесе для тебя — это когда...
Anonymous Poll
63%
Смотришь на задачу — в голове пусто
27%
Решал месяц назад — не можешь вспомнить как
20%
Код написал, но не смог найти ошибку и не уложился по времени
27%
Интервьюер говорит нужно оптимальнее - ты не знаешь куда копать
4%
Другое
Актуальны ли алгоритмы в эпоху AI?
Недавно кореша провели эксперимент: дали нейронке порешать Codeforces (площадка для олимпиадной проги)
Как же жёстко онаобосралась — с горем пополам одну задачу, и то фиг знает с какой попытки. Так что рейтинг мой кореш слил)
Заменить даже начинающего олимпиадника не получилось
---
Но может алгосы в целом сейчас не нужны?
Возможно, нонайм-то не изменился — всё ещё есть алго-секция
В 2036 может что-то и поменяют, но я сильно сомневаюсь, что уберут алгоритмы и структуры данных
И пока все думают, что их учить не надо, можно на изи залутать несколько x2 офферов
P.S. лично для меня алгоритмы — это разминка для ума. Я буквально тупею на глазах и теряю скорость мысли, если не практикуюсь
Так что всё ещё считаю это беспроигрышной инвестицией времени
Недавно кореша провели эксперимент: дали нейронке порешать Codeforces (площадка для олимпиадной проги)
Как же жёстко она
Заменить даже начинающего олимпиадника не получилось
---
Но может алгосы в целом сейчас не нужны?
Возможно, но
В 2036 может что-то и поменяют, но я сильно сомневаюсь, что уберут алгоритмы и структуры данных
И пока все думают, что их учить не надо, можно на изи залутать несколько x2 офферов
P.S. лично для меня алгоритмы — это разминка для ума. Я буквально тупею на глазах и теряю скорость мысли, если не практикуюсь
Так что всё ещё считаю это беспроигрышной инвестицией времени
🌭49🤣3
Как я с дуру свой фильтр Блюма написал для ClickHouse
В общем, была задача оптимизировать поиск по колонке типа MAP<STRING, STRING> в ClickHouse
Нужно было получить все строке в которых в колонке типа MAP есть ключ XYZ (ключ передается извне, а по нему записи выдаем)
Весь прикол в том что MAP — это нифига не MAP
По сути это массив из пар, и чтобы найти запись нужен full scan
Ну я то не лыком шит!
Попробовал несколько вариантов встроенных в ClickHouse но не получил нужного перфоманса от слова совсем...
А нагрузочка у насебейшая (очень большая)...
Одним из вариантов что пробовал — был фильтр Блюма, который хоть как-то подавал надежды
Фильтр позволяет понять что элемента нет со 100% гарантией, но при этом он не может сказать что элемент точно есть
Встроенный фильтр жрал ресурсы и почти не ускорил запрос
НО! Я знал как оно устроено под капотом и не верил что оно так медленно работает
Тогда посчитал уникальные ключи — их ~1000, у каждого ~1000 значений
Написал свой "фильтр Блюма" на 1024 бита, где каждый ключ мапится в свой бит. И создал несколько колонок INT64 + самописную хеш-функцию, которая всегда 1 слово мапит в 1 конкретный бит а если слова нет в списке, то попадаем в последний бит, который всегда 0
Эврика! Скорость x2-x3. Но CPU вырос x1.5, что печалило...
И тут приходит коллега: "А попробуй завести 1000 колонок — на каждый ключ по LowCardinality(String)"
Я оч долго сопротивлялся, но попробовал ИИИИИ
Размотало мой фильтр Блюма просто в пух и прах - x30 по скорости. CPU почти не вырос
Мораль: нужно еще глубже алгосы учить, чтобы ускорить LowCardinality и размотать коллегу 😂😂😂
А вообще, респект Жене, а то бы так завез этого монстра
А тут можно почитать про магический LowCardinality
https://clickhouse.com/docs/sql-reference/data-types/lowcardinality
P.S. некоторые детали опустил, но, надеюсь, было +- понятно
Ну и бахни 🌭 если тоже пилил свой велосипед
В общем, была задача оптимизировать поиск по колонке типа MAP<STRING, STRING> в ClickHouse
Нужно было получить все строке в которых в колонке типа MAP есть ключ XYZ (ключ передается извне, а по нему записи выдаем)
Весь прикол в том что MAP — это нифига не MAP
По сути это массив из пар, и чтобы найти запись нужен full scan
Ну я то не лыком шит!
Попробовал несколько вариантов встроенных в ClickHouse но не получил нужного перфоманса от слова совсем...
А нагрузочка у нас
Одним из вариантов что пробовал — был фильтр Блюма, который хоть как-то подавал надежды
Фильтр позволяет понять что элемента нет со 100% гарантией, но при этом он не может сказать что элемент точно есть
Суть: битовая маска, скажем на 8 бит [0,0,0,0,0,0,0,0]
При вставке хешируем ключ несколькими функциями и ставим 1 в нужные биты [0,0,1,0,0,0,1,0]
При поиске — тоже хешируем. Все биты единицы? Возможно, ключ есть. Попали в 0? Точно нет, full scan не нужен
Встроенный фильтр жрал ресурсы и почти не ускорил запрос
НО! Я знал как оно устроено под капотом и не верил что оно так медленно работает
Тогда посчитал уникальные ключи — их ~1000, у каждого ~1000 значений
Написал свой "фильтр Блюма" на 1024 бита, где каждый ключ мапится в свой бит. И создал несколько колонок INT64 + самописную хеш-функцию, которая всегда 1 слово мапит в 1 конкретный бит а если слова нет в списке, то попадаем в последний бит, который всегда 0
Эврика! Скорость x2-x3. Но CPU вырос x1.5, что печалило...
И тут приходит коллега: "А попробуй завести 1000 колонок — на каждый ключ по LowCardinality(String)"
Я оч долго сопротивлялся, но попробовал ИИИИИ
Мораль: нужно еще глубже алгосы учить, чтобы ускорить LowCardinality и размотать коллегу 😂😂😂
А вообще, респект Жене, а то бы так завез этого монстра
А тут можно почитать про магический LowCardinality
P.S. некоторые детали опустил, но, надеюсь, было +- понятно
🌭61❤🔥2🤣1
AI убивает программистов, так что решил застолбить место на заводе...
Ладно, ладно
Гонял на экскурсию в VPRO посмотреть, как работает не IT-бизнес
И в конце у меня коронный вопрос для всех B2B: если бы мог, ты бы сменил на B2C?
100% конверсия в ответ — ДА
Но когда спрашиваю B2C, сменили бы они на B2B — 90% конверсия в ДА 😂
В общем, я пришёл к выводу, что хорошо там, где нас нет
Что B2B сейчас в жопе, что B2C
Единственное, что спасает — критичность услуги для клиента бизнеса
Скажем, работать айтишником в условномкейтеринге — полное самоубийство: это первое, на чём начнут экономить в плохие времена
Так что настало время посмотреть на свою компанию и подумать: верите ли вы, что она сможет выстоять до 2030 с текущим положением дел?
Если нет— ну это, на собес сгоняйте)
Ладно, ладно
Гонял на экскурсию в VPRO посмотреть, как работает не IT-бизнес
И в конце у меня коронный вопрос для всех B2B: если бы мог, ты бы сменил на B2C?
Но когда спрашиваю B2C, сменили бы они на B2B — 90% конверсия в ДА 😂
В общем, я пришёл к выводу, что хорошо там, где нас нет
Что B2B сейчас в жопе, что B2C
Единственное, что спасает — критичность услуги для клиента бизнеса
Скажем, работать айтишником в условном
Так что настало время посмотреть на свою компанию и подумать: верите ли вы, что она сможет выстоять до 2030 с текущим положением дел?
Если нет
🌭39❤🔥2
Капец интересно стало: пригодилось ли тебе знание устройства сортировок на алго-собесе?
Anonymous Poll
12%
Да
29%
Нет
44%
Не ходил на алго-собесы
16%
Я их и не знаю)
🤣12🌭2
Гонял мой кореш тут недавно на собес
Дали офигательную задачку! В которой нужно самому подумать, а не вспомнить какой-то хитрый метод...
Дан массив строк со знаками + * и числами — нужно вычислить значение
НО!
Сделать это нужно за O(1) по дополнительной памяти
---
Бился он с ней минут 30 и таки решил, потом после собеса сказал мне, что еле решил и чёт прям громоздко у него получилось
А решение всего на +-10 строк
Тут главная фишка в prev_multiply
Если скажем пример 1*2*3+4+5*6, то он будет принимать такие значения: 6, потом 4, потом 30
И при каждом обновлении добавляет всё в result
Вот и получаем 6 + 4 + 30 = 40
А внутри цикла проходимся по нечетным позициям только, потому что там всегда стоят знаки
---
Получилась классика жанра — кореш видит решение и всё очевидно, но на собесе наговнокодил 😂
В то же время интервьюер:дает одну и ту же задачу и 80% гавнокодят
Вот такой круговорот ..кода в природе
P.S. Го соберем 50 🌭 по фану)
Дали офигательную задачку! В которой нужно самому подумать, а не вспомнить какой-то хитрый метод...
Дан массив строк со знаками + * и числами — нужно вычислить значение
НО!
---
Бился он с ней минут 30 и таки решил, потом после собеса сказал мне, что еле решил и чёт прям громоздко у него получилось
А решение всего на +-10 строк
from typing import List
def calculate(s: List[str]) -> int:
result = 0
prev_multiply = int(s[0])
for i in range(1, len(s), 2):
if s[i] == "*":
prev_multiply *= int(s[i + 1])
elif s[i] == "+":
result += prev_multiply
prev_multiply = int(s[i + 1])
result += prev_multiply
return result
Тут главная фишка в prev_multiply
Если скажем пример 1*2*3+4+5*6, то он будет принимать такие значения: 6, потом 4, потом 30
И при каждом обновлении добавляет всё в result
Вот и получаем 6 + 4 + 30 = 40
---
Получилась классика жанра — кореш видит решение и всё очевидно, но на собесе наговнокодил 😂
В то же время интервьюер:
P.S. Го соберем 50 🌭 по фану)
🌭122🤣7❤🔥2🍓1
Набор в группу подготовки к собесам
Что делаем:
- Даём свежие задачи с реальных собеседований
- Ты решаешь → ревью → доводим решение до эталонного
- Созвоны в мини-группах по 3-4 человека
Пример задач, которые решаем:
- Backend
- ML
(В основном решаем задачи с новой секции Яндекса - Advanced Code и от VK - там похожая секция есть)
Кто ведёт:
- Cross review делают Middle+ разработчики из группы
- Группу лидит Senior+
Бонусы:
- Премиум на algocode.io на время участия (+ задачи в раннем доступе)
- Консультации по карьере / System Design / алгоритмам
- Если ты в Москве — офлайн-сходки раз в месяц
Условия:
Бесплатно. Мы собираем группу сильных разработчиков — за счёт этого cross review получается качественным. Вы обмениваетесь экспертизой и готовитесь к собесам, а мы добавляем разобранный контент на платформу. Win-win
———
Отзыв от Саши:
Кого ищем:
- Middle+ с продакшен-опытом
- Есть опыт прохождения собесов
- Желание прокачивать многопоточку (для backend направлений) - много задач с ней решаем
- 4-5 часов в неделю на подготовку
Направления (можно выбрать любое):
- Golang
- C++
- ML
- Python
- C#
———
👉 Если интересно
Пиши @SleeplessChallenger — пришлём мини-тестовое
Если что-то не понял, то уточнить так же можно у @SleeplessChallenger (отвечает в течении дня)
Что делаем:
- Даём свежие задачи с реальных собеседований
- Ты решаешь → ревью → доводим решение до эталонного
- Созвоны в мини-группах по 3-4 человека
Пример задач, которые решаем:
- Backend
- ML
(В основном решаем задачи с новой секции Яндекса - Advanced Code и от VK - там похожая секция есть)
Кто ведёт:
- Cross review делают Middle+ разработчики из группы
- Группу лидит Senior+
Бонусы:
- Премиум на algocode.io на время участия (+ задачи в раннем доступе)
- Консультации по карьере / System Design / алгоритмам
- Если ты в Москве — офлайн-сходки раз в месяц
Условия:
Бесплатно. Мы собираем группу сильных разработчиков — за счёт этого cross review получается качественным. Вы обмениваетесь экспертизой и готовитесь к собесам, а мы добавляем разобранный контент на платформу. Win-win
———
Отзыв от Саши:
Тебе, Макс, отдельное спасибо, что делаешь классную платформу и за возможность в этом поучаствовать, а также что собрал и организовал нас) Для меня участие было полезным, для себя я выполнил свои цели на 100%)) 1. не просел навык по Go после рута; 2. занетворкал; 3. сменил работу на Бигтех)Отзыв Алекса:
Я же как раз к Яндексу готовился, поэтому отозвался. Прикольные задачки теперь решаю, прокачиваюсь потихоньку. Ревьюил ты вначале детально, накидывал много, я тогда хорошо многопоточку подтянул. Просто приятная небольшая компания у нас собралась.———
Кого ищем:
- Middle+ с продакшен-опытом
- Есть опыт прохождения собесов
- Желание прокачивать многопоточку (для backend направлений) - много задач с ней решаем
- 4-5 часов в неделю на подготовку
Направления (можно выбрать любое):
- Golang
- C++
- ML
- Python
- C#
———
👉 Если интересно
Пиши @SleeplessChallenger — пришлём мини-тестовое
Если что-то не понял, то уточнить так же можно у @SleeplessChallenger (отвечает в течении дня)
Google Docs
Buffered producer/consumer
Нам нужно передать данные из некоторого источника (producer) некоторому потребителю (consumer). При этом источник отдает данные небольшими пачками (десятки записей), а потребитель оптимальнее работает с крупными батчами (тысячи записей). Реальный пример …
🌭16❤🔥3
Как алгоритмы сделали меня богатым
Первую работу я получил с трудом - это была локальная конторка в Нижнем Новгороде и на собесе они отметили мои знания по алгосам и решили меня взять
Радость была нереальная!
Но больше всего мне хотелось в BigTech -посмотреть на процессы, на крутых чуваков - и тогда я пособесился в Huawei и прошел!
Мне дали задачку на графы: до сих пор помню ее
И еще год я был в R&D команде, где разрабатывали параллельный алгоритм поиска критического пути на графах
Ну а потом Яндекс!
Никогда не забуду - было 3 алго-собеса и на всех я разваливал 2 задачки за 30-40 минут и всегда оставалось время - которое я всегда тратил на одно:поболтать с интервьюером про Яндекс
А через год Т-Банк
И снова алго-секция пройдена лучше всего. Помню, еще сокомандник пришел и сказал:
В общем, в начале своей карьеры я сделал ставку на алгоритмы и не пожалел - я получил офферы от всех компаний где мечтал работать (от Авито и заканчивая Яндексом)
Именно так и появилось сообщество algocode.io - я подумал, что могу передать свой опыт другим ребятам
Раньше это были курсы, но масштаб был не тот, а я хотел помочь как можно большему числу людей, а курсы такое сделать не позволяют
Да, я стал зарабатывать меньше, но буквально вчера прилетел очередной отзыв в ЛС
Но после такого не считаю, что стал беднее ни на грамм
2 задачи за 33 минуты - да он на 7 минут меня обогнал когда я в Яндекс собесился 😂 - просто красавчик!
Прям ностальгия накатила
В общем, я занимаюсь любимым делом, которое меня заряжает и считаю, что у каждого оно должно быть
А то как выжить во времена банковской ставки >10%
Все нервы ни к черту будут
Первую работу я получил с трудом - это была локальная конторка в Нижнем Новгороде и на собесе они отметили мои знания по алгосам и решили меня взять
Радость была нереальная!
Но больше всего мне хотелось в BigTech -
Мне дали задачку на графы: до сих пор помню ее
Нужно было посчитать число компонент связности и я решил ее и через DFS и BFS и еще оптимизации всякие порассказывалОффер прислали моментально!
И еще год я был в R&D команде, где разрабатывали параллельный алгоритм поиска критического пути на графах
Никогда не забуду - было 3 алго-собеса и на всех я разваливал 2 задачки за 30-40 минут и всегда оставалось время - которое я всегда тратил на одно:
А через год Т-Банк
И снова алго-секция пройдена лучше всего. Помню, еще сокомандник пришел и сказал:
видел у тебя за секцию Senior стоит - красавчик!
В общем, в начале своей карьеры я сделал ставку на алгоритмы и не пожалел - я получил офферы от всех компаний где мечтал работать (от Авито и заканчивая Яндексом)
Именно так и появилось сообщество algocode.io - я подумал, что могу передать свой опыт другим ребятам
Раньше это были курсы, но масштаб был не тот, а я хотел помочь как можно большему числу людей, а курсы такое сделать не позволяют
Да, я стал зарабатывать меньше, но буквально вчера прилетел очередной отзыв в ЛС
Макс, привет, хотел сказать тебе спасибо за твою платформу - подготовка реально приносит результат! В пн проходил алго-собес - решил 2 задачи из 2 за 33 минуты. Буду рекомендовать ребятам кто так же захочет в бигтех👍
Но после такого не считаю, что стал беднее ни на грамм
Прям ностальгия накатила
В общем, я занимаюсь любимым делом, которое меня заряжает и считаю, что у каждого оно должно быть
А то как выжить во времена банковской ставки >10%
Все нервы ни к черту будут
🌭64❤🔥15🤣2
Пеп, фа - как я провалил алго-секцию в Яндекс:
У меня было две попытки трудоустройства в красную компанию со стульями Herman Miller
Первый раз - самый лютый факап
Пришел на собес и было 2 задачи: первая сжать последовательность вида ([1,2,3,5,8,9] в "1-3,5,8-9")
Ее я щелкнул минут за 20
А вот вторая - лютейшая тогда для меня задачка на BST (бинарное дерево поиска)
Дан корень бинарного дерева. Нужно проверить, является ли дерево правильным бинарным деревом поиска.
8
/ \
3 10
/ \ \
1 6 14
/ \ /
4 7 13
Тут ответ будет true - все элементы в левом поддереве меньше текущего, а в правом - больше текущего
Например: 6-ка в левом поддереве 8 и в правом у тройки, значит 3 < 6 < 8
То что я там нагородил было вообще немыслимо - я хотел зафигачить итеративную реализацию
Бился я минут 40, пока интервьюер просто на меня смотрел и особо ничего не говорил
Я то рассказывал вслух, то молчал минут по 5-10
Он просто смотрел...
А когда время кончилось ушел... 😂
---
Я после собеса полетел сразу смотреть: вата фа пеп йоу
Шо за тема деревьев и почему я решаю олимпиадные задачки уже год а ее не встречал
Смотрю на решение а там:
f
Мое лицо -> 🤡
Решение в пару строк...
Потом буквально за неделю я прорешал задач 50 на leetcode и больше никогда не заваливался на деревьях
Но в тот момент меня могла спасти простая мысль: деревья в 95% случаев решаются рекурсией
И этого было бы достаточно
Именно поэтому первая тема которую добавил на algocode - были деревья
Я просто не хотел чтобы другие так же страдали
Да и стримов я больше всего посвятил деревьям
Вот, кстати, как раз по BST: https://www.youtube.com/watch?v=XGzBKj2HO30
Чтобы как я не опрофанились)
У меня было две попытки трудоустройства в красную компанию со стульями Herman Miller
Первый раз - самый лютый факап
Пришел на собес и было 2 задачи: первая сжать последовательность вида ([1,2,3,5,8,9] в "1-3,5,8-9")
Ее я щелкнул минут за 20
А вот вторая - лютейшая тогда для меня задачка на BST (бинарное дерево поиска)
Дан корень бинарного дерева. Нужно проверить, является ли дерево правильным бинарным деревом поиска.
8
/ \
3 10
/ \ \
1 6 14
/ \ /
4 7 13
Тут ответ будет true - все элементы в левом поддереве меньше текущего, а в правом - больше текущего
Например: 6-ка в левом поддереве 8 и в правом у тройки, значит 3 < 6 < 8
То что я там нагородил было вообще немыслимо - я хотел зафигачить итеративную реализацию
Бился я минут 40, пока интервьюер просто на меня смотрел и особо ничего не говорил
Я то рассказывал вслух, то молчал минут по 5-10
Он просто смотрел...
А когда время кончилось ушел... 😂
---
Я после собеса полетел сразу смотреть: вата фа пеп йоу
Шо за тема деревьев и почему я решаю олимпиадные задачки уже год а ее не встречал
Смотрю на решение а там:
f
rom typing import *
from algocodelib import TreeNode
def is_valid_bst(root: TreeNode) -> bool:
def is_valid(node: TreeNode, low: int, high: int) -> bool:
if node is None:
return True
if not(low < node.val < high):
return False
return (is_valid(node.left, low, node.val) and
is_valid(node.right, node.val, high))
return is_valid(root, float("-inf"), float("inf"))
Мое лицо -> 🤡
Решение в пару строк...
Но в тот момент меня могла спасти простая мысль: деревья в 95% случаев решаются рекурсией
И этого было бы достаточно
Именно поэтому первая тема которую добавил на algocode - были деревья
Я просто не хотел чтобы другие так же страдали
Да и стримов я больше всего посвятил деревьям
Вот, кстати, как раз по BST: https://www.youtube.com/watch?v=XGzBKj2HO30
Чтобы как я не опрофанились)
❤🔥31🌭20
Сколько знаешь способов поменять 2 инта местами?
Способ 1 - нормальный человек
tmp = a
a = b
b = tmp
Способ 2 - учит алгоритмы год
a = a + b
b = a - b
a = a - b
# a = 3, b = 5
# a = 8
# b = 3
# a = 5
Способ 3 - учит алгоритмы с детства
Работает как верхний, но через xor
a = a ^ b
b = a ^ b
a = a ^ b
Способ 4 - бог здравого смысла
a, b = b, a
---
P.S. на собесе пару раз понтовался этим, так что забирай)
Способ 1 - нормальный человек
a = b
b = tmp
Способ 2 - учит алгоритмы год
b = a - b
a = a - b
# a = 8
Способ 3 - учит алгоритмы с детства
b = a ^ b
a = a ^ b
Способ 4 - бог здравого смысла
---
P.S. на собесе пару раз понтовался этим, так что забирай)
🌭65❤🔥2
На сколько полезен blind75?
blind75 - один из популярных списков задач, с которых советуют начать решать leetcode
Я его сравнил с тем, что спрашивают в Российском Big Tech прямо сейчас и делюсь результатами
3+ RU BigTech сейчас:
- Слияние интервалов (algocode | leetcode)
- Разворот связного списка (algocode | leetcode)
2-ух RU BigTech сейчас:
- Правильная последовательность скобок (algocode | leetcode)
- Удаление с N-ого с конца (algocode | leetcode)
- Поиск в сдвинутом массиве (algocode | leetcode)
- Топ К частых элементов (algocode | leetcode)
- Число островов (algocode | leetcode)
- K-ый наименьший в BST (algocode | leetcode)
- Валидная анаграмма (algocode | leetcode)
И еще 12 задач встречаются в 1 BigTech
Итого: 21/75
В целом, неплохо
---
По последнему тренду заметно, что наши бигтехи придумывают свои задачи
Если раньше все брали из Яндекса, то теперь прям свои делают в основном
Пул задач размывается
Поэтому сейчас фокусируемся с командой на конкретных компаниях и подготовке к собесам ко всем секциям
Вчера буквально закончил задачки Яндекса по алгосам обновлять так что дальше Advanced Code и секция про найм
P.S. активный пул Яндекса прям сужают,но сами задачи уже оригинальные, а не просто с leetcode
blind75 - один из популярных списков задач, с которых советуют начать решать leetcode
Я его сравнил с тем, что спрашивают в Российском Big Tech прямо сейчас и делюсь результатами
3+ RU BigTech сейчас:
- Слияние интервалов (algocode | leetcode)
- Разворот связного списка (algocode | leetcode)
2-ух RU BigTech сейчас:
- Правильная последовательность скобок (algocode | leetcode)
- Удаление с N-ого с конца (algocode | leetcode)
- Поиск в сдвинутом массиве (algocode | leetcode)
- Топ К частых элементов (algocode | leetcode)
- Число островов (algocode | leetcode)
- K-ый наименьший в BST (algocode | leetcode)
- Валидная анаграмма (algocode | leetcode)
Итого: 21/75
В целом, неплохо
---
По последнему тренду заметно, что наши бигтехи придумывают свои задачи
Если раньше все брали из Яндекса, то теперь прям свои делают в основном
Пул задач размывается
Поэтому сейчас фокусируемся с командой на конкретных компаниях и подготовке к собесам ко всем секциям
Вчера буквально закончил задачки Яндекса по алгосам обновлять так что дальше Advanced Code и секция про найм
P.S. активный пул Яндекса прям сужают,
❤🔥21🌭3
Очередь кандидатов в Яндекс длиннее пробки на МКАДе
Сейчас в Яндексе такие тех-секции для backend:
• Advanced code
• Алгоритмы
• System Design
• Tech Deep Dive
Так вот, даже если ты прошёл advanced code — ЖДИ 2–3 НЕДЕЛИ МИНИМУМ чтобы пройти алгосы!
Мне стало интересно, откуда такое явление, и поговорил с корешами оттуда
В общем, такое саммари:
Раньше было 3 алгосекции, и чтобы проводить финальную (3-ю алго-секцию), нужно было проходить доп. обучение и сдавать экзамен
Обучение — до 6 месяцев
А сейчас секция одна, и проводят ее ТОЛЬКО те, кто проводил последнюю и число интервьюеров резко сократилось...
Так что стоять так ещё минимум 3–4 месяца
Сейчас в Яндексе такие тех-секции для backend:
• Advanced code
• Алгоритмы
• System Design
• Tech Deep Dive
Так вот, даже если ты прошёл advanced code — ЖДИ 2–3 НЕДЕЛИ МИНИМУМ чтобы пройти алгосы!
Мне стало интересно, откуда такое явление, и поговорил с корешами оттуда
В общем, такое саммари:
Раньше было 3 алгосекции, и чтобы проводить финальную (3-ю алго-секцию), нужно было проходить доп. обучение и сдавать экзамен
Обучение — до 6 месяцев
А сейчас секция одна, и проводят ее ТОЛЬКО те, кто проводил последнюю и число интервьюеров резко сократилось...
Так что стоять так ещё минимум 3–4 месяца
🤣23🌭4🍓2
Ни*уя «Плавающее окно» — это не паттерн!
Характеристики паттерна:
1. Есть явные green flags.
2. Есть чёткая структура кода.
3. Есть типовая Big O.
4. Есть конкретные 1–2 проблемы, над которыми нужно думать, чтобы решить задачу этим паттерном.
Плавающее окно — это тема, в которой есть 3 базовых паттерна:
• плавающее окно фиксированной длины
• непересекающиеся окна
• пересекающиеся окна
Каждый из них имеет такие 4 чёткие характеристики
Если этих характеристик нет - это просто общий подход, но не паттерн
—-
Сейчас готовлю большой видос на YouTube про паттерны по всем темам.
А для ребят из сообщества сделаю эксклюзив — глубокое погружение во всю систему, чтобы с первого сабмита все задачки решали
Самое прикольное во всей системе, которую собираю — это фреймворки
Фреймворк — это простая блок-схема: идёшь по ней, отвечая «да» или «нет», и понимаешь, какой паттерн использовать
В общем, готовлю для вас большое обновление! Скоро будет на YouTube и в сообществе!
Бахни 🌭 - гарантированно ускоряет выход контента!
Характеристики паттерна:
1. Есть явные green flags.
2. Есть чёткая структура кода.
3. Есть типовая Big O.
4. Есть конкретные 1–2 проблемы, над которыми нужно думать, чтобы решить задачу этим паттерном.
Плавающее окно — это тема, в которой есть 3 базовых паттерна:
• плавающее окно фиксированной длины
• непересекающиеся окна
• пересекающиеся окна
Каждый из них имеет такие 4 чёткие характеристики
Если этих характеристик нет - это просто общий подход, но не паттерн
—-
Сейчас готовлю большой видос на YouTube про паттерны по всем темам.
А для ребят из сообщества сделаю эксклюзив — глубокое погружение во всю систему, чтобы с первого сабмита все задачки решали
Самое прикольное во всей системе, которую собираю — это фреймворки
Фреймворк — это простая блок-схема: идёшь по ней, отвечая «да» или «нет», и понимаешь, какой паттерн использовать
В общем, готовлю для вас большое обновление! Скоро будет на YouTube и в сообществе!
Бахни 🌭 - гарантированно ускоряет выход контента!
🌭146🍓1
Всем, кто собесится в Авито, посвящается!
В 2025 году Авито решили не проводить классическую алго-секцию
Теперь у вас НЕ 2 АЛГО-ЗАДАЧКИ, А ЦЕЛЫХ 5
В общем, будут задачки наваливать, пока не начнешь просить пощады или не кончится 60 минут
НО! Зато сами задачи простые
Можно зайти и потренироваться в Avito Code, чтобы прям обстановка была 1 в 1 как на собесе
Ну и подгончик в виде парочки задач
Мне нравится, куда идёт Авито, потому что сам провожу секцию похожим образом, когда нанимаю в algocode, но только я даю 20 задачек, а не 5, но без написания кода
Ставь 🌭, если хочешь больше таких подгонов
P.S. вот накидали лайков на прошлом посте и я реально X2 с видосом ускорился. В начале марта будет на ютубе
В 2025 году Авито решили не проводить классическую алго-секцию
Теперь у вас НЕ 2 АЛГО-ЗАДАЧКИ, А ЦЕЛЫХ 5
В общем, будут задачки наваливать, пока не начнешь просить пощады или не кончится 60 минут
Можно зайти и потренироваться в Avito Code, чтобы прям обстановка была 1 в 1 как на собесе
Задача 1
У нас есть статистика по серверам по стабильности в процентах по бейзлайну 9999.
Необходимо вернуть распределение серверов по показаниям.
in: [{server:1, stability:99}, {server:2, stability:97}, {server:3, stability:34}, {server:4, stability:97}, {server:5, stability:97.1}]
out: { '34':[3], '97':[2,4], '99':[1], '97.1':[5] }
type Statistic struct { ServerID int; Stability float32 }
---
Задача 2
Необходимо проверить 2 строки, являются ли они анаграммами.
Если это так — вернуть true, иначе false. Буквы: латиница и кириллица.
in: s="anagram", t="nagaram" → out: true
in: s="кит", t="ток" → out: false
Мне нравится, куда идёт Авито, потому что сам провожу секцию похожим образом, когда нанимаю в algocode, но только я даю 20 задачек, а не 5, но без написания кода
Ставь 🌭, если хочешь больше таких подгонов
P.S. вот накидали лайков на прошлом посте и я реально X2 с видосом ускорился. В начале марта будет на ютубе
🌭133❤🔥11🍓3
Чертова задача! Решаю алго-задачи и забываю... Как не забывать?
100% в детстве ты учил формулу прямой в математике y = k*x + b
Вряд ли ты такой — ну все понятно, пойду ебашить практические задачки
Пришлось посмотреть пару примеров на пальцах
Некоторые объяснялись не один раз
----
Так и тут, бро)
С первого раза ничего не сработает
Нужно периодически возвращаться к прорешанным задачам, особенно если в первый раз их решал
----
Если бы сейчас я забыл все, что знаю в алгоритмах, и у меня был бы месяц для подготовки к собесу в Яндекс, и я должен его пройти или меня повесят
Я бы заперся в бункере со всеми задачами Яндекса с algocode и разбирал бы их по паттернам, тренируя нейронку
Ушатал свой мозг так, чтобы за секунду по условию видел
- паттерн
- ключевую проблему
- типичные оценки сложности
- код
И все это превратил бы в структурированный рассказ интервьюеру
---
Примерно с 4-5 прорешивания задачи я бы вышел на такой уровень, что знал задачи Яндекса лучше самого Яндекса
Так что не думай, что прорешал задачу 1 раз и потом не вспомнил — то все потеряно — еще ничего и не начиналось)
А потом возникнет магия...
Эта база закрепится в голове и новые задачи будут легко на нее настраиваться без особых усилий
100% в детстве ты учил формулу прямой в математике y = k*x + b
Вряд ли ты такой — ну все понятно, пойду ебашить практические задачки
Пришлось посмотреть пару примеров на пальцах
Некоторые объяснялись не один раз
----
Так и тут, бро)
С первого раза ничего не сработает
Нужно периодически возвращаться к прорешанным задачам, особенно если в первый раз их решал
----
Если бы сейчас я забыл все, что знаю в алгоритмах, и у меня был бы месяц для подготовки к собесу в Яндекс, и я должен его пройти или меня повесят
Я бы заперся в бункере со всеми задачами Яндекса с algocode и разбирал бы их по паттернам, тренируя нейронку
Ушатал свой мозг так, чтобы за секунду по условию видел
- паттерн
- ключевую проблему
- типичные оценки сложности
- код
И все это превратил бы в структурированный рассказ интервьюеру
---
Примерно с 4-5 прорешивания задачи я бы вышел на такой уровень, что знал задачи Яндекса лучше самого Яндекса
Так что не думай, что прорешал задачу 1 раз и потом не вспомнил — то все потеряно — еще ничего и не начиналось)
А потом возникнет магия...
Эта база закрепится в голове и новые задачи будут легко на нее настраиваться без особых усилий
❤🔥25🌭19🤣3