Вставляю за O(1) и в коней и в начало. Кто я?
Правильно — дек!
Как и обещал — раскрываю магию std::deque из C++ или как в деке поддержать доступ по индексу за O(1)
Если коротко — нам нужен chunked array
Идея гениальна:
Вместо одного большого массива используется массив указателей на маленькие массивы (чанки)
👉 Структура
Каждый chunk — небольшой массив фиксированного размера B
(обычно 8, 64 или 128 элементов — зависит от типа данных)
И дополнительно хранится таблица указателей на чанки:
👉 Начальное состояние
При создании deque выделяется первый chunk.
Кроме этого создаётся таблица указателей на чанки (chunks).
Она выделяется с запасом и стартует примерно с середины массива.
Это сделано специально, чтобы таблица могла расти и влево, и вправо.
Например:
Теперь внутри chunk выбирается позиция:
Это означает, что дек пустой.
head — позиция первого элемента
tail — позиция сразу после последнего элемента
То есть элементы всегда лежат в диапазоне:
🚨 КАПЕЦ ВАЖНО!!!
head и tail — это глобальные позиции в структуре,
а не индексы внутри конкретного чанка.
Поэтому head может указывать НЕ на начало чанка, а на любую позицию внутри него.
Крайние чанки часто заполнены лишь частично — и это нормально.
Например дек может выглядеть так:
Здесь:
head -> указывает на первый элемент A
tail -> указывает на позицию сразу после последнего элемента D
То есть элементы лежат в диапазоне:
👉 Как работает push_front (вставка в начало)
Вставка в начало — это просто сдвиг head влево.
1) Уменьшаем head
2) Теперь нужно понять в какой chunk писать
3) Если нужного chunk ещё нет — создаём
и кладём ссылку на него в таблицу chunks
4) Записываем элемент
Если раньше head стоял в начале чанка — после head -= 1
мы автоматически перейдём в предыдущий chunk.
Никакие элементы не двигаются.
❗ Что если chunk получился отрицательным?
Это значит, что мы ушли левее начала массива chunks.
В этом случае:
1) создаётся новый массив указателей большего размера
2) старые указатели копируются примерно в середину нового массива
(копируются только указатели, не сами данные)
3) таблица снова получает свободное место слева и справа
После этого продолжаем вставку.
Такая операция происходит редко, поэтому вставка остаётся амортизированно O(1).
👉 Как работает pop_front (удаление из начала)
Удаление — это просто сдвиг head вправо.
1) Находим текущую позицию
2) Читаем элемент
3) Сдвигаем начало
Если чанк слева полностью опустел — его можно удалить.
👉 Как получить i-й элемент (доступ по индексу)
Индекс i считается от текущего начала (head).
Сначала переводим его в абсолютную позицию:
Теперь находим чанк и позицию внутри него:
И получаем элемент:
Вся магия в том, что deque никогда не двигает элементы
Он двигает только head/tail и добавляет новые чанки при необходимости
ФУУХХХХ
Если просто долистал до конца, то красавчик! Ставлю тебе 🌭
Как и обещал — раскрываю магию std::deque из C++ или как в деке поддержать доступ по индексу за O(1)
Если коротко — нам нужен chunked array
Идея гениальна:
Вместо одного большого массива используется массив указателей на маленькие массивы (чанки)
👉 Структура
[ chunk1 ] [ chunk2 ] [ chunk3 ] [ chunk4 ]
↓ ↓ ↓ ↓
[..............] [..............] [..............] [..............]
Каждый chunk — небольшой массив фиксированного размера B
(обычно 8, 64 или 128 элементов — зависит от типа данных)
И дополнительно хранится таблица указателей на чанки:
chunks = [&chunk1, &chunk2, &chunk3, &chunk4]
👉 Начальное состояние
При создании deque выделяется первый chunk.
Кроме этого создаётся таблица указателей на чанки (chunks).
Она выделяется с запасом и стартует примерно с середины массива.
Это сделано специально, чтобы таблица могла расти и влево, и вправо.
Например:
chunks = [ _ _ _ &chunk1 _ _ _ ]
Теперь внутри chunk выбирается позиция:
head = tail
[ _ _ _ _ _ _ _ _ ]
↑
head, tail
Это означает, что дек пустой.
head — позиция первого элемента
tail — позиция сразу после последнего элемента
То есть элементы всегда лежат в диапазоне:
[ head ........ tail )
🚨 КАПЕЦ ВАЖНО!!!
head и tail — это глобальные позиции в структуре,
а не индексы внутри конкретного чанка.
Поэтому head может указывать НЕ на начало чанка, а на любую позицию внутри него.
Крайние чанки часто заполнены лишь частично — и это нормально.
Например дек может выглядеть так:
[ _ _ _ A B C D _ ]
↑ ↑
head tail
Здесь:
head -> указывает на первый элемент A
tail -> указывает на позицию сразу после последнего элемента D
То есть элементы лежат в диапазоне:
[ head ..... tail )
👉 Как работает push_front (вставка в начало)
Вставка в начало — это просто сдвиг head влево.
1) Уменьшаем head
head -= 1
2) Теперь нужно понять в какой chunk писать
chunk = head / m
offset = head % m
m — это размер чанка
3) Если нужного chunk ещё нет — создаём
и кладём ссылку на него в таблицу chunks
4) Записываем элемент
chunks[chunk][offset] = value
Если раньше head стоял в начале чанка — после head -= 1
мы автоматически перейдём в предыдущий chunk.
Никакие элементы не двигаются.
❗ Что если chunk получился отрицательным?
Это значит, что мы ушли левее начала массива chunks.
В этом случае:
1) создаётся новый массив указателей большего размера
2) старые указатели копируются примерно в середину нового массива
(копируются только указатели, не сами данные)
3) таблица снова получает свободное место слева и справа
После этого продолжаем вставку.
Такая операция происходит редко, поэтому вставка остаётся амортизированно O(1).
👉 Как работает pop_front (удаление из начала)
Удаление — это просто сдвиг head вправо.
1) Находим текущую позицию
chunk = head / m
offset = head % m
m — это размер чанка
2) Читаем элемент
value = chunks[chunk][offset]
3) Сдвигаем начало
head += 1
Если чанк слева полностью опустел — его можно удалить.
👉 Как получить i-й элемент (доступ по индексу)
Индекс i считается от текущего начала (head).
Сначала переводим его в абсолютную позицию:
pos = head + i
Теперь находим чанк и позицию внутри него:
chunk = pos / m
offset = pos % m
m — это размер чанка
И получаем элемент:
chunks[chunk][offset]
Вся магия в том, что deque никогда не двигает элементы
Он двигает только head/tail и добавляет новые чанки при необходимости
ФУУХХХХ
🌭65🍓1
Как я начал видеть бинарный поиск вообще везде
В общем, была у меня проблема с бинарным поиском - я мало где его вообще видел
Если задача начиналась не с "массив отсортирован, нужно проверить наличие числа target" - то считал, что бинарным поиском вообще не решить...
Полечилось это очень интересным приседанием
Я стал искать способ решить буквально каждую задачу бинарным поиском
Даже на таких задачах:
• Даны массивы строк и нужно найти общий префикс
• Проверка, что число — степень двойки
И прикол в том, что это реально помогло
ИМЕННО БЛАГОДАРЯ ТАКИМ ПРОСТЫМ ЗАДАЧАМ Я ЕГО И НАЧАЛ ЧУВСТВОВАТЬ - где можно, а где нельзя его применить
Как только я понял, что существует "бинарный поиск по ответу" и бинарить можно не только по индексам, то дело пошло прям намного быстрее
И как оказалось даже неоптимальное и странное решение задач может дать свои плоды
В моем случае научился видеть бинарный поиск и больше не могу его развидеть 🌭
В общем, была у меня проблема с бинарным поиском - я мало где его вообще видел
Если задача начиналась не с "массив отсортирован, нужно проверить наличие числа target" - то считал, что бинарным поиском вообще не решить...
Полечилось это очень интересным приседанием
Я стал искать способ решить буквально каждую задачу бинарным поиском
Даже на таких задачах:
• Даны массивы строк и нужно найти общий префикс
• Проверка, что число — степень двойки
И прикол в том, что это реально помогло
ИМЕННО БЛАГОДАРЯ ТАКИМ ПРОСТЫМ ЗАДАЧАМ Я ЕГО И НАЧАЛ ЧУВСТВОВАТЬ - где можно, а где нельзя его применить
Как только я понял, что существует "бинарный поиск по ответу" и бинарить можно не только по индексам, то дело пошло прям намного быстрее
И как оказалось даже неоптимальное и странное решение задач может дать свои плоды
В моем случае научился видеть бинарный поиск и больше не могу его развидеть 🌭
🌭45
Свеженькая задача Яндекса
Недавно ребята из сообщества algocode.io гоняли на собесы и принесли такую задачку
Именно на этом валятся
Идея решения такая
• строим хеш-таблицу graph, где ключ — город отправления, а значение — список городов прибытия (в 2 стороны строим путь)
• находим любую вершину, у которой в значении только 1 город — это будет точка старта
• обходим граф из стартовой точки, поддерживая visited и не посещая уже отмеченные точки
И в итоге получим такое решение
from typing import *
from collections import defaultdict
def route(tickets: List[List[str]]) -> List[str]:
# для каждого города храним список городов, с которыми он связан
graph = defaultdict(list)
for a, b in tickets:
graph[a].append(b)
graph[b].append(a)
# начальный город — тот, у которого ровно одна связь (край маршрута)
start = ""
for city, neighbors in graph.items():
if len(neighbors) == 1:
start = city
break
# восстанавливаем маршрут, отмечая посещённые города
result = [start]
visited = {start}
for _ in range(len(tickets)):
current = result[-1]
for neighbor in graph[current]:
if neighbor not in visited:
visited.add(neighbor)
result.append(neighbor)
break
return result
На leetcode не нашел такой задачки
Для тех кто уже в сообществе:решить можно самому ТУТ
Недавно ребята из сообщества algocode.io гоняли на собесы и принесли такую задачку
Дан список перелётов tickets, гдеВся сложность в том, что направления запутаны!
tickets[i] = [A, B] — перелёт между городами A и B (направление неизвестно).
Все перелёты относятся к одному путешествию:
• каждый следующий перелёт начинается в городе, где закончился предыдущий
• ни один город не посещается дважды
• начальный город ≠ конечному
Нужно восстановить порядок городов в маршруте.
Если есть несколько вариантов — вернуть любой.
Пример
Ввод:
tickets = [["Berlin","Rome"],["Berlin","Dubai"]]
Вывод:
["Dubai","Berlin","Rome"] или ["Rome","Berlin","Dubai"]
Именно на этом валятся
Идея решения такая
• строим хеш-таблицу graph, где ключ — город отправления, а значение — список городов прибытия (в 2 стороны строим путь)
• находим любую вершину, у которой в значении только 1 город — это будет точка старта
• обходим граф из стартовой точки, поддерживая visited и не посещая уже отмеченные точки
И в итоге получим такое решение
from collections import defaultdict
def route(tickets: List[List[str]]) -> List[str]:
# для каждого города храним список городов, с которыми он связан
graph = defaultdict(list)
for a, b in tickets:
graph[a].append(b)
graph[b].append(a)
# начальный город — тот, у которого ровно одна связь (край маршрута)
start = ""
for city, neighbors in graph.items():
if len(neighbors) == 1:
start = city
break
# восстанавливаем маршрут, отмечая посещённые города
result = [start]
visited = {start}
for _ in range(len(tickets)):
current = result[-1]
for neighbor in graph[current]:
if neighbor not in visited:
visited.add(neighbor)
result.append(neighbor)
break
return result
На leetcode не нашел такой задачки
Для тех кто уже в сообществе:
❤🔥22🌭6
Чисто BigTech классика
Я: надо доработать ручку, чтобы была политика CREATE OR UPDATE, а не только CREATE, на нашей стороне возникает сложная логика ретраев
Лид другой команды: можем доработать, но не раньше 25 марта, не можем отвлекаться на мелочи
Я: Так если это мелочи, мб доработаем быстро? Вам 1 if поставить, а с нашей стороны кратно большие доработки нужны + вы мейнтените эту дату, а нам доп хранение нужно, хендлинг ошибок и т д
Лид другой команды: Ок, в понедельник сделаем
Я: спасибо
—-
Тут главное не очковать, как говорится,и поддавать джазу где надо, а то так все строки можно провафлить)))
Бахни 🌭 если тоже такое было
Я: надо доработать ручку, чтобы была политика CREATE OR UPDATE, а не только CREATE, на нашей стороне возникает сложная логика ретраев
Лид другой команды: можем доработать, но не раньше 25 марта, не можем отвлекаться на мелочи
Я: Так если это мелочи, мб доработаем быстро? Вам 1 if поставить, а с нашей стороны кратно большие доработки нужны + вы мейнтените эту дату, а нам доп хранение нужно, хендлинг ошибок и т д
Лид другой команды: Ок, в понедельник сделаем
—-
Тут главное не очковать, как говорится,
🌭50🤣5
Кручу кручу педали кручу
ЗП ЗП ЗП, ЗП повысить хочу....
В посте кратко расскажу про этичность повышения ЗП через контр-офер
Другими словами...
Сгонял ты на собес и получил +20% к ЗП и теперь думаешь, как сказать лиду
Первым делом предлагаю написать тебе письмо с таким посылом
На мой взгляд важно показать 2 вещи:
1. Ты хочешь остаться (если конечно это так)
2. Ты готов обсуждать scope задач и обязанностей и просишь повышение не просто так
У меня у самого была такая ситуация, когда МТС предложил большую котлету, но уходить не хотел
Написал аналогичное письмо и через несколько месяцев +20% к ЗП прилетело вместе с повышением. Но и задачку я прям нормальную такую закрыл
P.S. меня просили показать офер, так что лучше тут не блефовать, особенно если текущая команда нравится
Ты в любом случае в плюсе от такого сообщения
- если руководитель не готов это обсуждать/моросит, то и дальше со всеми повышениями моросить будет
- если все гуд, то наметите четкий план
Ну а если писать страшно, то просто скидывай пост тим-лиду 😂
ЗП ЗП ЗП, ЗП повысить хочу....
В посте кратко расскажу про этичность повышения ЗП через контр-офер
Другими словами...
Сгонял ты на собес и получил +20% к ЗП и теперь думаешь, как сказать лиду
Первым делом предлагаю написать тебе письмо с таким посылом
Привет! Я ходил на собеседование и мне поступило интересное предложение от компании МТС
Мне нравится работать в команде и уходить не планировал
Хочу созвониться и обсудить, что могу сделать/какие задачи взять, чтобы приблизиться к предложенной сумме
Понимаю, что моментально повышения не получу, но мне важно знать есть ли такая возможность в принципе и что для этого нужно сделать
На мой взгляд важно показать 2 вещи:
1. Ты хочешь остаться (если конечно это так)
2. Ты готов обсуждать scope задач и обязанностей и просишь повышение не просто так
У меня у самого была такая ситуация, когда МТС предложил большую котлету, но уходить не хотел
Написал аналогичное письмо и через несколько месяцев +20% к ЗП прилетело вместе с повышением. Но и задачку я прям нормальную такую закрыл
P.S. меня просили показать офер, так что лучше тут не блефовать, особенно если текущая команда нравится
Ты в любом случае в плюсе от такого сообщения
- если руководитель не готов это обсуждать/моросит, то и дальше со всеми повышениями моросить будет
- если все гуд, то наметите четкий план
Ну а если писать страшно,
❤🔥20🌭5🍓1
Как на собесе выпендриваются олимпиадники
В общем то базовая задачка: дана строка из символов 'a' - 'z'. Нужно проверить можно ли сделать из строки палиндром
СНАЧАЛА СМОТРИМ БАЗУ, а потом самый сок
Идея решения: подсчитать число каждой буквы. Если все буквы имеют четное число - то точно палиндром
Если все четные кроме одного - тоже палиндром можем получить
В остальных случаях false
Базовое решение выглядит так
НО! Если ты олимпиадник, то вот эти все решения не для тебя
Ты на изи воспользуешься свойсвом ascii таблицы что все символы идут подряд и уместишь их в int32
ШАХ и МАТ!
Ну и это, 🌭 бахни, по-братски)
В общем то базовая задачка: дана строка из символов 'a' - 'z'. Нужно проверить можно ли сделать из строки палиндром
СНАЧАЛА СМОТРИМ БАЗУ, а потом самый сок
Идея решения: подсчитать число каждой буквы. Если все буквы имеют четное число - то точно палиндром
Если все четные кроме одного - тоже палиндром можем получить
В остальных случаях false
Базовое решение выглядит так
def can_be_palindrome(s: str) -> bool:
freq = {}
for ch in s:
freq[ch] = freq.get(ch, 0) + 1
odd_count = 0
for count in freq.values():
if count % 2 != 0:
odd_count += 1
return odd_count <= 1
НО! Если ты олимпиадник, то вот эти все решения не для тебя
Ты на изи воспользуешься свойсвом ascii таблицы что все символы идут подряд и уместишь их в int32
ШАХ и МАТ!
def can_be_palindrome(s: str) -> bool:
mask = 0
for ch in s:
bit = ord(ch) - ord('a')
mask ^= (1 << bit)
return mask == 0 or (mask & (mask - 1)) == 0
Ну и это, 🌭 бахни, по-братски)
🌭103🤣6❤🔥2🍓1
Как я возненавидел LINUX
4 курс универа. 5 дней до защиты курсача. 12 ночи. У меня windows ноут с ubuntu
Без перерыва фигачу курсач. Остается пара моментов допилить в коде, чтобы демо-версия работала...
И ТУТ КОМП ПРОСТО ВЫРУБАЕТСЯ
Я такой — эй братан, вставай
Нажимаю кнопку запуска
А он такой: у тебя место закончилось. И ТУТ Я ПРОСТО ВЫПАЛ
1) Я не могу включить ПК, потому что не хватает места
2) Чтобы почистить место — нужно его включить
ТАМ ДАЖЕ BIOS ЗАВИСАЛ!
Я перепробовал все лайфхаки интернета, чтобы его включить. Я буквально не мог спать — меня нереально трясло от мысли, что придется все переписывать за 5 дней
И тут я нахожу божественный совет, как зайти в консоль
Зайти-то я зашел… но прав не хватало на удаление даже обычных папок...
Но я нашел все же несколько файлов которые можно было редачить и перезаписал их на пустые
Я думал, что сейчас он включится — и я узнаю кто былин виновник что забил мне всю память
И что вы думаете?
ВСЮ ПАМЯТЬ СОЖРАЛ ЧЕРТОВ DOCKER
Я его почистил — и все стало работать
Через 2 недели я купил мак и в ubuntu больше не возвращался
Ну и бахни 🌭если тоже кайфуешь от мака
4 курс универа. 5 дней до защиты курсача. 12 ночи. У меня windows ноут с ubuntu
Без перерыва фигачу курсач. Остается пара моментов допилить в коде, чтобы демо-версия работала...
И ТУТ КОМП ПРОСТО ВЫРУБАЕТСЯ
Я такой — эй братан, вставай
Нажимаю кнопку запуска
А он такой: у тебя место закончилось. И ТУТ Я ПРОСТО ВЫПАЛ
1) Я не могу включить ПК, потому что не хватает места
2) Чтобы почистить место — нужно его включить
ТАМ ДАЖЕ BIOS ЗАВИСАЛ!
Я перепробовал все лайфхаки интернета, чтобы его включить. Я буквально не мог спать — меня нереально трясло от мысли, что придется все переписывать за 5 дней
И тут я нахожу божественный совет, как зайти в консоль
Зайти-то я зашел… но прав не хватало на удаление даже обычных папок...
Но я нашел все же несколько файлов которые можно было редачить и перезаписал их на пустые
Я думал, что сейчас он включится — и я узнаю кто былин виновник что забил мне всю память
И что вы думаете?
ВСЮ ПАМЯТЬ СОЖРАЛ ЧЕРТОВ DOCKER
Я его почистил — и все стало работать
Через 2 недели я купил мак и в ubuntu больше не возвращался
Ну и бахни 🌭если тоже кайфуешь от мака
🌭73🤣31❤🔥3🍓1
Как же бесят мега-ультра правила к паролям
К сервисам, где хранить-то особо и нечего
Создавал аккаунт Polar для мониторинга сердцебиения на кардиотренировке
И как будто оказался в password game
P.S. когда только запускал algocode — сам навертел пипец правил...
Больше так не делаю)
Ну и бахни 🌭 если тоже любишь усложнять
К сервисам, где хранить-то особо и нечего
Создавал аккаунт Polar для мониторинга сердцебиения на кардиотренировке
И как будто оказался в password game
P.S. когда только запускал algocode — сам навертел пипец правил...
Больше так не делаю)
Ну и бахни 🌭 если тоже любишь усложнять
🌭51🍓8❤🔥3
Ультимативный гайд по алгосам
За 2 дня 1500 лайков - я такого в жизни не видел 😂
Думал, меня любит только мама, а тут такое
Максимально советую к просмотру на канале тем, кто еще не видел
Если кратко, то разложил все алгоритмические паттерны от А до Я
За 2 дня 1500 лайков - я такого в жизни не видел 😂
Думал, меня любит только мама, а тут такое
Максимально советую к просмотру на канале тем, кто еще не видел
Если кратко, то разложил все алгоритмические паттерны от А до Я
🌭61❤🔥27🤣2
Я умножил свою ЗП на 3, когда попал в Яндекс
Переход из Huawei в Яндекс дал мне ЗП 300 000. В то время я смотрел YouTube, и везде говорили, что ЗП большие
Ну вот я и решил рискнуть
Все 3 алго-секции Яндекса я щёлкнул за 30–45 минут (да-да, в те времена ещё были 3 секции алгосов)
Я понимал, что даже вслух сказать «хочу 300 000» вызывало у меня улыбку до ушей
Поэтому я тренировался с зеркалом
Смотрел в него 5 секунд и говорил «хочу 300 000» — как я думал
А по факту просто 5 секунд сдерживал улыбку, а потом ржал 2 минуты 😂
P.S. это буквально могли быть 2 минуты смеха
Спустя несколько дней — усердно тренируясь по несколько подходов в день — я освоил эту технику
И мог гордо сказать: «хочу 300 000»
Сказал так уверенно, что дали 320 000 :))) В общем, я попросил, а они согласились.Вот я ах*ел в моменте
А если наберем 100 🌭, то напишу как я просил у Авито 600 000 с двумя годами опыта и что из этого вышло
Переход из Huawei в Яндекс дал мне ЗП 300 000. В то время я смотрел YouTube, и везде говорили, что ЗП большие
Ну вот я и решил рискнуть
Все 3 алго-секции Яндекса я щёлкнул за 30–45 минут (да-да, в те времена ещё были 3 секции алгосов)
Я понимал, что даже вслух сказать «хочу 300 000» вызывало у меня улыбку до ушей
Поэтому я тренировался с зеркалом
Смотрел в него 5 секунд и говорил «хочу 300 000» — как я думал
Спустя несколько дней — усердно тренируясь по несколько подходов в день — я освоил эту технику
И мог гордо сказать: «хочу 300 000»
Сказал так уверенно, что дали 320 000 :))) В общем, я попросил, а они согласились.
А если наберем 100 🌭, то напишу как я просил у Авито 600 000 с двумя годами опыта и что из этого вышло
🌭193🤣3🍓1
Попросил у Авито 600 000
Тогда у меня было ~2 года коммерческого опыта
Попал туда по рекомендации очень заряженного чувака из Авито, который меня менторил
Он как раз уходил в Amazon и порекомендовал меня в соседние команды
Собесы пролетели на изи
— Платформу решил минут за 40-50 на senior
— Алго-секцию закрыл за 40 минут на senior
— Даже System Design умудрился пройти на middle+ (хотя я только начинал его изучать)
Да и в целом рекрутер мне написал
МАКСОН! ТЫ МАШИНА! ЩАС БУДЕМ ИСКАТЬ ТЕБЕ СИНЬОРНУЮ ВАКАНСИЮ...
А я знал, что синьор в Авито тогда — это примерно 450 000 net
И думаю:
а что если попросить 600 000… вдруг прокатит
Ну и попросил 😄
---
И вот тут началось интересное
После финала мой senior-грейд внезапно испарился
И меня позвали уже на middle+ (E4)
А финальные вопросы тогда казались вообще странными:
• Как ты решаешь задачи?
• Что важнее: клиент или бизнес?
Сейчас понимаю, что это ключевые вопросы, которые меня и подвели...
---
Ни одна команда мне не зашла
И я решил: ну ок, попробую дожать по максимуму, все равно идти не собираюсь
И отказался от оффера360 000 net
Дальше было:
→ 380 000
→ + welcome бонус
Но я продолжал упираться
---
В итогеменя просто… слили 😄
И больше не зовут на собесы 😂
---
Пообщавшись после этого на отдельных созвонах с лидами из Авито, я уже понял:
— как реально проходить на senior
— почему мне дали middle+
— как правильно отвечать на такие "странные" вопросы
О чем и проводил стрим в сообществе algocode.io, а если уже в сообществе, то глянуть можно по ссылке (много инсайдерской инфы)
Тогда у меня было ~2 года коммерческого опыта
Попал туда по рекомендации очень заряженного чувака из Авито, который меня менторил
Он как раз уходил в Amazon и порекомендовал меня в соседние команды
Собесы пролетели на изи
— Платформу решил минут за 40-50 на senior
— Алго-секцию закрыл за 40 минут на senior
— Даже System Design умудрился пройти на middle+ (хотя я только начинал его изучать)
Да и в целом рекрутер мне написал
МАКСОН! ТЫ МАШИНА! ЩАС БУДЕМ ИСКАТЬ ТЕБЕ СИНЬОРНУЮ ВАКАНСИЮ...
А я знал, что синьор в Авито тогда — это примерно 450 000 net
И думаю:
а что если попросить 600 000… вдруг прокатит
Ну и попросил 😄
---
И вот тут началось интересное
И меня позвали уже на middle+ (E4)
А финальные вопросы тогда казались вообще странными:
• Как ты решаешь задачи?
• Что важнее: клиент или бизнес?
Сейчас понимаю, что это ключевые вопросы, которые меня и подвели...
---
Ни одна команда мне не зашла
И я решил: ну ок, попробую дожать по максимуму, все равно идти не собираюсь
И отказался от оффера
Дальше было:
→ + welcome бонус
Но я продолжал упираться
---
В итоге
И больше не зовут на собесы 😂
---
Пообщавшись после этого на отдельных созвонах с лидами из Авито, я уже понял:
— как реально проходить на senior
— почему мне дали middle+
— как правильно отвечать на такие "странные" вопросы
О чем и проводил стрим в сообществе algocode.io, а если уже в сообществе, то глянуть можно по ссылке (много инсайдерской инфы)
🌭39❤🔥2
Как СБЕР ДЕВАЙСЫ меня нанимали
История из примерно 2022, когда всё ещё был айтишный пайм и нанимали как не в себя
Я слышал, что ПРЕМИИ в СБЕРе такие БОЛЬШИЕ, перебить могут только web3-скамеры
И думаю — а почему бы не сходить и не посмотреть
Все тех. секции прошёл — всё ОК
А потом финал...
Я прихожу, и вот такой незатейливый ДИАЛОГ был
И — интервьюер, CTO
Меня просто разорвало от смеха
Такой фигни я ещё нигде не видел, прям подняли настроение
Может, кто недавно гонял к ним и расскажет, как сейчас с процессами?
P.S. но премии там действительно прям высокие оказались
История из примерно 2022, когда всё ещё был айтишный пайм и нанимали как не в себя
Я слышал, что ПРЕМИИ в СБЕРе такие БОЛЬШИЕ, перебить могут только web3-скамеры
И думаю — а почему бы не сходить и не посмотреть
Все тех. секции прошёл — всё ОК
А потом финал...
Я прихожу, и вот такой незатейливый ДИАЛОГ был
И — интервьюер, CTO
И: "Ну что, как прошёл все секции?"
Я: "Мне не показались они сложными"
И: "А как ты вообще себя оцениваешь?"
Я: "Senior"
И: "Ну вот давай поподробнее, что тебе интервьюер говорил и как он тебя оценил"
Я: "Не уточнял, но думаю, что он у вас есть — я сам как интервьюер заполняю отчёты"
И: "Проблема в том, что мы ПОТЕРЯЛИ ВЕСЬ ФИТБЕК ПО ТВОИМ СОБЕСАМ"
Меня просто разорвало от смеха
Такой фигни я ещё нигде не видел, прям подняли настроение
Может, кто недавно гонял к ним и расскажет, как сейчас с процессами?
P.S. но премии там действительно прям высокие оказались
🤣43🌭17
Я не общался с лидом 3 месяца
1-2-1 — вполне понятная практика
Так вот, после НГ у меня не было ни одного 1-2-1
Пару мыслишек о моём отношении к этому и как я ДЕЛАЮ ИЗ ЭТОГО КОНКУРЕНТНОЕ ПРЕИМУЩЕСТВО:
———
СТАДИЯ: да зачем мне 1-2-1
В целом, с текущим лидом больше обсуждали всегда технические моменты не же ли мотивацию и т д
Но я как бы и на других встречах с ним это проговаривал...
Так что появление этого вопроса вполне закономерно
———
СТАДИЯ: а что происходит
Тут я уже начал писать в личку, спрашивать, что там по 1-2-1
Но, видимо, затерялось сообщение, а я его и не поднимал особо вверх
———
СТАДИЯ: а может, мне и не нужны 1-2-1
У меня и свой скоуп работ есть, и, как правило, продакты ко мне заходят с соседними командами
И в целом мне понятно, что и с каким приоритетом делать
———
Так что посмотрю, что из этого получится
Знаю, что у лида завал, и, пожалуй, лучший способ помочь — максимальная автономность, насколько это возможно (о чем он уже говорил, что ценит мою автономность)
Ну а раз я ей обладаю, почему бы и не выделиться
Считаю, что в этой ситуации это является крутым преимуществом, которое в дальнейшем можно и раскешить
Ну и в целом эксперимент интересный
———
Йоу! Бахни 🌭 по-братски, если твой 1-2-1 отменяли
1-2-1 — вполне понятная практика
Так вот, после НГ у меня не было ни одного 1-2-1
Пару мыслишек о моём отношении к этому и как я ДЕЛАЮ ИЗ ЭТОГО КОНКУРЕНТНОЕ ПРЕИМУЩЕСТВО:
———
СТАДИЯ: да зачем мне 1-2-1
В целом, с текущим лидом больше обсуждали всегда технические моменты не же ли мотивацию и т д
Но я как бы и на других встречах с ним это проговаривал...
Так что появление этого вопроса вполне закономерно
———
СТАДИЯ: а что происходит
Тут я уже начал писать в личку, спрашивать, что там по 1-2-1
Но, видимо, затерялось сообщение, а я его и не поднимал особо вверх
———
СТАДИЯ: а может, мне и не нужны 1-2-1
У меня и свой скоуп работ есть, и, как правило, продакты ко мне заходят с соседними командами
И в целом мне понятно, что и с каким приоритетом делать
———
Так что посмотрю, что из этого получится
Знаю, что у лида завал, и, пожалуй, лучший способ помочь — максимальная автономность, насколько это возможно (о чем он уже говорил, что ценит мою автономность)
Ну а раз я ей обладаю, почему бы и не выделиться
Считаю, что в этой ситуации это является крутым преимуществом, которое в дальнейшем можно и раскешить
Ну и в целом эксперимент интересный
———
Йоу! Бахни 🌭 по-братски, если твой 1-2-1 отменяли
🌭55❤🔥1🍓1
Всю пятницу ЛЕГЕНДАРНО КАТИЛ НОВЫЙ СЕРВИС
Напомню, что я работаю в AB-платформе
В общем, сервис, чтобы проводить эксперименты и смотреть, какая кнопка больше привлекает пользователя
И выносили в отдельный сервис получение списка экспериментов
Там уже капец был под капотом, да еще и агрегировать данные от нескольких сервисов
В общем, распил монолита!
И как же я с*ка сгорел, когда затащили всю эту адскую миграцию, а потом нам говорят
ЭХ СУУУУМКА ЕБУЧАЯ, думаю я
Но что ж, вот 17:00, а мы в легендарном дуо делаем переливку и все тестируем перед демо во вторник
Накидайте плз 🌭,а то я уже есть хочу, но нужно все доделать 😄
Напомню, что я работаю в AB-платформе
В общем, сервис, чтобы проводить эксперименты и смотреть, какая кнопка больше привлекает пользователя
И выносили в отдельный сервис получение списка экспериментов
Там уже капец был под капотом, да еще и агрегировать данные от нескольких сервисов
В общем, распил монолита!
И как же я с*ка сгорел, когда затащили всю эту адскую миграцию, а потом нам говорят
А вы когда переливать данные хотите?
Я такой: мы же все перелили...
А это да, но нас тут попросили все пересчитать, и данные вообще новые, и у вас сейчас невалидные...
ЭХ СУУУУМКА ЕБУЧАЯ, думаю я
Но что ж, вот 17:00, а мы в легендарном дуо делаем переливку и все тестируем перед демо во вторник
Накидайте плз 🌭,
🌭105🤣1🍓1
+1 хардкорный Яндексоид
Недавно прилетел вот такой вот отзыв по подготовке на algocode.io
=============
Привет!
Только что был алго-собес в Яндекс.
Вот задачи с него:
- К ближайших чисел (algocode)
- Последовательность с суммой K (algocode)
обе решил за 40 мин)))
Макс, огромное тебе спасибо за твой титанический труд в алгосах))) Ты пушка-бомба, курсы просто охренительные!))))
Теперь пойду готовиться к TDD и SD, благо по ним курсы от Дани тоже есть))))
=============
А в посте хочу разобрать "К ближайших чисел" (условие на скриншоте)
В общем, дан отсортированный массив nums, индекс idx и число k. Нужно найти k ближайших чисел к nums[idx]
И ЯНДЕКС ЖДЁТ ОТ ТЕБЯ САМОЕ ПРЯМОЛИНЕЙНОЕ РЕШЕНИЕ
Решаем просто в лоб:
• ставим указатели l и r слева и справа от idx
• добавляем в ответ ближайшее число к nums[idx] и смещаем указатели
Главное НЕ ЗАБЫТЬ:
• Отслеживать выход за границы массива
• При равной удалённости чисел nums[l] и nums[r] от nums[idx] отдать предпочтение левому
И получим O(k) времени и O(k) памяти (память только на ответ тратим)
—-
И вуаля, ты в Яндексе😏
Недавно прилетел вот такой вот отзыв по подготовке на algocode.io
=============
Привет!
Только что был алго-собес в Яндекс.
Вот задачи с него:
- К ближайших чисел (algocode)
- Последовательность с суммой K (algocode)
обе решил за 40 мин)))
Макс, огромное тебе спасибо за твой титанический труд в алгосах))) Ты пушка-бомба, курсы просто охренительные!))))
Теперь пойду готовиться к TDD и SD, благо по ним курсы от Дани тоже есть))))
=============
А в посте хочу разобрать "К ближайших чисел" (условие на скриншоте)
В общем, дан отсортированный массив nums, индекс idx и число k. Нужно найти k ближайших чисел к nums[idx]
И ЯНДЕКС ЖДЁТ ОТ ТЕБЯ САМОЕ ПРЯМОЛИНЕЙНОЕ РЕШЕНИЕ
Решаем просто в лоб:
• ставим указатели l и r слева и справа от idx
• добавляем в ответ ближайшее число к nums[idx] и смещаем указатели
Главное НЕ ЗАБЫТЬ:
• Отслеживать выход за границы массива
• При равной удалённости чисел nums[l] и nums[r] от nums[idx] отдать предпочтение левому
И получим O(k) времени и O(k) памяти (память только на ответ тратим)
—-
И вуаля, ты в Яндексе
Please open Telegram to view this post
VIEW IN TELEGRAM
🌭35🤣3
Самая важная новость текущей недели
Состоялась сделка по объединению ООО Отус (ярдовая компания) и algocode
И я КАПЕЦ РАД!
Это мега выгодная сделка вообще для всех: для клиентов, которые получат бОльше контента, для меня с Данилом (кореш с которым начинали делать algocode с самого начала) и для Отуса
6 месяцев шло обсуждение, и вчера всё подписали
Так что скоро в резюме напишут "Руководитель отдела разработки"
———
Я вот смотрю на весь путь, что прошёл, и вообще не жалею
Попробовал не только микросервисы пораспиливать и пообъединять, но и бизнесы 😂
P.S. микросервисы вообще фигня по сравнению с этим
Состоялась сделка по объединению ООО Отус (ярдовая компания) и algocode
И я КАПЕЦ РАД!
Это мега выгодная сделка вообще для всех: для клиентов, которые получат бОльше контента, для меня с Данилом (кореш с которым начинали делать algocode с самого начала) и для Отуса
6 месяцев шло обсуждение, и вчера всё подписали
Так что скоро в резюме напишут "Руководитель отдела разработки"
———
Я вот смотрю на весь путь, что прошёл, и вообще не жалею
Попробовал не только микросервисы пораспиливать и пообъединять, но и бизнесы 😂
P.S. микросервисы вообще фигня по сравнению с этим
🌭59❤🔥26🍓6🤣2
Почему никто не работает?
Заметил, что чем в бОльшую команду я захожу из смежного направления с вопросами
Тем быстрее меня хотят отфутболить 😂
Да и в целом, настроение я бы сказал не мега рабочее у многих (сравнивая даже год назад...)
Если у тебя так же, ТО ТУТ ДЛЯ ТЕБЯ АФИГИТЕЛЬНЫЙ ШАНС
Когда настроение падает у коллектива, то кратно легче выделиться и получить повышение
НО КАК ИМЕННО?
Если ты разработчик, то ТОП-1 возможность (для начала) - это афигительно изучить свой продукт
90% всех с кем общаюсь не знают как пользователи пользуются продуктом, не знают конкурентов, да даже весь функционал не знают (в голове не собрана вся система) и т д
А без этого НЕРЕАЛЬНО ВЫСТРОИТЬ СВОЕ ВИДЕНЬЕ ПРОДУКТА
Высокий грейд - всегда про доверие. А доверие просто не получить если ты не знаешь куда направлять команду/юнит
У тебя сходу начнут появляться фразы:
• Это не главный приоритет, давайте сфокусируемся на...
• Я бы хотел взять XYZ - это критично для пользователей и понимаю как пофиксить...
• Мы упускаем XYZ функционал которые есть у конкурента...
А это уже следующий уровень от "хочу вот эту интересную задачу"
И бахни 🌭 если заходят посты такого формата
Заметил, что чем в бОльшую команду я захожу из смежного направления с вопросами
Тем быстрее меня хотят отфутболить 😂
Да и в целом, настроение я бы сказал не мега рабочее у многих (сравнивая даже год назад...)
Если у тебя так же, ТО ТУТ ДЛЯ ТЕБЯ АФИГИТЕЛЬНЫЙ ШАНС
Когда настроение падает у коллектива, то кратно легче выделиться и получить повышение
НО КАК ИМЕННО?
Если ты разработчик, то ТОП-1 возможность (для начала) - это афигительно изучить свой продукт
90% всех с кем общаюсь не знают как пользователи пользуются продуктом, не знают конкурентов, да даже весь функционал не знают (в голове не собрана вся система) и т д
А без этого НЕРЕАЛЬНО ВЫСТРОИТЬ СВОЕ ВИДЕНЬЕ ПРОДУКТА
Высокий грейд - всегда про доверие. А доверие просто не получить если ты не знаешь куда направлять команду/юнит
У тебя сходу начнут появляться фразы:
• Это не главный приоритет, давайте сфокусируемся на...
• Я бы хотел взять XYZ - это критично для пользователей и понимаю как пофиксить...
• Мы упускаем XYZ функционал которые есть у конкурента...
А это уже следующий уровень от "хочу вот эту интересную задачу"
И бахни 🌭 если заходят посты такого формата
🌭102🍓6
Новая техника разработки: WATERFALL (водопад)
Применяется исключительно в больших юнитах и горячих проектах
Стратегия такая:
1) Пару раз обсудить планирующиеся изменения с продактами, смежнми командами
2) Сделать пару митингов почему важно сделать это как можно быстрее
3) Убедиться, что фича настолько большая, что ее откат не возможен и проще все будет другим переделать чем вам откатывать
4) Зарелизить без уведомления смежных команд и наблюдать очень быструю перестройку всех процессов
----
Так вот, наша команда буквально попала ПОД этот ВОДОПАД задач
Фантастическая схема)))))
Применяется исключительно в больших юнитах и горячих проектах
Стратегия такая:
1) Пару раз обсудить планирующиеся изменения с продактами, смежнми командами
2) Сделать пару митингов почему важно сделать это как можно быстрее
3) Убедиться, что фича настолько большая, что ее откат не возможен и проще все будет другим переделать чем вам откатывать
4) Зарелизить без уведомления смежных команд и наблюдать очень быструю перестройку всех процессов
----
Так вот, наша команда буквально попала ПОД этот ВОДОПАД задач
Фантастическая схема)))))
🤣37🌭12
Нанять, чтобы уволить !
Недавно написал знакомый с вопросом:
Я вообще не понял вопроса сначала 😂
А потом такая история от него:
Я, конечно, офигел
Поспрашивал корешей и понял, что какие-то единичные случаи действительно бывают
Вот так в 2026 доводят до ручки соискателей
Ну и ставь 🌭, если уже думал/гонял к психологу
Недавно написал знакомый с вопросом:
Устраиваюсь в компанию и меняю стек. Собесы прошёл, оффер есть, и как понять, что меня не уволят?"
Я вообще не понял вопроса сначала 😂
А потом такая история от него:
Слашал, что в компаниях нужно нанимать X человек в месяц и увольнять Y человек в месяц
Чтобы это выполнять, иногда нанимают, чтобы просто уволить и не трогать текущие команды
Я, конечно, офигел
Поспрашивал корешей и понял, что какие-то единичные случаи действительно бывают
Вот так в 2026 доводят до ручки соискателей
Ну и ставь 🌭, если уже думал/гонял к психологу
🌭61🍓9