Рубрика «system design»

System Design Interview — пожалуй, один из самых «бесформенных» этапов технического собеседования. Здесь важно не найти единственно верное решение, а продемонстрировать системное мышление, умение работать с абстракциями, логически выстраивать архитектуру и аргументированно делать выбор технологий.

Александр Кучук, эксперт сообщества Spring АйО, подготовил авторскую статью, в которой шагом показывает, как структурировать интервью, какие вопросы задавать, как рассуждать и что оценит интервьюер.

Кстати, Александр ведет репозиторий с заметками: Читать полностью »

К сожалению, в последнее время всё больше и больше людей советуют использовать JWT для управления пользовательскими сессиями в веб-приложениях. Это ужасная, ужасная идея, и в этом посте я объясню, почему.

Чтобы избежать недопонимания, я введу термины:

  • Stateless JWT – Токен JWT, который содержит сессионные данные, вшитые непосредственно в этот токен.

  • Stateful JWT – Токен JWT, который содержит лишь идентификатор сессии. Сессионные данные хранятся при этом на сервере.

  • Читать полностью »

Несколько лет назад я начал всё больше разбираться в том, как проектируются большие и сложные IT-системы. Ещё и такие, которые выдерживают огромные нагрузки: обрабатывают запросы миллионов пользователей каждый день, гоняют петабайты данных ежемесячно и всё такое. YouTube, TikTok, Google Docs и т.п.

А в последнее время и по работе чаще стало необходимо погружаться в архитектурные обсуждения. Интересно ещё и то, что в крупных IT-компаниях всё чаще наблюдается тренд на проведение так называемых System Design Interview. Это по сути архитектурное собеседование для специалистов с серьёзным уровнем.

Читать полностью »

Привет! Сегодня поговорим про такого зверя, как positional bias. Если вы работаете с поисковыми системами или рекомендательными сервисами, то наверняка сталкивались с этой проблемой. Разберёмся на примере задачи по ml system design — предсказание вероятности клика по товару (известной как CTR — Click-Through Rate) в поисковой выдаче.

Описание задачи.
Вы владелец товарной платформы. На платформе продавцы могут продвигать товары за фиксированную ставку. Ставка взимается только в том случае, если был совершен клик по товару. У вас есть определенное количество свободных слотов для продвижения товаров. Читать полностью »

С момента написания предыдущей статьи я находился под пристальным вниманием. Попытка опубликовать материалы на англоязычных платформах обернулась фиаско — в первые же минуты легионы последователей тайного братства обрушились с критикой:

— Нет никакой организации! — вопили они.

Подозреваю, что слежка велась через мой телеграм-канал.

Читать полностью »

Кэш — это временное хранилище данных, предназначенное для ускорения доступа к часто используемой информации. Он работает по принципу сохранения уже обработанных данных, чтобы при повторном запросе не выполнять те же вычисления или не запрашивать информацию из медленных источников, таких как база данных или внешний сервер. Благодаря кэшу приложения работают быстрее, снижается нагрузка на систему, и пользователи получают мгновенный отклик вместо долгого ожидания.

Читать полностью »

50 терминов системного дизайна, которые должен знать каждый разработчик - 1

1. Масштабируемость / Scalability

  • Масштабируемость — это способность системы поддерживать возросшую нагрузку путем добавления дополнительных ресурсов
  • Примером является добавление дополнительных серверов для обработки увеличившегося веб-траффика
  • Что такое масштабируемость и как ее достичь?

2. Балансировка нагрузки / Load Balancing

  • Балансировка нагрузки — это разделение входящего сетевого траффика между несколькими серверами для снижения нагрузки на каждый из них (во избежание того, чтобы на один сервер приходилось слишком много траффика)
  • Примером является распределение веб-траффика между несколькими экземплярами EC2 с помощью сервиса AWS Elastic Load Balancer (ELB)
  • Понимание балансировки нагрузки

Читать полностью »

Привет! Что‑то я давно не писал, отбился от рук, а ведь когда‑то мы целый курс машинного обучения на Хабре вели. Расскажу про свой недавний заход по собесам, что спрашивали, какие выводы сделал. Контекст: Applied Machine Learning science (в том числе этот ваш Generative AI), Нидерланды, уровень синьор+. Я долго получал отказы, старался не унывать и в конце таки нашил лычку Staff GenAI Field Solutions Architect в Google Cloud. Тут поделюсь статистикой собесов, полезными ресурсами и, конечно, всякими советами.

Ну и как настоящий продажник и типа блоггер, упомяну, что все это и многое другое я описывал в Читать полностью »

Для любого разработчика глубокое понимание основных принципов системного проектирования является необходимым условием для создания стабильных и масштабируемых программных систем, способных обеспечивать высокую производительность. Системное проектирование (System Design) включает разработку архитектуры и структуры программной системы, направленную на удовлетворение специфических требований и обеспечение требуемых показателей производительности.

Читать полностью »

О чем эта статья

Это продолжение моих похождений по ФААНГ. Предыдущая статья была о моем опыте собеседования в Амазоне: https://habr.com/ru/post/646319/.

Здесь я тоже поделюсь всем процессом: как я попал на собеседование, все этапы, вопросы на интервью, как я готовился, некоторые детали офера, и общее впечатление от интервью. Также будут всякие сравнения опыта собеседования в Майкрософте и в Амазоне.

К слову, все собеседования тоже сейчас проходят онлайн, и никаких онсайт интервью нет.

Предложение в Линкедине

Читать полностью »

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js