Интересовались ли вы системным дизайном
Что проверяют
Готовы ли вы думать шире одного сервиса: про нагрузку, отказы и компромиссы. Для Node.js-разработчика это ещё и проверка, понимаете ли вы ограничения своей платформы. Следом почти всегда просят что-нибудь спроектировать на месте или разобрать систему, с которой вы работали.
Как отвечать
Одного «да, интересуюсь» мало. Каркас на личном опыте:
- откуда интерес: конкретная задача, где пришлось думать о масштабе, или книги. Хорошие опоры: «Designing Data-Intensive Applications» Мартина Клеппмана и «System Design Interview» Алекса Сюя. Назовите, что из прочитанного применили;
- пример из своей работы: система, её нагрузка в ваших реальных цифрах, одно решение и почему его приняли. Одна честная история с компромиссом лучше пересказа всей архитектуры;
- специфика Node.js: event loop работает в одном потоке, поэтому тяжёлые вычисления уносят в
worker_threadsили отдельный сервис, а масштабируются несколькими процессами (cluster, PM2, реплики в Kubernetes). Отсюда требование stateless: сессии и кеш в Redis, фоновые задачи в очереди вроде BullMQ, а WebSocket на нескольких инстансах требует общей шины, например Redis-адаптера для Socket.IO; - общие темы: кеширование и его инвалидация, rate limiting, идемпотентность, репликация и шардирование баз, очереди, теорема CAP и цена согласованности.
Если проектировать крупные системы не доводилось, так и скажите и покажите, как вы учились: разбирали типовые задачи вроде сокращателя ссылок или ленты новостей, делали pet-проект с очередью и кешем, читали разборы инцидентов. Это честно и вполне закрывает вопрос для разработчика вашего уровня.
Где спотыкаются
Перечисляют модные слова: микросервисы, Kafka, Kubernetes, но не могут сказать, какую проблему решало каждое и чем за это заплатили.
Приводят красивые цифры вроде «выдержали десятикратный пик, отклик упал на 30%», не понимая, как их измеряли. Первый же уточняющий вопрос это вскрывает.
Забывают про особенности Node.js и предлагают держать состояние в памяти процесса, а потом удивляются расхождениям, когда появляется вторая реплика.