Найти в Дзене
Экспресс-метод подготовки к System Design Interview
Мой первый опыт прохождения собеседования по проектированию систем в виде отдельной секции был неожиданным. Я к нему заранее не готовился, потому что претендовал на позицию middle/middle+ разработчика. Но по результатам пройденных секций мне сказали, что хотят посмотреть мои способности проектирования. А так как на позицию архитектора я не претендовал, решил особо не готовиться и взял только два выходных дня на подготовку. Собеседование я прошел успешно. Ниже полный план подготовки «с нуля» за 2 дня до уровня, достаточного senior-разработчику. День первый Читаем книгу Alex Xu “System Design Interview – An insider's guide” Читаем на любом языке, который вы понимаете...
1 месяц назад
Что проверяют на классическом System Design Interview (часть 2
Что проверяют на классическом System Design Interview (часть 2) ⸻ Понимание масштабирования и устойчивости Здесь начинаются hard skills. Интервьюер проверяет понимание кандидатом слабых мест системы, как она поведёт себя под нагрузкой. Кандидат должен знать, какие проблемы решают основные инструменты — горизонтальное и вертикальное масштабирование, кэширование, очереди, партиционирование, репликация, балансировка, ограничители запросов, ретраи, фолбэки. Не обязательно знать все нюансы каждой технологии, нужно понимать принципы. Умение находить компромиссы (trade-offs) Любой элемент архитектуры...
3 месяца назад
Что проверяют на классическом System Design Interview (часть 1
Что проверяют на классическом System Design Interview (часть 1) Я разделяю критерии на 2 основных блока. Первый — это критерии, которые покрываются так называемым фреймворком System Design Interview, самим форматом и стандартом проведения собеседования, про них нужно просто не забыть. Второй блок — это непосредственно проверка качеств кандидата по soft и hard навыкам. ⸻ Структурность мышления Вы не должны начинать решение с перечисления технологий, которые у всех на слуху. И не должны сразу начинать составлять диаграмму компонентов. От вас при решении инженерной задачи ожидается последовательный...
4 месяца назад
Что проверяют на классическом System Design Interview
Что проверяют на классическом System Design Interview На всякий случай уточню, что ниже приведено моё мнение, основанное на личном опыте прохождения и проведения собеседований по проектированию систем и на информации, почерпнутой из книг и статей. Я разделяю критерии на 2 основных блока. Первый — это критерии, которые покрываются так называемым фреймворком System Design Interview, самим форматом и стандартом проведения собеседования, про них нужно просто не забыть. Второй блок — это непосредственно проверка качеств кандидата по soft и hard навыкам. ⸻ Структурность мышления Вы не должны начинать решение с перечисления технологий, которые у всех на слуху...
4 месяца назад
Дисклеймер
Дисклеймер Все публикации в данном блоге являются исключительно моими личными материалами, основанными на открытых источниках и на моём собственном опыте, анализе и выводах. Они не содержат и не могут содержать конфиденциальной, коммерческой или внутренней информации работодателя, клиентов, партнёров или любых иных организаций, с которыми у меня есть или были договорные либо иные юридические отношения. Любые компании и организации, с которыми я связан, прямо или косвенно, не...
5 месяцев назад
System Design Interview: Начало
System Design Interview: Начало На собеседованиях по проектированию систем проверяют, насколько хорошо вы ориентируетесь в современном ландшафте высоконагруженных систем — балансировщики, очереди, SQL- и NoSQL-базы данных, реплицирование и шардирование — и ваши способности работать с требованиями, реагировать на изменение требований, умение отсечь лишние детали. Или — как вы заучили стандартные шаблоны задач для таких собеседований… В каком-то смысле эти собеседования пришли на смену Object-Oriented Design собеседованиям. System Design собеседования более универсальны, а ещё их проводят в Google — так они и стали популярны...
5 месяцев назад
Выберите 1-2 темы
Опрос
6 месяцев назад
Выбирай сердцем
Выбирай сердцем Давно хочу написать серии постов по нескольким темам, рассказать про свой опыт. Весь этот опыт я получил примерно 2 года назад, когда последний раз готовился к смене работы. Выберите, пожалуйста, наиболее интересные вам темы. Самая залайканная тема попадет в посты в первую очередь. Голосование завершено, спасибо всем...
6 месяцев назад
Про верхние перцентили
Про верхние перцентили Или процентили, это то же самое — percentiles. Или квантили. 99 перцентиль — это 0.99 квантиль. При мониторинге систем количество ошибок или время выполнения запросов обычно рассчитывают в перцентилях. Например, время отклика для p95 равное 1с означает, что 95% запросов выполняются быстрее чем за 1с, а 5% выполняются за 1с или дольше. Насколько угодно дольше. Возможно ваша система устроена так, что пользователь с бо‌льшим количеством данных получает бо‌льшую задержку. И вероятно, что этот пользователь приносит и бо‌льшие деньги. Например, ему в премиум тарифе доступен большой объем хранящейся информации...
7 месяцев назад
Как ещё можно передать версию API
Как ещё можно передать версию API Конечно чаще всего используется префикс вида v1 в URL. Но вот вам ещё пара способов для расширения кругозора. HTTP-заголовок Клиент передает версию API, по которой хочет выполнить обмен, в HTTP-заголовке Accept: или другом подобном. Такой способ встречается в GitHub API v3 и в Stripe: Accept: application/vnd.github.v3+json Stripe-Version: <date> Хранение версии API на стороне сервера Если клиент при запросах авторизуется...
7 месяцев назад
Что такое версия API
Что такое версия API Это прям база-база. Наверняка когда вы в первый раз увидели URL вида /api/v1/item/{id}, вы задумались "что такое v1?" Даже в базовых уроках по разработке API зачастую рекомендуют при указании URL сразу добавить в него версию v1. Версия API напрямую связана с совместимость клиента и сервера при RESTful взаимодействии. Вы можете без проблем развивать свой API, пока ваши изменения обратно совместимы по запросам от клиентов к серверу и прямо совместимы по ответам сервера клиенту (см. предыдущий пост). Но когда бизнес-требования невозможно выполнить без потери совместимости — интеграция сломается без обновления всех клиентов...
7 месяцев назад
Прямая и обратная совместимость в обмене сообщениями
Прямая и обратная совместимость в обмене сообщениями В системах обмена сообщениями (например, через Kafka, RabbitMQ, REST API) формат данных со временем меняется. Чтобы обновления сервисов не приводили к сбоям, важно понимать два ключевых вида совместимости — прямую и обратную. Мои менти часто их путают, поэтому захотел написать об этом. Прямая совместимость (forward compatibility) Это когда старые версии клиентов могут читать сообщения, созданные новыми версиями продюсеров. Например, если в схему добавили новое поле, старый клиент его просто игнорирует и продолжает работать без ошибок. Обратная...
7 месяцев назад