System Design World
4.18K subscribers
169 photos
20 videos
126 links
Улучшаем навыки проектирования систем вместе! Готовимся к System Design Interview.

Автор - Старший бэкэнд разработчик HighLoad систем, специалист кибербезопасности Невзоров Владимир - @vova_dev
Download Telegram
Mock Interview. URL shortener.

💡Важный аспект подготовки к интервью - практика.
В случае System Design интервью её можно получить как на самом интервью, так и заранее - сходив на мок интервью.

Нашёл руководителя одного из подразделения BigTech компании для проведения мока со мной.
Задача выпала такая:
"Разработать сервис по сокращению url"

▶️ Держа в голове схему прохождения принялся за дизайн.
Получалось бодро проходить по шагам интервью. Неожиданно для себя шустро делал вычисления🙂
Порой интервьювер замолкал. Воспринимал это за сигнал для проявления инициативы.
Спрашивал - "Подойдёт ли такое решение? Переходим к следующему этапу?".
Ведь собеседование - это обоюдный процесс. Монолог здесь не проходит.

Уложились в 53 минуты.
После была дана ценная обратная связь.

Сделал обзор этого мока. Сократил до 8 минут выделяя основные этапы:
Обзор mock интервью по System Design. Url shortener.

#Interview
🔥81👍1
🌠 Mock Interview. URL shortener. II.

📝 В этот раз интервьюировал уже я.
Делал краткие заметки по ходу интервью.

⚙️ Этапы интервью
Немного изменил условия. Собеседник бодро шёл по пунктам проектирования.
1. Начал с уточнений функциональных, нефункциональных требований. Очертил скоп задачи.
2. Рассчитал нагрузку.
3. Создал подробное REST API.
4. Нарисовал небольшой дизайн.
5. Расписал 2 версии генерации короткого url.
6. Ответил на дополнительные вопросы.
7. Обратная связь.

При этом, добротно комментировал. В инициативном порядке переходил к следующим пунктам.

Редкие вопросы
Видя его бодрый настрой старался не сбивать. Из самых больших вопросов спросил:
1) "Что будет, если короткой ссылки не окажется?" До этого был расписан лишь "happy path" в api.
2) "Давай вернёмся к требованиям и проверим, всё ли реализовали?". Чтобы натолкнуть на мысль по поводу самого сервиса генерации. До этого был описан лишь алгоритм, без подробностей кто его будет исполнять. И как с этим кем-то будут взаимодействовать его бэкэнд stateless сервисы.
=> Дорисовал оранжевый ромб. Объяснил взаимодействие.

💤 Медленная SHA
Я хотел сказать, что SHA может оказаться медленной.
Потом вспомнил, что условие "Получать url как можно быстрее" было в ранее решаемой мною задачи. А здесь я его не указал.
Можно взять на заметку, что криптографические функции медленные. Если есть требование по скорости и есть другой вариант(здесь 2ой - последовательное деление по модулю числа) - лучше выбрать его.

Тайминг.
ts - завершенная активность

5 - чтение задачи, уточнение ф/нф требований, цифр
11 - подсчёт места для хранения данных
19 - создание API
22 - верхнеуровневый дизайн системы
33 - описание алгоритмов
43 - размышление о storage - SQL, NoSQL, sharding
46 - финал, ответ на вопрос по требованиям
50 - доп вопрос(*) - "Как будем мониторить систему? Как понимать, что она работает?"
55 - доп вопрос(**) - "Стартап пользуется популярностью. Решили ввести платный функционал. Пользователь сам можем задать свой короткий желаемый url."

#Interview
👍8
📹 Mock Interview. URL shortener. III. English version.

✍️ Закрепим тему 3им решением.
Сегодня в онлайн проведём интервью с англоговорящим коллегой.
Если есть пожелания по дополнению требований, условий задачи - you are welcome :)

Кандидат поддержал идею наблюдателей.

🕗 8 p.m. GMT+3 / 20:00 по Москве.

https://meet.google.com/wky-yehd-saw

#Interview
👍8
©️ URL shortener. Community edition.

▶️ Закончил монтаж состоявшегося коллективного мок интервью.

👥 Вместе размышляли. Не подгоняли. Кажется, что это хорошо.
Когда нет deadline, до которого дрожащими руками нужно успеть пройти все шаги.

🆙 В один момент инициативу взял один из участников, которому помогали советами и дополнительными вопросами для движения вперёд.

https://youtu.be/1g7JBd-pS5s

#Interview
7👍1
⭐️Анонс проектирования youtube

Состоялась серия System Design Mock Interview с зарубежными коллегами, посвященная проектированию сервисов-аналогов youtube.
2 из них на английском.

Такой массовый заход на одну задачу позволит лучше погрузиться в её тематику.
Благодаря просмотру становится понятней, что:
1️⃣ Идеального решения не существует;
2️⃣ Каждый интервьюер расставляет свои акценты;
3️⃣ Интервьюер не обязательно знает больше твоего и других интервьюеров :)

Важно понять, что именно он хочет и дать ему это.
Просмотр 4ёх реализаций также:
1) Расширит кругозор проведения интервью;
2) Снабдит дополнительными техническими приёмами;
3) Поможет отвечать интервьюеру по теме.

Всё это увеличивает шансы на успешное прохождение реального собеседования.
▶️ Интервью в процессе монтажа. Скоро будет опубликовано 1ое.

#Interview #Pack
👍21
⚡️ Youtube design. "1ый пошёл!"

☁️ Я не помню, чтобы инструктор кричал или хлопал меня по плечу в знак поддержки. Я был первый в колоне на выход в неизвестную 600 метровую бездну.

🗯 Мною двигало желание попробовать что-то новое. Как и в этот раз.

👥 Предлагаю окунуться в атмосферу 1ого мок интервью по проектированию Youtube.

📍 Можно бесконечно готовиться к таким интервью. Думать, что проектировать можно лишь когда готов идеально на все 100% по какой-то неведомой шкале.

📌 А можно в какой-то момент решиться и применить принцип "Глаза боятся, руки делают". И сделать так хорошо, как ты можешь сделать сейчас. Умея так, как умеешь сейчас.

▶️ Итак, первое мок интервью по Youtube. Поехали!

#Interview
👍15🔥2
⚡️ Youtube design. English version.

🤷 Где можно найти англоязычного собеседника для мок интервью?
Могу привести несколько ресурсов:
1) pramp.com
2) system_design_interview tm channel

❗️ Дерзайте смело! Но не спешите начинать без моего предостережения... И совета.

🇮🇳 Все разы в собеседниках у меня были представители Индии.

👂 На интервью я превращался в слух чтобы не пропустить ни одного слова, вопроса. Я даже и представить не мог, что можно так концентрироваться на обычной речи.

🗣 Английская речь для меня не была проблемой. До этого дня.
Учился по учебникам с совершенным оксфордским акцентом. Смотрел тех же "Друзей" с уже менее разборчивым языком. Встречался с natives из различных штатов.

🐚 Превращаться в слух мне пришлось поскольку именно такого индийского акцента я ещё не встречал.

💥 Совет
На самом деле всё оказалось не так страшно. Слух привыкает. Организм из стрессового состояния переходит в режим нормального восприятия.
Достаточно помнить одно - если что-то не понятно, всегда можно спросить:
"Could you write it down, please?", - коллеги воспринимали всегда спокойно.

В представленном мок интервью мне повезло. По сравнению с другим будущим здесь я чувствовал себя "pretty comfortable" как в плане восприятия языка, так и в целом касательно атмосферы интервью.

▶️ Итак, второе мок интервью по Youtube. Поехали!

#Interview

https://www.youtube.com/watch?v=cB9Ph8xHA0A
🔥3👍2
👍Нас 700! 🏆Давайте отметим! 🎉

🍰 Приглашаю отпраздновать текущее достижение в кафе.
Пообщаться на тему System Design Interview, архитектуры, суровой жизни в IT.

Есть подходы - стиснуть зубы и идти постоянно ставя перед собой новые цели.
А ещё можно радоваться процессу 😊 Давайте порадуемся вместе)

Меньше, чем за год с момента создания канала были освящены такие стороны System Design как:
1️⃣ Нефункциональные требования. В формате видео и #cheat_sheets
2️⃣ Алгоритм успешного прохождения интервью
3️⃣ Книжные материалы для подготовки:
а) от Александра Поломодова. Спасибо Андрею за запрос!
б) от Михаила. Спасибо Михаилу!
4️⃣ Освящены крупные IT конференции HighLoad++, yatalks.
На yatalks взял интервью у Александра Поломодова, в котором поговорили о System Design в Тинькове.
Текстовая версия. Можно почитать, понять, в том числе чем дышит компания сейчас. #conference
5️⃣ Сделан доклад на тему Шардирования, на подготовку которого ушёл примерно месяц активного изучения текущих докладов с конференций, разрозненной информации, личному общению с разработчиками БД(tarantool, GaussDB) . Всё основное сведено в единый рассказ от простого к сложному. С реальным примером в конце.
6️⃣ Начата серия проведения, прохождения и анализа mock interview с популярными задачами. #Interview

💪 Дальше-больше!
Предложение по освящению дальнейшим тем приветствуются!

На нашей офлайн встречи будет гвоздь номера - задача с конференции HighLoad++, которую я встретил на стенде yandex.cloud. А затем на yatalks :)
Полагаю, что её дают и на реальном интервью.
Порешаем, обсудим, найдём лучшее решение.

📝 Можно списаться в личных сообщениях или ниже в комментариях.
Ориентировочно - Москва, центр, начало июня.

You are welcome!🖐
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81🔥1👀1
🚩 минут обзорного концентрата проектирования youtube.

😎 В этот раз я оказался в роли собеседующего. Хочу отметить, что концентрироваться надо не меньше, чем при собственном прохождение.
Кандидат инициативно проходится по этапам интервью. Задаёт уточняющие вопросы. Ему важно, что его слышат, отвечают. И что он делает именно то и в том объёме, что предполагается для данной сессии интервьюером.

⭐️ Осветил основные точки дизайна и переходы между этапами сжав интервью 1 час -> 7 минут.

⚙️ Ближе к концу была задета тема масштабирования NoSQL БД с комментариями к видео. Говорили о выборе shard_key, consistent hashing(помним доклад?).
От выбора этого ключа зависит хорошее распределение нагрузки.

💪 Обзор будет полезен для улучшения понимания строительства данной системы и прохождения интервью в целом.

🙂 Приятного просмотра!

🔽 P.S. А какой бы ключ шардирования выбрали вы и почему?...

https://www.youtube.com/watch?v=rJHu-3ZFwBg

#Interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🔠онны свободы и минимум вопросов

Финальное 4ое интервью по теме youtube завершено!
Опубликованный набор позволяет понять специфику данной задачи, популярные вопросы.

✈️ Особенностью данного собеседования было то, что интервьюер(спасибо Alex!) дал максимум свободы.
Перешёл в режим слушателя. Спрашивал редко, но метко. Чувствовалось, как от корректности и полноты ответов зависит успех прохождения.

Интервью можно смотреть фокусируясь на вопросах интервьюера. Попытаться понять, что именно он хотел узнать. И насколько ответ был дан в полном объёме.

🎟 Из фишек самого видео - вставлены визуальные памятки наступления очередных этапов и их особенности.

😊 Приятного и полезного просмотра!

🔽 Как считаете, остались ли неосвещенные вопросы по теме проектирования youtube?

https://www.youtube.com/watch?v=WDEiIz3WtgA

#Interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🎁 Бонусное интервью - публичный дизайн youtube стримов

👨‍💻 Пригласили ребята с дружественного канала FAANGTalks на публичное собеседование.
Выпала задача, очень близкая к паку из 4ёх дизайнов youtube выше - спроектировать механизм стримов.

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

☝️ Из главного я бы отметил важность указания протокола поточного вещания. В конце поговорили про udp, WebRTC.

🔽 Старт stream сессий публичного интервью неуклонно приближается. Какую платформу для вещания можете порекомендовать?

#Interview

https://www.youtube.com/watch?v=vRyEhvkjiPw
👍52
⚡️ System Design Stream. 1ый пошёл!

👥 Сегодня проведём сессию проектирования системы вместе с Максимом, выразившим своё желание в посте-анонсе стримов.
Заходи, будет горячо!)

▶️ Ссылка на видеовстречу:
https://telemost.yandex.ru/j/52591761468172
Старт в 20:00.

#Stream #Interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
⭐️Анонс проектирования файлового хранилища

Состоялась серия System Design Interview с коллегами, посвященная проектированию сервисов-аналогов dropbox/google drive.

Как и в случае с youtube такой массовый заход на одну задачу позволит лучше погрузиться в её тематику.
Благодаря изучению набора становится понятней, что:
1️⃣ Идеального решения не существует;
2️⃣ Каждый интервьюер расставляет свои акценты;
3️⃣ Интервьюер не обязательно знает больше твоего и других интервьюеров :)

Часть интервью будет переложена в текст. Часть останется в формате видео. Каждый сможет выбрать что ему сейчас заходит лучше.

Такое массовое изучение одной темы увеличивает шансы на успешное прохождение.
▶️ Совсем скоро будет выложен первый разбор. Тот самый 1ый стрим с Максимом :) Стараюсь дополнить само решение комментариями так чтобы в добавок к основной нити, что вёл кандидат(и у него это отлично получилось!) выстроить ещё один обучающий слой в виде заметок, пожеланий.

😊 А какая задача из System Design Вам нравится больше всего?

#Interview #Pack
👍10
📦 Файловое хранилище спроектировано. Полюбуйтесь!

✴️ Чёткое проектирование по шагам. Кандидат видел основную линию дизайна. Делал отсылки к дополнительному функционалу. Один из которых - построение аналитическое подсистемы - в конце и реализовал.

🎟 Из фишек самого видео - вставлены визуальные памятки наступления очередных этапов. Добавлены заметки на полях в качестве дополнительного обучающего слоя чтобы польза от просмотра видео для Вас была максимальной.

😊 Приятного и полезного просмотра!

Как считаете, реализация какой части функциональных требований оказалось самой сложной?

https://youtu.be/t4akRxFCAHc

#Interview
❤‍🔥8👍62
🌟 Спонтанное интервью-стрим!

🕡 18:00 Teamlead Avito.
Ссылка ближе к этому времени в комментариях.

Сам в шоке 😀

#Stream #Interview
🔥24