4817. На собеседовании спрашивают: «Оцените, сколько дней потребуется, чтобы внедрить авторизацию через OAuth2». Ваш ответ?
Anonymous Quiz
7%
Назову 5 дней, так как OAuth2 типовой
81%
Скажу, диапазон от 2 до 10 дней, плюс риски
6%
Попрошу помощи у других
6%
Откажусь отвечать
Понимание, что оценка без контекста — гадание.
Умение задавать уточняющие вопросы:
Какой провайдер (Google, собственный)?
Есть ли готовый SDK, примеры?
Требуется ли поддержка мобильных приложений?
Как обновлять токены, как хранить секреты?
Выделение рисков: если документация плохая или провайдер меняет API, то срок может вырасти вдвое.
Почему правильный ответ B
Интервьюеры хотят видеть аналитический склад ума, а не цифру.
Реальный опыт
Кандидат, который задавал вопросы, получил оффер, а тот, кто назвал 3 дня без уточнений — нет.
Вывод
На собеседовании никогда не давайте оценки без уточнения контекста.
Please open Telegram to view this post
VIEW IN TELEGRAM
80% системных аналитиков заваливают собеседования из-за глупых ошибок
Самый простой способ подготовиться к собеседованию — это послушать, как его проходят другие.
В канале System | Собеседования собрали базу реальных технических интервью, чтобы вы могли учиться на чужих ошибках, а не на своих.
Что внутри:
💘 Разборы живых записей — от проектирования API до работы с БД
💘 Ключевые вопросы лидов из бигтеха
💘 Анализ ответов — где кандидат «поплыл» и как нужно было ответить правильно
Подписывайтесь, чтобы получить доступ к базе живых разборов и увереннее чувствовать себя на собесах.
Самый простой способ подготовиться к собеседованию — это послушать, как его проходят другие.
В канале System | Собеседования собрали базу реальных технических интервью, чтобы вы могли учиться на чужих ошибках, а не на своих.
Что внутри:
Подписывайтесь, чтобы получить доступ к базе живых разборов и увереннее чувствовать себя на собесах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
4818. В процесс согласования заявки на закупку добавлен этап «Если сумма > 1 млн, требуется подпись финансового директора, иначе — только руководителя отдела». Какой элемент BPMN нужен?
Anonymous Quiz
3%
AND-шлюз
77%
XOR-шлюз (исключающий) с условием на каждом пути
18%
OR-шлюз
2%
Событие-таймер
Нужно выбрать один из двух взаимоисключающих путей в зависимости от суммы заявки: либо подпись финдиректора, либо подпись руководителя отдела. Два пути никогда не выполняются одновременно.
Что такое XOR-шлюз
Исключающий шлюз (XOR) имеет один вход и несколько выходов (или наоборот, несколько входов и один выход при слиянии). При ветвлении он активирует ровно один путь, проверяя условия-охранники (например,
[сумма > 1 млн][сумма <= 1 млн]Как моделировать
Шаг 1: после создания заявки — XOR-шлюз с двумя исходящими потоками:
Условие 1: сумма > 1 млн → задача «Подпись финдиректора».
Условие 2: сумма ≤ 1 млн → задача «Подпись руководителя отдела».
Затем оба потока сходятся в общую точку (например, в задачу «Передать в бухгалтерию»).
Почему не другие шлюзы
AND — запустил бы оба пути одновременно (подпись и финдиректора, и руководителя) и потребовал бы завершения обоих, что неверно.
OR — мог бы активировать один или оба пути, тоже не подходит.
Событие-таймер — ждёт наступления времени, не имеет отношения к условиям.
Реальный пример
В ERP-системе закупки до определённой суммы утверждает начальник отдела, выше — финансовый контролёр. XOR-шлюз идеально отображает это правило.
Вывод
XOR применяется для ветвления «или-или» на основе бизнес-данных. Аналитик должен правильно выбрать тип шлюза в зависимости от логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
4819. Вы описали диаграмму последовательности для сценария «Оплата заказа». В ней участвуют объекты: Клиент, Контроллер, СервисПлатежей, Банк. На самом деле Банк — внешняя система, отвечающая асинхронно через callback. Как это правильно изобразить?
Anonymous Quiz
2%
Простым сообщением без изменений
94%
Асинхронным сообщением и отдельным обратным асинхронным сообщением или получением callback
2%
Синхронным сообщением, но с таймаутом
3%
Не изображать взаимодействие с банком, так как это деталь реализации
Наивное описание синхронными сообщениями (сплошная стрелка с заполненным концом) подразумевает, что вызывающий объект ждёт ответа. Для внешнего платёжного шлюза типично: вы отправляете запрос, затем получаете асинхронный ответ через некоторое время (callback, webhook). Изображать это как синхронный вызов неправильно.
Как правильно
Асинхронное сообщение — открытая стрелка (линия со стрелкой на конце, но без заливки). Оно означает, что управление не блокируется.
Получение callback — изображается как входящее асинхронное сообщение от банка к контроллеру, часто с пометкой «callback» или «webhook».
Можно также использовать фрагмент
asyncПочему это важно
Асинхронное взаимодействие даёт другую последовательность: клиент получит подтверждение не сразу, а позже. На диаграмме это влияет на временные рамки.
Реальный пример
В интеграции с PayPal: ваш сервер отправляет запрос и продолжает работу. Через несколько секунд PayPal присылает уведомление на ваш endpoint. На диаграмме последовательности это показывается как два асинхронных сообщения (туда и обратно), возможно, с фреймом
parВывод
Аналитик, рисуя диаграмму последовательности, должен различать синхронные и асинхронные вызовы. Это влияет на проектирование таймаутов, ретраев и обработки callback.
Please open Telegram to view this post
VIEW IN TELEGRAM
4820. Врач в медицинской системе должен иметь доступ к картам пациентов только своего отделения. Администратор больницы — ко всем. Лаборант — только к результатам анализов, но не к диагнозам. Какая модель разграничения доступа наиболее подходит?
Anonymous Quiz
0%
Дискреционная (DAC)
97%
Ролевая (RBAC) с иерархией ролей и контекстными ограничениями (отделение, тип данных)
1%
Мандатная (MAC) с метками «секретно»
2%
Только полномочия по списку (ACL)
Врач (роль) — доступ к картам пациентов, но только своего отделения (контекст — отделение).
Администратор — все карты (вышестоящая роль).
Лаборант — доступ только к типу данных «анализы» (контекст — тип данных).
Почему RBAC с контекстными ограничениями
Ролевая модель (RBAC) назначает разрешения ролям, а не пользователям. Врачи, лаборанты, админы — это роли. Добавляются ограничения:
У врача: условие
patient.department == user.departmentУ лаборанта: условие
data_type == 'lab_results'У администратора: нет условий.
Почему не другие
DAC — владелец данных решает, кому дать доступ. Не подходит для медорганизации.
MAC — жёсткая классификация (секретно/несекретно), не подходит для бизнес-правил.
Только ACL — глобальные списки доступа для каждого объекта, трудоёмко.
Реальный пример
Electronic Health Record (EHR) системы используют RBAC с атрибутами (отделение, специализация). Лаборанты видят анализы, но не диагнозы (диагнозы только у врачей).
Что должен зафиксировать аналитик
Роли и права.
Контекстные ограничения (фильтры).
Иерархию ролей (старшая роль включает младшие).
Please open Telegram to view this post
VIEW IN TELEGRAM
4821. Вы аналитик в стартапе. Заказчик требует, чтобы система обрабатывала 10 000 заказов в секунду, хотя текущий пик — 10 заказов в секунду. Разработка такого уровня масштабирования обойдётся в утроение бюджета. Ваши действия?
Anonymous Quiz
0%
Принять требование и искать более дешёвую реализацию
100%
Анализ: спросить заказчика, откуда взялась цифра, предложить альтернативу и задокументировать риск.
0%
Отказаться от проекта
0%
Добавить требование в бэклог и забыть
Нереалистичные нефункциональные требования (NFR) — частая ошибка стартапов. Заказчик может назвать цифру «10 000» без обоснования, потому что «конкуренты так могут» или «на всякий случай».
Что должен сделать аналитик
Уточнить источник цифры: откуда ожидается такой рост, есть ли маркетинговые прогнозы или это просто желание.
Предложить компромисс: сделать архитектуру, которая позволит горизонтально масштабироваться, но не строить инфраструктуру на полную мощность сейчас (например, использовать облачные сервисы с автосейлингом).
Задокументировать риск: «При резком росте нагрузки без дополнительных инвестиций система может не выдержать. Требуется повторная оценка через 6 месяцев».
Почему не другие варианты
A — согласиться без анализа — приведёт к перерасходу бюджета или невыполнимому обязательству.
C — отказ от проекта без попытки обсуждения — не гибко.
D — игнорирование — безответственно.
Реальный кейс
Один стартап по доставке еды требовал 5000 RPS с первого дня. Аналитик предложил использовать масштабируемый облачный кластер, но с минимальной конфигурацией. После запуска пик оказался 50 RPS. Экономия составила 80% бюджета.
Please open Telegram to view this post
VIEW IN TELEGRAM
4822. Сервис А, получив ошибку, начал повторять запросы каждую секунду, создавая лавину нагрузки на сервис В, которая не давала ему восстановиться. Как называется этот эффект и как его предотвратить?
Anonymous Quiz
13%
Deadlock; использовать распределённую блокировку
84%
Retry storm; использовать экспоненциальную задержку и ограничение числа ретраев,плюс Circuit Breaker
2%
Race condition; добавить идемпотентность
2%
Thundering herd; использовать очереди
Когда сервис В недоступен, множество экземпляров сервиса А одновременно начинают повторные попытки с фиксированным интервалом. Это создаёт синхронизированные всплески нагрузки, которые мешают восстановлению. Это называется retry storm (шторм повторных вызовов).
Решение
Экспоненциальная задержка (exponential backoff) — интервал между ретраями удваивается (1, 2, 4, 8 секунд). Это раздвигает по времени пики нагрузки.
Джиттер (jitter) — случайное небольшое смещение, чтобы разные экземпляры не синхронизировались.
Ограничение числа ретраев (например, 5 попыток).
Circuit Breaker — после определённого числа ошибок быстрый сброс без вызова вообще.
Почему не другие варианты
A — deadlock относится к блокировкам в БД.
C — race condition — состояние гонки, не то.
D — thundering herd — асинхронная проблема, но решение с очередями не прямое.
Реальный случай
В Amazon одна из внутренних систем легла из-за retry storm. После внедрения экспоненциального бэккотта и джиттера инциденты прекратились.
Требования аналитика
Политика ретраев: начальная задержка 1 сек, максимум 10 сек, коэффициент 2, джиттер 0-30%.
Please open Telegram to view this post
VIEW IN TELEGRAM
4823. Нужно отображать бесконечную ленту новостей (скроллинг). Запрос с OFFSET 10000 LIMIT 10работает очень медленно. Какой метод пагинации использовать для большой глубины?
Anonymous Quiz
1%
Повысить размер кэша БД
93%
Пагинация на основе курсора (keyset pagination) — использовать WHERE created_at < последнее_значение
5%
Использовать OFFSET с подзапросом
1%
Сгружать всю таблицу в приложение и фильтровать