В первой части я рассказал, что выяснилось после анализа 9 247 технических интервью через ии помощник для собеседований: кто собеседуется, куда, какие вопросы задают. Статистика, графики, цифры. Всё чинно благородно.
Эта часть про задачи. Те самые, которые звучат на live-coding секции, и из-за которых у кандидатов потеют ладони и сжимается пятая точка, а интервьюеры делают покерфейс, когда видят hashCode() { return 1; }.
Честно, собрать этот материал оказалось в разы сложнее, чем аналитику из первой части. Там - агрегация, группировка, графики. Здесь целая детективная работа. Enigma AI не сохраняет скриншоты экрана кандидата (приватность, вот это всё). Зато сохраняет описание задачи, извлечённое vision-моделью из того, что видит кандидат на экране. Получается что-то вроде "на экране код на Go, функция принимает слайс, есть цикл с горутинами, переменная i...". По этим слепкам и транскрипциям разговоров я восстанавливал условия задач, кластеризовал похожие формулировки, определял компании. Было потрачено прорва времени. Но это было увлекательно, как собирать пазл из 2 000 фрагментов, где половина кусочков одного цвета. Но надеюсь результат того стоил и вам это будет интересно, а главное полезно.
Общая картина: что дают и кому

Паттерн чёткий. Go-интервью про конкурентность: каналы, горутины, мьютексы, race conditions. Java - контракты языка и проектирование. Python - data pipelines и работа с данными. JS/React - всё сразу, от typeof null до полноценных компонентов с API. C# - ООП-паттерны и LINQ.
Есть и общее: каждый стек тестирует edge cases. Не "можешь ли ты решить", а "помнишь ли ты про пустой массив, nil, переполнение, отмену контекста". Аккуратность важнее алгоритмической гениальности.
Go: а где у тебя мьютекс?
Go собеседования составляют порядка 34% live-coding сессий в моей выборке. Пять из шести задач, которые я разобрал про конкурентность. Это вряд ли совпадение. Go - это модно, стильно, молодежно. Компании нанимают Go-разработчиков для высоконагруженных сервисов, и хотят убедиться, что кандидат не напишет data race в первый же день.
Client-Side Load Balancer - Яндекс, Middle / Senior
Интерфейс
Backendдан. Экземпляры ненадёжны, падают, зависают, перегружены. НуженBalancer, который балансирует запросы между ними.Минимум - round-robin. Хорошо - retry с переходом на следующий бэкенд +
ctx.Done(). Отлично - health-check, circuit breaker, thundering herd.
Типичная яндексоидная задача: интерфейс дан, реализуй. Звучит просто, пока не начнёшь писать. 70% кандидатов забывают про atomic на счётчике round-robin. Ещё 20% добавляют мьютекс, но не проверяют контекст между ретраями. Оставшиеся доходят до health-check и их приглашают на следующий раунд. Ну или не приглашают, это же Яндекс.
// Решение Middle уровня. То, что от вас ждут func (b *Balancer) Invoke(ctx context.Context, req Request) (Response, error) { n := len(b.backends) start := int(atomic.AddUint64(&b.next, 1) - 1) % n var lastErr error for i := 0; i < n; i++ { select { case <-ctx.Done(): return nil, ctx.Err() default: } idx := (start + i) % n resp, err := b.backends[idx].Invoke(ctx, req) if err == nil { return resp, nil } lastErr = err } return nil, fmt.Errorf("all %d backends failed: %w", n, lastErr) }
Найди баги: гонки и замыкания - Wildberries, Middle
Имеем два сломанных фрагмента. Первый - цикл с горутинами ищет максимальное чётное число. Второй - параллельный поиск документов через каналы. Найди все баги.
В Wildberries чаще встречается этот формат. Не напиши с нуля, а вот код, он написан твоим предшественником в пятницу вечером, объясни почему всё плохо. Этакое небольшое ревью, но с подвохом.
for i := 1000; i > 0; i-- { go func() { if i%2 == 0 && i > max { max = i } }() } fmt.Printf("Maximum is %d", max)
Три проблемы в шести строках. Замыкание по переменной цикла (до Go 1.22 гарантированный баг, после зависит от версии и если кандидат это знает, ему плюс). Гонка на max без синхронизации. И мой любимый: fmt.Printf вызывается до того, как горутины успевают что-то сделать.
Система бэкапов: стриминг, сжатие, пайплайн
Бэкап до 1 терабайта. Сжатие 1.5-3x. Хранилище с лимитом 100 мегабайт на файл. Спроектировать и написать пайплайн: чтение → сжатие → запись. Всё в память не влезает.
Стык System Design и кода. Яндекс дает скелет с интерфейсами и просит написать рабочий пайплайн с воркерами. Самый частый вопрос на обсуждении: "а что если коэффициент сжатия окажется меньше 1.5 и фрагмент не влезет в 100 мегабайт?" Те, кто сразу думает про edge cases проходят. Те, кто говорит "ну, мы возьмём фрагмент поменьше" без конкретики - досвидос.
Места в кинотеатре – VK, Junior / Middle
Массив из 0 и 1, зритель садится максимально далеко от остальных. Три случая: начало ряда, между зрителями, конец ряд
Классический LeetCode 849, в ВК почему-то очень ее любят, встречается аж 9 раз слово в слово для разных сессий соискателей.
ВК в целом дает задачи проще, чем Яндекс, но чаще проверяет внимательность. Здесь ловушка на краях: когда свободные места прилегают к стенке зала, расстояние считается иначе, чем в середине. Половина кандидатов пишет только обработку промежутков между зрителями и получает неправильный ответ на [0,0,0,1]. Обидно, когда ошибся из-за волнения.
Едем далее.
Монотонный слайс + степень двойки - Ozon, Junior / Middle
Две задачи за 20 минут. Первая - проверить монотонность слайса (два флага за один проход). Вторая - степень двойки (ожидается
x & (x-1) == 0).
Ozon любит формат пулемёта: решил получи следующую. Монотонный слайс- разминка. Степень двойки - фильтр. Цикл с делением "пойдет". Битовый трюк с объяснением "хорошо". Битовый трюк + рассуждение про math.MinInt и отрицательные числа - пятерка в зачетку.
Worker Pool с graceful shutdown - Авито, Middle / Senior
Реализовать пул воркеров. Пул принимает задачи через канал, обрабатывает N горутинами, корректно завершается по
context.Done(). Могут попросить добавить rate limiting.
Авито часто даёт инфраструктурные задачи. Не алгоритмы, а паттерны Go: fan-out, fan-in, graceful shutdown. Тут ключевое - не забыть корректно закрыть каналы и дождаться завершения всех горутин. Типичная ошибка: горутина читает из закрытого канала и молча получает zero value. Кандидат думает, что всё работает, а на самом деле половина задач теряется. Классика.

Java: найди восемь отличий
Java-собеседования устроены немного иначе. Меньше про алгоритмы, больше "а ты понимаешь, как это работает под капотом?" Сбер, Яндекс и Альфа особенно любят давать код с неочевидными багами. Компилируется, запускается, тесты зелёные. А потом в проде данные тихо перепутываются.
Code Review класса Person
Класс с
Serializable,Externalizable,clone(), JAXB-аннотациями. Восемь багов. Найди все.
Супер-хит Сбера. Я видел эту задачу (или её вариации) в транскрипциях десятки раз. Восемь багов.
Нет no-arg конструктора - Externalizable упадёт при десериализации. Перепутан порядок полей в writeExternal/readExternal - phone и address поменяются местами. Тихо. Без исключений. В проде. clone() без Cloneable - всегда CloneNotSupportedException, обёрнутый в Error. hashCode() возвращает 1 - HashMap превращается в LinkedList. И так далее до JAXB-аннотаций.
Самый коварный баг порядок полей. Например
writeExternalпишет name → surname → phone → address, аreadExternalчитает name → surname → address → phone. Всё компилируется, тесты проходят (если в тестах phone == address == null). А в проде у Иванова из Москвы телефон вдруг становится "ул. Тверская, 1". Сбер обожает именно такие баги, потому что в банковском софте они стоят денег.
Сжатие массива в диапазоны – VK, Junior / Middle
[1, 4, 5, 2, 3, 9, 8, 11, 0]→"0-5,8-9,11". Сортировка + линейный проход.
Задача из категории "просто, но мучительно". Алгоритм тривиальный, а ошибок четыре штуки с гарантией. Забыли отсортировать (удивительно часто). Потеряли последний диапазон после цикла. Лишняя запятая. ArrayIndexOutOfBoundsException на пустом массиве. ВК оценивает не алгоритм, а аккуратность. Кандидат, который с первого раза написал чистое решение без багов за 12 минут в приоритете. Кандидат, который написал в целом правильно, но с тремя багфиксами под вопросом.
Система фильтрации уведомлений – Яндекс, Middle / Senior
Дано уведомление: id, тип (EMAIL/SMS/PUSH), получатель, текст. У получателя разрешённые каналы и заблокированные отправители. Фильтрация + дедупликация за 24 часа. Хранение реализовывать не нужно, только контракты и логику.
Тут Яндекс проверяет не умение кодить, а умение проектировать. Кандидат должен сам определить интерфейсы для получения настроек и истории, продумать pipeline фильтров. Типичная ошибка - провести 20 минут на моделях данных и не успеть дойти до фильтрации. Яндексу не нужны идеальные DTO. Им нужен рабочий NotificationFilter с тремя проверками внутри.
Concurrent HashMap с сегментами – Альфа-Банк, Senior
Реализовать потокобезопасную HashMap с сегментной блокировкой. Не ConcurrentHashMap из JDK, а свою упрощённую, но с пониманием принципов.
Альфа даёт тяжёлые задачи для сеньоров. Про понимание того, как устроена ConcurrentHashMap: почему сегменты, почему не один мьютекс, как определить сегмент по хешу. Многие из кандидатов начинают с "обернём обычную HashMap в synchronized" и потом не могут объяснить, зачем нужны сегменты. Учитесь на чужих ошибках.
Python: а теперь напиши генератор
Python-задач в live-coding меньше, чем Go и Java, но они стабильно появляются в Ozon, Яндексе и Kaspersky. Фокус на генераторах, декораторах и data processing.
Rate Limiter через декоратор – Kaspersky, Middle
Написать декоратор
@rate_limit(max_calls=5, period=60), который ограничивает количество вызовов функции. Потокобезопасность, как возможное доп. требования.
Касперский проверяет понимание замыканий и декораторов. Базовую версию пишут почти все. Потокобезопасную с threading.Lock не все. Версию со скользящим окном вместо фиксированного единицы.
Потоковая обработка лог-файла – Ozon, Middle
Имеем файл логов 10 GB. Посчитать топ-10 URL по количеству запросов. В память не влезает. Ожидается решение через генераторы и
collections.Counter.
Ozon любит data processing. Кандидат, который делает file.readlines() провалил задачу ещё до того, как начал считать. Правильный ответ: генератор, построчное чтение, Counter с most_common(10). Могут задать вопрос: "а если URL миллионы уникальных и Counter не влезает в память?"
Яндекс в большинстве случаев предлагает написать бизнес код: работа банкомата, бронирование такси и т.д. Смотрит на чистоту кода, обработку ошибок и рассуждения кандидата.
C#: объясни, зачем нужен IDisposable
C# задач немного, около 6% от всего live-coding. Но они стабильно появляются в МТС и Positive Technologies. Поэтому только одна самая распространенная задача.
Observer с weak references – Positive Technologies, Middle / Senior
Реализовать EventBus с подписками. Но подписчики не должны удерживаться от GC, используй
WeakReference. А что с потокобезопасностью?
Проверяют глубину знания .NET. Базовый Observer пишут все. Weak references добавляют те, кто реально работал с долгоживущими приложениями и сталкивался с утечками памяти через подписки. Самая частая ошибка: забывают проверить, жив ли подписчик, перед вызовом.
JS/React: от typeof null до SWAPI за 45 минут
Фронтенд-собеседования самые разнообразные и самые плотные. Одно интервью может включать квиз, задачу на паттерн, react-компонент с API и вопрос про ререндеры. Всё за 45 минут. Дышать необязательно. Вообще разброс вариативности задач по фронту самая впечатляющая, очень тяжело было хоть как-то систематизировать.

JS Quiz – МТС, Junior / Middle
Семь
console.logвопросов подряд. Быстрый фильтр: знаешь язык или нет.
Самый коварный вопрос, ну или нет:
const a = {}, b = {}, c = {} a[b] = '1' a[c] = '2' console.log(a) // { '[object Object]': '2' }
Объекты при использовании как ключи приводятся к [object Object]. Оба. Второе присваивание перезаписывает первое. Проваливают 50% кандидатов. Знание typeof null === 'object' при этом не помогает.
Event Loop + this + EventEmitter – Т-Банк, Middle

Порядок вывода Promise/setTimeout. Потеря контекста в
.filter(). Реализация EventEmitter с chaining. Три задачи подряд.
Т-Банк (бывш. Тинькофф) структурирует фронтенд интервью как серию мини-задач нарастающей сложности. Event loop на разогрев: 1, 4, 6, 3, 2, 5. Потеря this в колбэке .filter() очевидная ловушка: обычная функция теряет контекст, стрелочная нет. EventEmitter единственное место, где нужно писать с нуля.
EventEmitter - самая частая задача на фронтенд-собесах в моей выборке. Я видел её в транскрипциях Т-Банка, МТС, VK, Авито и Lamoda. Видимо, она идеально тестирует набор: замыкания, объекты, chaining. И писать её ровно 5 минут, если знаешь паттерн. И 25, если нет.
React: ререндеры + SWAPI - Т-Банк, Middle / Senior
Объяснить, какие компоненты ререндерятся при клике. Написать поиск персонажей Star Wars с debounce, AbortController и индикатором загрузки.
Задача про ререндеры это не про код, а про понимание React. "При клике на Render что произойдёт?" Правильный ответ: ререндерятся все, потому что React.memo нигде не используется. "А при вводе текста?" - Parent и Child, но не App. Ключевой момент: handleChange создаётся заново при каждом рендере, и Child получает новую ссылку. Те, кто знает про useCallback, объясняют это за минуту. Остальные мучаются.
SWAPI-задача наш финальный босс. За 20 минут написать поиск с debounce и отменой запросов. По транскрипциям, AbortController добавляют 30–40%. Остальные получают race condition: ввёл "sky", запрос ушёл, стёр, ввёл "luke", пришёл ответ на "sky", отобразились Скайуокеры вместо Люка. Кек.
Чек-боксы с логированием - МТС, Junior / Middle
Отрисовать чек-боксы по двум массивам, запоминать выбранные, логировать двойной клик. Заготовка с ошибками в атрибутах (
disableвместоdisabled,forвместоhtmlFor).
МТС даёт джунам заготовку с намеренными ошибками в JSX и смотрит, заметит ли кандидат. disable вместо disabled, for вместо htmlFor.,useEffect без массива зависимостей, подписка на dblclick добавляется при каждом рендере. Задача проверяет не креативность, а внимательность к деталям и знание отличий HTML от JSX.
Паттерны по компаниям

Компания |
Стек |
Формат |
Фокус |
|---|---|---|---|
Яндекс |
Go, Java |
1 задача, 30–45 мин |
Проектирование + код. Интерфейсы даны |
Сбер |
Java |
Code review, 20 мин |
Контракты языка, внимательность к деталям |
VK |
Go, Java |
1–2 задачи, 15–20 мин |
Алгоритмы, граничные случаи |
Ozon |
Go, Python |
2–3 задачи, «пулемёт» |
Скорость, битовые операции, data processing |
Wildberries |
Go |
Код с багами |
Конкурентность, каналы, race conditions |
Т-Банк |
JS/React |
3–5 мини-задач |
Всё: quiz + паттерны + React + API |
МТС |
JS/React |
Quiz + компонент |
Знание JS, JSX-ошибки |
Авито |
Go |
1 задача, 30 мин |
Инфраструктурные паттерны: пулы, пайплайны |
Альфа-Банк |
Java |
1 задача, 40 мин |
Глубина: concurrency, внутренности JDK |
Kaspersky |
Python, Go |
1–2 задачи |
Декораторы, генераторы, системщина |
Что из этого следует
Я перелопатил сотни задач, и вот к чему пришёл.
Компании не ищут людей, которые решают LeetCode Hard за 15 минут. Ни одна задача в моей выборке не требовала знания сложных алгоритмов. Ни деревьев отрезков, ни динамического программирования на графах, ни суффиксных массивов. Зато все до единой требовали аккуратности. Пустой массив, nil, отменённый контекст, перепутанный порядок полей вот за что снижают оценку.
Go-разработчикам: тренируйте конкурентность. Не теорию каналов, а практику: балансировщик, воркер-пул, pipeline с graceful shutdown. Пять из семи Go-задач в моей выборке требовали sync.Mutex, atomic или WaitGroup.
Java-разработчикам: перечитайте Effective Java, главы про equals/hashCode и сериализацию. Серьёзно. Сбер и Яндекс спрашивают это постоянно. Особенно любят код, где всё компилируется и тесты проходят, но данные перепутываются.
Python-разработчикам: генераторы и декораторы - ваш хлеб. Если не можете написать декоратор с параметрами за 5 минут потренируйтесь. Это ваш аналог битовых операций для Go.
Фронтендерам: готовьтесь к марафону. 45 минут, пять задач. Debounce + AbortController наизусть. EventEmitter наизусть. useCallback и React.memo понимать, а не просто использовать. И да, typeof null === 'object' спрашивают до сих пор.
Первая часть с общей аналитикой по 9 247 интервью – здесь. Если хотите попробовать Энигму -enigmai.ru.
Комментарии (40)

Maydyk
12.02.2026 04:32Основная проблема не в задачах, а в том что интервьюеры говорят под руку, мешают думать и меняют условия в процессе решения.

Farongy
12.02.2026 04:32ВК оценивает не алгоритм, а аккуратность. Кандидат, который с первого раза написал чистое решение без багов за 12 минут в приоритете.
Им не рассказали, что это называется зазубривание, а не аккуратность?

adsumushero Автор
12.02.2026 04:32Яндекс тебя может спокойно отпендюрить, если ты не реализовал кастомную обработку ошибок. Наверное поэтому появились "волки" и они так успешно паровозиком хакают собесы. Кого ищут, того и находят. Все честно.

Trigger1985
12.02.2026 04:32Что такое «волки» ?

Filyushin
12.02.2026 04:32ооооо, вот сейчас ты вышел на скользкую дорожку
Это прямо новый тренд, когда работодатель не семья и друг или бизнес-партнёр, а просто дойная корова. И если корова даёт мало молока, то её меняют. Никаких переработок, никаких сверхурочных, никакой бизнес-заинтересованности. Любые хаки для прохождения собесов, снова и снова тренировать собесы проходить, а работать "от и до".
NAI
12.02.2026 04:32У меня вопрос, можно? можно же?
Как они хакают HRов которые подбирают по "астрологии как дополнительному аналитическому инструменту в HR..." (C)? День рождения в паспорте не изменишь же -> натальная карта одна на всю жизнь...

Filyushin
12.02.2026 04:32Да хз как хакают. Учат правильно говорить с hr, с лидом и командой на собеседовании. Поэтому вариант автора это лайтовый ещё. Помогает тем, кто руками умеет работать, а термины не помнит. Но где эта черта и как определить забывчивого от "не Копенгаген"?

AnruKitataze
12.02.2026 04:32Если компания постоянно толкает на переработки, ещё и бесплатно (есть и такие), то её точно надо менять. Это должно быть здоровым минимумом для любого человека. Нельзя поддерживать того, кто хочет вернуть крепостное право
За остальное не говорю, дело каждого. Мне, к примеру, важно, чтобы проекты были интересные, а коллеги - приятные. Но переработки - зло. От них и выгореть можно

perfectdaemon
12.02.2026 04:32Вот смотрю на такие статьи, такие продукты, которые рекламируются напрямую даже без блога компании, и становится грустно — как нанимать теперь кого-то с рынка?

NightKiro
12.02.2026 04:32Задавать вопросы и слушать ответы, так же как и всегда. Когда человек отвечает как гпт, это слышно и чувствуется, если один-два раза человек ну может реально так и запомнил теорию/пограничный кейс, то больше таких ответов, или вечные задержки до появления ответов, или чтение с экрана
Лайвкодинг в принципе никогда не был адекватной метрикой, так что я даже рад что кто-то его убил, пускай и таким методом

Filyushin
12.02.2026 04:32так это индивидуальная разработка, под силу одному человеку. Какой уж тут блог компании.
И да, это деградация отрасли. Сами породили то, что нас может убить. Раньше шли в ИТ не за деньгами, верно? ;-)
NAI
12.02.2026 04:32Так происходит с любой отраслью - сначала энтузиасты, сорви-головы, рок-стары, а потом постепенно она превращается в обычное ремесло, появляются нормы, правила, регламенты и вот он конвейер.
Раньше, в авиацию шли
отбитые наглухосмелые и бодрые ребята, которым пролететь под мостом, как два пальца, а сейчас? Взлет по карте, посадка по карте - чет не сделал? увольнение и волчий билет. Автоматика так вообще все может сделать сама.

ChePeter
12.02.2026 04:32Очень интересно посмотреть правильное решение вот этого. ПРавильное по Озону, конечно
Потоковая обработка лог-файла – Ozon, Middle
Имеем файл логов 10 GB. Посчитать топ-10 URL по количеству запросов. В память не влезает. Ожидается решение через генераторы и
collections.Counter.Ozon любит data processing. Кандидат, который делает
file.readlines()провалил задачу ещё до того, как начал считать. Правильный ответ: генератор, построчное чтение, Counter сmost_common(10). Могут задать вопрос: "а если URL миллионы уникальных и Counter не влезает в память?"Deepseek выдал решение на 7200 строк

adsumushero Автор
12.02.2026 04:32import hashlib from collections import Counter from heapq import merge import os, tempfile, json def top_urls(logfile, n=10, num_buckets=256): tmpdir = tempfile.mkdtemp() buckets = [] for i in range(num_buckets): buckets.append(open(f"{tmpdir}/bucket_{i}", "w")) with open(logfile) as f: for line in f: url = extract_url(line) h = int(hashlib.md5(url.encode()).hexdigest(), 16) % num_buckets buckets[h].write(url + "\n") for b in buckets: b.close() global_top = [] for i in range(num_buckets): with open(f"{tmpdir}/bucket_{i}") as f: counter = Counter(line.strip() for line in f) global_top.extend(counter.most_common(n)) global_top.sort(key=lambda x: -x[1]) return global_top[:n]Наверное как-то так. Дипсик наверное с нуля начал реализовывать MapReduce.

ChePeter
12.02.2026 04:32Дипсик читал весь лог и аггрегировал в mmap
У Вас, если, например, половина логов из одного URL, то опять не влезет в память один bucket.
Т.е. если реально глючит что-то и засирает лог, то такой перекос реален.

adsumushero Автор
12.02.2026 04:32Counter влезет, т.к он хранит уникальные ключи, а не строки. Если бакет маленький то Counter. Если распух то sort и линейный проход. Память после сортировки O(n) т.е 10 записей в heap. Но с оценкой в midlle, я погорячился. Тут вполне и сеньор вспотеть может. А mmap это делегирование работы с памятью на ОС, не думаю, что такое на собесе понравится.

ChePeter
12.02.2026 04:32Ага
Так и получается, что нужно прочитать построчно (лучше пачками) все 10G и для каждой строки по URL вести счетчик - а это лучше mmap. И сразу хранить 10 наиболее частых, что бы не сортировать потом.
И тут вопрос - а если будет 11 одинаковых наиболее частых? Которые 10 из них пойдут в ответ?

adsumushero Автор
12.02.2026 04:32Ну вот, начинаете вести себя как интервьер. Тут думать надо, решений несколько наверное. Как минимум иожно вернуть все, кто попал на 10 место. Запросили топ 10 получили 17.

ChePeter
12.02.2026 04:32я про то, что большинство задач на собеседовании оторваны от реальности совсем.

gybson_63
12.02.2026 04:32А в словарь +1 делать не?

adsumushero Автор
12.02.2026 04:32Самое простое решение в лоб.

gybson_63
12.02.2026 04:32А если defaultdict то вообще элементарно
Но чем плохо то? Есть гипотеза о количестве уникальных url?

Dhwtj
12.02.2026 04:32если URL миллионы уникальных и Counter не влезает в память?
Самое простое
Чанковый подход с потерей точности. Читаем генератором порциями, скажем по 5 миллионов URL, обновляем Counter. Когда он распухает выше порога — обрезаем, оставляя только топ-N тысяч. Редкие URL теряются, но нам нужен именно топ, и для большинства практических распределений (Zipf) это работает.
Чуть сложнее
External sort (MapReduce-стиль). Извлекаем URL, записываем во временные файлы, сортируем каждый файл на диске, затем делаем merge sort из отсортированных чанков. В отсортированном потоке одинаковые URL идут подряд — считаем длины серий за один проход, держа в памяти только текущий URL и счётчик. Точность абсолютная, но медленнее из-за I/O.

panzerfaust
12.02.2026 04:32Корпы: AI-HUI, агенты, рои агентов, MCP, RAG, ML, промпт-инжиниринг, кто не кодит через агентов - тот отстал на поколение, знать ЯП больше не нужно
Также корпы: прогромировай на листочке, а я над душой постою

Dhwtj
12.02.2026 04:32Думаю, тут код писать на надо.
Надо только подсветить потенциальные проблемы и поставить задачу для LLM
Ленивый конвейер: файл читается построчно через итератор, генератор извлекает URL, результат скармливается в collections.Counter, most_common(10) выдаёт ответ
Потенциальные проблемы, которые нужно учесть
readlines() / read() / list(f) — моментальный OOM, нельзя загружать весь файл в память
Много уникальных URL — сам Counter может не влезть в RAM, нужен fallback: hash-партиционирование на бакеты, чанковый подход с обрезкой, или вероятностные структуры (Count-Min Sketch)
Битые строки — парсинг должен быть обёрнут в try/except, а не ронять весь pipeline
Ну ещё по мелочи...
А код? Ну его нафиг

Dhwtj
12.02.2026 04:32Реализовать EventBus с подписками. Но подписчики не должны удерживаться от GC, используй WeakReference. А что с потокобезопасностью?
Бггг!
Похоже на архитектурную ошибку постановки задачи. Не рекомендую реализовать в таком виде, а исправить арх ошибку.
Извините, поспрашивал LLM
почему требование WeakReference в EventBus — это «красный флаг» и как на это смотрят опытные архитекторы?
Перекладывание ответственности: Требование использовать WeakReference означает: «Наши разработчики забывают отписываться от событий, поэтому нам нужно, чтобы система за ними подчищала»
Правильный подход: Явное управление жизненным циклом (через IDisposable). Если объект создается контейнером (DI), он же должен его и утилизировать.
Я за 10 секунд понял что тут предлагают секс стоя и в гамаке.
Мужик в скафандре сено косит. Мимо проходит женщина, и говорит: — А почему в скафандре? Мужик: — Трудности люблю. Женщина: — Плюнь ты на эти трудности, пошли лучше потр%%аемся! Мужик, подумав: — Ладно, пошли, только в гамаке. И стоя!

andyblaster
12.02.2026 04:32Система бэкапов: стриминг, сжатие, пайплайн
Как я понял, предполагается решение: разбить входной файл на куски (чанки) разумным маленьким размером (4-16 Мб), посжимать отдельно и выходный файл наполнять сжатыми кусками, пока он не перейдет лимит в 100 Мб, а последний невлезающий кусок откатить и сделать началом нового файла. Типа сжатие можно распараллелить, а лимиты чанков и выходных кусков менять независимо?
Но я не понял, как определить границы сжатых чанков в выходном файле. То есть я не смогу, как winrar, рассматривать последовательность .part1, .part2, ... как один виртуальный файл, и разархивировать, будто нет границ между файлами? То есть приступая в будущем к восстановлению, я должен знать какую-то схему, иначе не смогу прочитать бэкап?
И еще вопрос по вашему опыту. Насколько итоговый коэффициент сжатия через чанки может быть хуже, чем сжатие всего файла?

AlexMt
12.02.2026 04:32Когда увидел вот это "Тихо. Без исключений. В проде." сразу как-то ChatGPT повеяло.

v-ctor
12.02.2026 04:32Про Kotlin на backend ничего нет? Или на 80% пересечение с Java и только 20% разбег в асинхронщине: потоки пулы (или что там нынче в Java?) с одной стороны и корутины, каналы с другой? Пропорции взял с потолка.

adsumushero Автор
12.02.2026 04:32Kotlin на бэке в моей выборке плюс минус 4% всех сессий маловато для отдельного разбора. Но подметил верно, процентов 70–80 задач пересекаются с Java.

v-ctor
12.02.2026 04:32А вот 4% это потому что реально такая доля вакансий и соотв собесов или исследование было направлено на сбор инфы по перечисленным языкам.

Kulikovgdf
12.02.2026 04:32Спасибо за инфу, я как раз собираюсь идти на собес в тбанк, вакуха на фронте.
DjUmnik
Почему нет PHP?
adsumushero Автор
Кодовых задач, которые можно красиво разобрать пока мало. В основном аля "спроектируй сервис на Laravel". Да и выборка по пыхе достаточно скудная.
Tannenfels
Предлагаю идею: задача "заставь работать код после дебила-вайбкодера"
Arenoros
бельше интересно почему нет C++, в яндексе на сколько мне известно это одна из самых больших команд