В чем была сложность задачи
Что проверяют
Вопрос обычно идёт уточнением к рассказу о проекте. Интервьюер хочет понять, отличаете ли вы сложность задачи от объёма работы и можете ли назвать, что именно было трудно технически. Следом спрашивают, какие варианты вы рассматривали и почему выбрали свой.
Как отвечать
Возьмите одну реальную задачу и назовите источник сложности одной фразой. Для Node.js типичны такие:
- event loop: код блокирует цикл событий, например
JSON.parseогромного тела,crypto.pbkdf2Syncили тяжёлая регулярка. Решение:worker_threads, стримы, вынос в очередь; - память: утечка через замыкания, растущий
Mapбез вытеснения, забытые слушатели событий. Искали через--inspectи снимки кучи в Chrome DevTools; - интеграции: сторонние API с лимитами и нестабильными ответами. Ретраи с экспоненциальной задержкой, таймауты через
AbortSignal.timeout(), идемпотентные ключи, очередь на BullMQ; - конкурентность: два запроса меняют один заказ. Транзакции,
SELECT ... FOR UPDATE, оптимистичная блокировка по версии; - легаси: переписать модуль на колбэках без регрессий, сначала покрыв его тестами.
Дальше короткая цепочка: как нашли причину, какие были варианты, что выбрали и почему, что получилось. Цифры приводите свои и те, что можете объяснить: задержка p95 до и после, ошибки в сутки, память. Если измерений не было, так и скажите и объясните, как поняли, что стало лучше.
Если по-настоящему сложных задач пока не было, возьмите самую трудную для вас на тот момент и честно объясните, почему она была трудной именно для вас и чему научила.
Где спотыкаются
Называют сложностью сроки или объём: «было много работы». Это про нагрузку, а интервьюер ждёт техническое препятствие.
Приводят круглые проценты вроде «ускорили на 30%» и не могут сказать, как мерили. Вопрос про метрику ставит под сомнение всю историю.
Рассказывают «мы» без «я». Непонятно, какую часть решения придумали и сделали лично вы.