Загрузка…
Загрузка…
fullstack / middle / system_design
Формат
online
Стадия
system_design
Когда
within_quarter
Длительность
—
01
Поведенческий
Расскажите о текущем проекте, стеке и команде (основное, базовое).
Вступительный вопрос HR/тех-части; кандидат рассказал про B2B-систему типа SAP, импорт/экспорт данных, обработку больших файлов чанками по 100 строк.
02
Поведенческий
Устраивает ли тебя текущий функционал, которым ты занимаешься, или хочется каких-то изменений? Опиши идеальную картину.
03
Поведенческий
В каком процентном соотношении фронтенд/бэкенд тебе комфортно работать?
Кандидат ответил: ~60-70% бэк, ~30% фронт.
04
Теория
Где вы хранили загружаемые файлы и как был организован процесс обработки больших файлов?
Заметки
Собеседование на Fullstack-разработчика (в тексте 'FSEK'); требования к вакансии: React/Vue на фронте, Node.js и работа с PostgreSQL на бэке. Это первая часть собеседования; формат нетиповой — основное содержание это одна сквозная system design задача (бесконечная доска с AI-агентом, типа Miro), по которой интервьюеры задавали уточняющие вопросы на каждом этапе. ТЗ намеренно расплывчатое — чтобы исключить использование вспомогательных AI-сервисов кандидатом. Имя кандидата — Константин (Кость). Нанимающая команда — внутри 'Контура' (упоминается интеграция AI внутрь контура 2 года назад); команда универсальных бойцов с горизонтальной структурой, занимается R&D/инновациями (AI), которые потом уходят внутрь большой корпорации. Видео — фрагмент с YouTube-канала автора (есть упоминание Telegram-канала со шпаргалкой).
Подготовка
Сначала собирать требования, а не сразу выбирать стек. Знать: API Gateway (nginx/KrakenD), вебсокеты vs SSE vs long polling, работу с canvas для больших досок, разрешение конфликтов при коллаборации (CRDT, eventual consistency, CAP-теорема), CQRS, ACID, event-driven (Kafka), RAG и векторный поиск для LLM-агентов, DDD и bounded contexts, паттерны GoF и SOLID. Полезно подходить к задачам гибко, учитывая цену/качество и масштабируемость.
Стиль интервьюера
Несколько интервьюеров (тех-специалист, коллеги, затем HR/PM). Стиль доброжелательный, но настойчиво докапывающийся: задают много follow-up'ов, подталкивают к нужному ответу наводящими вопросами (например, к CAP-теореме и CRDT), сами подсказывают решения, когда кандидат не доходит. Намеренно дают расплывчатое ТЗ, чтобы проверить ход мыслей и умение собирать требования. В конце дают развёрнутую обратную связь о подходе и объясняют логику задания.
Уточнялось, где хранятся чанки и в каком формате база; кандидат: стрим читается, чанки по 100 строк сохраняются в локальную БД, затем грузятся в целевой сервис.
05
System design
Спроектируйте систему: бесконечная доска (типа Miro), на которую пользователь складывает персональные данные (заметки, ссылки, файлы), с AI-агентом, который работает с этим контекстом, ходит в интернет, использует тулзы и сторонних провайдеров данных. Система должна быть гибкой, расширяемой и масштабируемой, сделанной быстро. Начните с любой точки (фронт/бэк), перечислите технологии и взаимодействие систем.
Главная сквозная задача собеседования; намеренно расплывчатое ТЗ, чтобы кандидат сам собирал требования. Кандидат начал со сбора требований.
06
Теория
Какие есть системы/подходы для хранения схем и стандартизации взаимодействия между разными сервисами? Как синхронизировать контракты схем между несколькими сервисами при их изменении?
Обсуждались protobuf-файлы для gRPC, REST, монорепозиторий с контрактами.
07
System design
Кто будет выступать в роли API Gateway? Какие есть возможности реализации общего шлюза, чтобы клиент знал единую точку входа и не хранил эндпоинты сервисов?
Кандидат назвал nginx, упомянул KrakenD/Lua. Интервьюер подчёркивал, что эта тема важна для команды.
08
System design
На каком стеке вы бы реализовали клиентскую часть? Какие технологии и библиотеки выбрали бы для работы с большой бесконечной доской?
Кандидат: канвас (Konva.js), вебсокеты, React/Vue, стейт-менеджер (pinia/redux/mobx).
09
Теория
Почему вебсокеты? В чём необходимость двунаправленных протоколов вместо обычного request-response? Не боитесь забить пропускную способность при большом объёме данных?
Сравнение вебсокетов, long polling и SSE; обсуждение однонаправленного vs двунаправленного соединения для одного и нескольких пользователей.
10
System design
Как бы вы реализовали сервисную часть для коллаборативной доски (много пользователей на одной доске)? Какие основные сервисы выделили бы, как разделили контексты ответственности, какие архитектурные подходы (чистая архитектура, DDD) и паттерны микросервисного взаимодействия использовали?
Кандидат выделил интеграционный сервис, сервис поиска, файловый сервис (S3), векторную БД для контекста пользователя.
11
Теория
Как бы вы сохраняли ивенты от доски?
Кандидат: Kafka, отправка в топик.
12
System design
Если несколько пользователей одновременно редактируют одну карточку (двигают или меняют название), приходят два события — как обеспечить консистентность взаимодействия (хотя бы согласованность в конечном итоге)? Как разрешать конфликты?
Интервьюер подвёл к CAP-теореме, доступности vs консистентности и в итоге скинул решение через CRDT (коммутативные структуры данных, где конфликтов не может быть).
13
Теория
Как называется подход, при котором взаимодействие с хранилищем делится на команды и запросы (chtenie/запись)? Аббревиатура из четырёх букв.
Имелся в виду CQRS; кандидат сначала перепутал с ACID.
14
Теория
Расскажите про ACID: атомарность, консистентность, изолированность, стойкость — и для каких систем (CP/CA) это применимо.
Возникло по ходу обсуждения консистентности и CAP.
15
Теория
Какие есть способы внедрения данных в LLM-агента (дообучение, контекст, поиск)? Как агент работает с персональным контекстом пользователя?
Кандидат назвал промпт-контекст, обучение на данных пользователя, RAG; интервьюер уточнил механику RAG (векторное представление, поиск похожих данных, расширение промпта).
16
Теория
Какие паттерны проектирования вы использовали на проектах? Что из паттернов GoF или принципов (например SOLID) сильно пригодилось бы?
Кандидат упомянул книгу 'банда четырёх', SOLID, паттерн адаптер.
17
Поведенческий
Расскажи, как у тебя устроено внутрикомандное взаимодействие, что нравится и что не нравится в разных форматах работы.
Кандидат описал состав команды и процессы по Scrum.
18
Поведенческий
Задания к вам приходят в ясном понятном виде или это 'Дикий Запад' с неопределёнными требованиями? Как ты с этим работаешь?
19
Поведенческий
Документацию вы ведёте сами или кто пишет ТЗ/доки по проекту?
Кандидат: пишут системные и бизнес-аналитики.
20
Поведенческий
Делаешь ли прототипы, вайбкодишь, используешь ли новые AI-инструменты для разработки?
Кандидат упомянул v0.dev, кодексы, курсор.
21
Кейс
Как ты себя ощущаешь в ситуациях, когда сделал работу, а потом приоритеты резко поменялись и нужно делать совсем другое?
22
Поведенческий
В какой роли ты себя видишь? Что для тебя важно в компании, что nice to have, а что точно нет (красные флаги)?