бегущий по собесам
980 subscribers
22 photos
2 videos
32 links
Download Telegram
X(Twitter) выложили на гитхаб рекомендательный алгоритм формирования ленты пользователя. Вкратце - сервис Thunder отдает посты подписок, фильтрует и объединяет с Phoenix - ML система рекомендаций. На выходе - ранжированный Top K

Пара интересных технических нюансов:

1) Thunder - Ingestion pipeline.
Внутри работают два консьюмера. Первый берет сырые данные - TweetEventData - скелет поста, превращает в LightPost и перекладывает в топик второму консьюмеру

- Обработка данных. Убираем self.retweet, разделяем оригинальные твиты и реплаи через is_reply, is_retweet

- Хранение. Второй консьюмер складывает данные в PostStore - структура на базе потокобезопасных мап

- Отказоустойчивость. В проекте нет персистентного хранилища и второй консьюмер не коммитит офсеты. Если он упал, сервису не поставится readness проба, пока все сообщения не прочитаются

2) Фильтрация просмотренного.
В сервисе Home Mixer применяются доп фильтры в том числе - Bloom filter чтобы отсеить просмотренные твиты.
🔥21👍9🍓3
Говорят у ии проблемы с матаном, поэтому пока нас не заменили - врываемся в смежные области

https://www.youtube.com/watch?v=ARxtLv7kgEk
❤‍🔥17😁127👎3🔥3🤮1💩1
В плате провожу интервью по гошке - много вакансий прилетело, и рекрутеры попросили помощи.
Попался кандидат который списывает с AI 😐.

То чувство когда шел на интервью с нормальными пацанами, чтобы поспрашивать про B-tree и LSM-tree, а кандидат отводит взгляд на другой экран и копирует текст💀.

Пообщаюсь об изменении процесса. В текущее время собесы по языку должны сильно измениться или вообще исчезнуть. Ну а литкод и систем дизайн - база as always
Please open Telegram to view this post
VIEW IN TELEGRAM
😁168🔥8👎1🤮1🤡1🍓1
Skip List

В рамках реализации Redis CodeCrafters есть глава sorted set, который применяется в дизайне рейтинговых систем(Leaderboards). Sorted set как и некоторые LSM-tree: Cassandra, LevelDB, RocksDB используют под капотом skip list.

Давайте решим design skip list на литкоде. Имейджин твое лицо когда на собесе дали эту задачу😂

Из интересного, skip list вероятностная(probabilistic) структура данных. Я постарался дать небольшое введение для удобного переключения на скрины

Структура skip list - уровни, каждый уровень - отсортированный связный список.

Node - содержит val и массив nexts, через nexts[i] мы выбираем уровень, len(nexts) говорит о высоте текущей Node.

Килер-фича skip list - поиск, вставка, удаление за log(n), все потому что высота ноды выбирается случайно через probability(обычно это 0.5)

Search
Вкратце алгоритм - пока следующий элемент меньше target двигаемся вправо, если значения равны элемент найден. Иначе спускаемся вниз

Insert
Используется доп массив update для сохранения потенциальных ссылок после которых добавится новое значение. Функция - get_random_level вычисляет уровень по который мы добавим новый элемент. Описание функции не влезло на скрин поэтому вставлю сюда


def get_random_level(self) -> int:
level = 1

while random.random() < self.probability and level < self.max_level:
level += 1

return level


Erase
С массивом update работаем как и в insert. Уточнение - дубликаты в skip list могут быть и выглядеть как несколько башен, здесь мы решаем удалить самую первую - candidate = update[0].nexts[0]
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥244❤‍🔥3💩2🤡2👎1🍓1
Открыт и рад любому фидбэку

Ставь палец вверх если хочешь такой же разбор LRU, LRU-K, LFU. Спрашиваю потому что эти задачи намного популярней чем skip list
👍80🖕13🍓3💩2🤡2🦄2👎1
Наблюдение #1
Всегда уточняй какой палец вверх имеешь в виду

Наблюдение #2
Тг посты не подходят для описания сложных, технических вещей, перенес skip list в telegraph, посмотрю как пойдет

https://telegra.ph/Skip-List-04-02
20😁10🔥8👍3👎2🤮2🤡2🍓1
This media is not supported in your browser
VIEW IN TELEGRAM
Все разрабы пока фича вайбкодится
😁4712🔥82🤮2💩2🤡2🍓1
Верхнеуровнено расписал про алгоритмы вытеснения в кэше и почему LRU-K это золотая середина

https://telegra.ph/LRU-LRU-K-04-13
🔥2014👍3🍓2
Нужно качать линкедин говорили они

В этом время линкедин чела который сменил Тим Кука

Интересно какой у его профиля SSI
😁42🔥12🍓3👍1🤡1
Привет

Чутка потерялся какой контент делать дальше, поэтому расскажу что есть на душе😘


Придавило работой, в середине мая деплоим банкоматы в прод. Уже были успешные операции пополнения и снятия. Беру на себя больше сырых задач - без аналитики. Дедлайн горит, появляются новые требования от "мексиканского цб". Как релизнем, скину фотку банкомата


В начале года хотели переезжать в Барсу по номаду, но нам отказали в шенгене и в аппелляции, поэтому переезжаем по рабочей визе.

Расскажите что нового у вас
Please open Telegram to view this post
VIEW IN TELEGRAM
21🔥9🍓4
Подписывайтесь на канал Тима - https://t.me/nutimnuemae

Он работал в Яндексе, Авиасейлсе, а сейчас работает в Болт, у него много опыта и сильная мат.база
13❤‍🔥7
😁31🔥8🍓4👍1🤝1
Любой разраб когда нужно реализовать at least once доставку в кафку
😁22🔥3🍓2
По работе пишу outbox паттерн с поддержкой порядка доставки. Данный паттерн часто спрашивают на интервью. Недавно мой напарник снизил уровень кандидату с сильного мидла до джун+ за поверхностный рассказ этого паттерна 💀

Концепция паттерна - атомарно сохранить данные в бд и отправить их в кафку с помощью следующих двух пунктов

• Инсерт в бизнесовую и outbox таблицы происходит в одной транзакции
• Шедулер поллит outbox и пытается отправить в кафку

Как реализовать второй пункт конкурентно и поддержать порядок:

1) Простой вариант - select for update, для предотвращения race condition, внутри которого отправляем в кафку и пытаемся обновить статус на sent

Минус - держится бд транзакция на отправку в кафку

2) Вариант сложнее - Claim and finalize

Поле claimed_at с текущей датой - индикатор что ивент взят в работу - воркер пытается его отправить(финализировать) вне транзакции и рекавери джоба для сброса claimed_at в null для повторной отправки, работающая по таймауту.


Порядок

У ивентов есть монотонно возрастающий id, если пришел ивент с id=2, но событие с id=1 не отправилось, ивент сохраняется в отдельную таблицу - pending_event, затем джоба пытается перелить этот ивент в outbox.

Здесь есть race condition между консьюмером ивентов и джобой переливающей ивенты - ивент с id=2 может попасть раньше в pending_event и следовательно в outbox. Можно взять pg_advisory_lock по entity id с которым эти ивенты связаны


—————
Немного рефлексии🤔

Удивлен как ai агенты в разы ускоряют разработку такого паттерна, а главное повышают надежность. Агент помог сгенерить тесты на все возможные race condition.

От отрицания переходим к принятию - нейросети заменят меня, нейросети заменят тебя
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍76😢1🍓1
В универе я учился на информационную безопасность

Мы с другом решили погрузиться в мир нейросетей через матлаб - запустили перцептрон, cкормили первую часть последовательности из 0 и 1 и пытались предсказать продолжение.
Хотели прогнозировать действия хакера при взломе автоматизированной системы. По итогам написали статью в журнале нашего универа.

Я скормил ее чат гпт и он выдал краткое описание статьи🤔

Статья выглядит как:
1) Мы скормили MATLAB бинарные нули и единицы
2) Нейросеть обучилась
3) Все злоумышленники вычислены

Если подумать, то в 2026 году примерно так и выглядит любой AI-стартап:
1) Мы скормили модели бинарные нули и единицы
2) Accuracy вырос после x10 нейронов
3) Ищем инвестиции

Еще в те времена - 2016, было все понятно про AI

P.S За опубликование статьи получили 13к стипендии в течении семестра🥂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40😁11👍6🍓2
Время порекомендовать хорошие каналы разработчиков


• Андрей(@programming_space) работал в майкрософт, устроился в Snowflake, разбирает литкод собесы/дейлики и систем дизайн

• Серега(@sergei_gorlov) работает в плате около двух лет, проводит моки, работали вместе в небезызвестном стартапе ioio 😁

• Ден(@nopanicengineer) недавно залетел в плату, сейчас вкатывается в матан через Khan Academy и Math Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
21🔥9👏3🍓2
На канале добавилось 100+ подписчиков, всех рад видеть❤️. Чутка о себе - работаю в Плате, делаю бэк для банкоматов, недавно заехали в прод. Олег тыкал тестовый банкомат, пополнение отвалилось, но пока не уволили🏆🏆

Летом планирую переезжать в Барселону. В прошлом году был interview loop в aws - ищется по #aws - то с чего начался мой канал

Здесь стараюсь писать интересно о технических вещах и о том как развиваюсь. На данный момент сижу в codecrafters.io, использую mathacademy чтобы прокачивать матан, также начал вкатываться в архитектуру LLM, щупаю этот домен в поисках интересного для себя

Главная цель это канала - общение с людьми и шаринг знаний, опыта и мотивации😘

Напишите в комментах о себе - все чем хотите поделиться
Please open Telegram to view this post
VIEW IN TELEGRAM
35👍13😁4🍓1