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