BA & SA | 10000 Interview questions
10.2K subscribers
171 photos
14 videos
341 links
Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7
Download Telegram
📂 Подборка каналов по ИИ и IT технологиям

Подборка каналов для тех, кто интересуется AI, работает в IT сфере и хочет расширить свой кругозор без необходимости мониторить сотни источников самому, а также сделать качественный АПГРЕЙД своих ИИ инструментов.

Что внутри:

AI: реальные инструменты и внедрения, без хайпа;
IT технологии: тренды, обзоры, инсайты от первых лиц;
Карьера: как расти и не выгорать;
HR Tech: кто и как нанимает профессионалов сейчас;
AI life hacks: применение ИИ для тех, кто находиться за границей и ищет там удаленную работу.


🔗 [Добавить папку]
🔥1
№4829 категория вопросов: #TESTING
4829. При тестировании оплаты проверили успех, неверный CVV, истекшую карту — всё ок. После релиза хакеры подменили сумму в запросе с 1000 на 1. Какого теста не хватало?
Anonymous Quiz
0%
Тестирования производительности
95%
Тестирования безопасности на уровне API (подмена параметров)
4%
Юзабилити-тестирования
1%
Тестирования совместимости браузеров
Объяснение:

Как работает атака?
Хакер перехватывает запрос к API и меняет поле 
amount (сумма) с 1000 на 1. Если сервер не пересчитывает сумму на основе заказа, он списывает 1 рубль, хотя пользователь заказал товар на 1000.

Почему стандартные тесты не ловят?
Обычно тестируют интерфейс: в поле ввода 1 → ошибка. Но API-запрос можно сформировать вручную (Postman, curl) и отправить любые параметры.

Какой тест нужен?
Parameter tampering — часть тестирования безопасности API. Тестировщик должен проверить:
Не передаётся ли критическая величина (сумма, скидка, количество) из ненадёжного источника?
Пересчитывает ли сервер сумму по внутренним данным (цена из БД, количество из корзины)?

Реальный кейс: Убытки одного магазина после такой атаки составили $50 000 за ночь.

Вывод: В требованиях к интеграции нужно явно писать: «Сервер не доверяет значениям суммы, скидки, статуса, переданным клиентом».
Please open Telegram to view this post
VIEW IN TELEGRAM
№4830 категория вопросов: #BROKER
4830. В Kafka для заказов настроен ключ = order_id, партиций = 3. При отключении брокера порядок сообщений нарушается. Какой параметр не учли?
Anonymous Quiz
9%
acks=all
71%
min.insync.replicas и acks=all
5%
Слишком много партиций
15%
Продюсер не ждёт подтверждения
Объяснение:

Как работает порядок в Kafka?
По умолчанию: продюсер отправляет сообщение, лидер партиции записывает его, реплики синхронизируются асинхронно. Если лидер падает, выбирается новый лидер из реплик. Если старый лидер успел записать сообщение, но новые реплики его не получили, это сообщение теряется. Новый лидер продолжает запись с другого смещения. В результате для одного ключа 
order_id могут быть пропуски или перестановка.

Что нужно настроить?
acks=all — продюсер ждёт подтверждения от всех синхронных реплик (ISR).
min.insync.replicas — минимальное количество реплик, которые должны подтвердить запись (обычно 2). При min.insync.replicas=2 и replication.factor=3 запись успешна, если хотя бы 2 реплики в ISR.

Почему это сохраняет порядок?
Если старая реплика отстала, она не входит в ISR, и запись не произойдёт до тех пор, пока она не догонит. Таким образом, лидер не теряет сообщения, и порядок сохраняется даже при смене лидера.

Реальный пример: В одной компании из-за отсутствия 
min.insync.replicas события одного заказа (создан → оплачен → отгружен) поменяли порядок на «отгружен → оплачен». Клиенты получали товар без списания денег.

Вывод: Аналитик в требованиях должен указать: «Для гарантированного порядка и отказоустойчивости использовать 
acks=allmin.insync.replicas=2replication.factor=3».
Please open Telegram to view this post
VIEW IN TELEGRAM
№4831 категория вопросов: #SYSTEMDESIGN
4831. В соцсети миллионы лайков. Обновление likes_count в БД при каждом лайке даёт блокировки. Какое решение предложит аналитик?
Anonymous Quiz
11%
Убрать счётчик, считать COUNT(*) при каждом запросе
83%
Redis: инкремент в памяти, периодический сброс в БД
0%
Добавить колонку блокировки в таблицу
6%
Синхронная репликация
ТВОЙ БУСТ В IT И AI

Собрали с коллегами обновленную папку с каналами, которые реально прокачивают навыки и дают актуальные инструменты:

+ IT-направления: системный анализ, Python, JavaScript, frontend, тестирование
+ технологии и инструменты: всё, что ускоряет работу и рост в IT
+ AI для карьеры и бизнеса: как использовать нейросети, чтобы зарабатывать
+ обзор нейросетей: что сейчас работает и что стоит изучать
+ промты: готовые решения + логика создания своих

подписаться🎁  https://t.me/addlist/uyDjlf_VhiNjNWNi

💌 записать свой канал в папку тут
1
Объяснение:

Проблема прямого обновления в БД:
Таблица 
posts имеет колонку likes_count. Каждый лайк выполняет UPDATE posts SET likes_count = likes_count + 1 WHERE id = ?. Это вызывает блокировку строки (row lock) на время обновления, а при тысячах лайков в секунду — конкуренцию и падение пропускной способности.

Как решает Redis:
Redis хранит счётчики в памяти: 
INCR post:123:likes. Операция атомарная и очень быстрая (микросекунды).
Отдельный фоновый процесс (воркер) каждые N секунд (например, 10) читает текущие значения из Redis и обновляет БД: 
UPDATE posts SET likes_count = current_value WHERE id = ?.
При падении Redis счётчики можно восстановить из БД (если сохранять периодически) или из логов событий (Kafka).

Допустима ли eventual consistency?
Да. Пользователь видит, что лайк добавился, но в БД он может отразиться с задержкой в несколько секунд. Для лайков это приемлемо.

Реальный пример: Twitter и Instagram используют подобную архитектуру: лайки, ретвиты, подписки сначала идут в Redis, затем асинхронно записываются в основное хранилище.

Вывод: Аналитик, проектируя высоконагруженный счётчик, должен заложить требование: «Использовать Redis как временный счётчик с асинхронной записью в БД, согласованность — в конечном итоге (eventual consistency)».
Please open Telegram to view this post
VIEW IN TELEGRAM
№4832 категория вопросов: #SECURITY
4832. В медицинской системе нужно хранить диагнозы зашифрованно. Администраторы БД не должны видеть открытые данные. Где выполнять шифрование?
Anonymous Quiz
15%
В хранимых процедурах БД
79%
На уровне приложения (до записи в БД)
4%
Прозрачное шифрование диска
2%
Передать ключи администраторам
80% системных аналитиков заваливают собеседования из-за глупых ошибок

Самый простой способ подготовиться к собеседованию — это послушать, как его проходят другие.

В канале System | Собеседования собрали базу реальных технических интервью, чтобы вы могли учиться на чужих ошибках, а не на своих.

Что внутри:
💘 Разборы живых записей — от проектирования API до работы с БД
💘 Ключевые вопросы лидов из бигтеха
💘 Анализ ответов — где кандидат «поплыл» и как нужно было ответить правильно

Подписывайтесь, чтобы получить доступ к базе живых разборов и увереннее чувствовать себя на собесах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Объяснение:

Угроза – администраторы БД имеют полный доступ к данным. Прозрачное шифрование диска (TDE) расшифровывает данные для БД, так что администратор всё равно видит их через SQL. Хранимые процедуры тоже выполняются внутри БД, где ключи доступны.
Правильное решение – Application-level encryption: приложение шифрует данные перед отправкой в БД, ключи хранятся в приложении (например, в Vault). Администратор БД видит только бинарный мусор. Приложение расшифровывает данные при чтении для авторизованных врачей.
Требования – необходимо управлять ключами (ротация, доступы), обеспечивать возможность поиска по зашифрованным данным (через детерминированное шифрование или отдельные индексы).
Реальный стандарт – HIPAA, GDPR рекомендуют шифрование на уровне приложения для особо чувствительных данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
№4833 категория вопросов: #SYSTEMDESIGN
4833. Публичный API страдает от перебора паролей (1000 запросов/сек). Как ограничить частоту до 10 запросов/сек с одного ключа?
Anonymous Quiz
5%
Очередь сообщений
93%
Rate limiting (token bucket) на API Gateway
3%
Кэширование
0%
Увеличение серверов
Объяснение:

Зачем – защита от брутфорса, DDoS, ошибок в клиентском коде, неравномерной нагрузки.
Как работает token bucket
У каждого клиента (IP, API-ключ) есть корзина с токенами (например, 10 токенов).
Каждый запрос забирает 1 токен.
Корзина пополняется с заданной скоростью (например, 1 токен в 0.1 секунды).
Если токенов нет, возвращается HTTP 429 Too Many Requests.
Где реализовывать – на API Gateway (единая точка входа), чтобы не дублировать в каждом микросервисе.
Почему не очередь – очередь сглаживает всплески, но не останавливает злоумышленника, который может забить очередь и создать проблемы.
Вывод – аналитик должен прописывать лимиты (10 запросов/сек) и поведение при превышении в требованиях к публичным API.
Please open Telegram to view this post
VIEW IN TELEGRAM
№4834 категория вопросов: #REQUIREMENTS
4834. Заказчик просит: «Система должна выбирать самого быстрого курьера». Разработчик реализовал выбор по расстоянию на карте. Заказчик имел в виду освобождение от других заказов. Что упустил аналитик?
Anonymous Quiz
0%
Не проверил возможность реализации
100%
Не уточнил бизнес-правило: что значит «быстрый» (время освобождения) и как его вычислять
0%
Не назначил ответственного
0%
Не сделал ручной выбор курьера
Объяснение:

Почему это реальный кейс?
В проектах интеграции с курьерскими службами нередко возникает неоднозначность термина «быстрый». Для логиста «быстрота» может означать минимальное время до прибытия к клиенту с учётом текущих заказов курьера. Для разработчика, не спросившего уточнений, «быстро» — это минимальная дистанция на карте (евклидово расстояние или время в пути без трафика). Результат: система предлагает курьера, который находится за углом, но у него ещё три невыполненных заказа, а реально свободный курьер из соседнего района — через 15 минут. Заказчик недоволен, бизнес теряет деньги.

Что должен был сделать аналитик?

Задать уточняющие вопросы:
«Как именно измерить "быстроту"? По времени, по расстоянию, по рейтингу?»
«Учитываем ли мы текущую загрузку курьера (активные заказы)?»
«Где брать данные о времени освобождения? Из какого API?»
«Нужно ли учитывать пробки, время суток?»
Перевести ответы в измеримое бизнес-правило:
«Система выбирает курьера с минимальным ожидаемым временем прибытия к месту заказа, рассчитанным как: (время завершения текущих заказов курьера) + (расчётное время в пути от его текущей позиции до точки заказа). Данные о текущих заказах получаем из API курьерской системы. При равенстве времени выбираем курьера с более высоким рейтингом».

Зафиксировать требование с критериями приёмки:
Пример 1: Курьер А свободен и находится за углом (1 мин), курьер Б занят на 20 мин, но его время пути 5 мин. Итог: А — 1 мин, Б — 25 мин → выбираем А.

Пример 2: Оба курьера свободны, но А — 5 мин пути, Б — 10 мин → выбираем А.

Последствия для проекта, если не уточнить
Разработчик тратит время на реализацию не того алгоритма.
На приёмке выявляется несоответствие → переделка (стоит в 5–10 раз дороже, чем уточнение на этапе анализа).

Заказчик теряет доверие.
Курьеры распределяются неэффективно → задержки доставки, недовольные клиенты.

Вывод для системного аналитика
Любое субъективное прилагательное («быстрый», «удобный», «лучший», «оптимальный») — красный флаг. Всегда конкретизируйте: по какой метрике, на основе каких данных, с какими допущениями. Превратите "быстрый" в формулу или таблицу принятия решений. Это основа качественных требований.
Please open Telegram to view this post
VIEW IN TELEGRAM