Чем async/await может быть опасен при неправильном использовании?
Что хотят услышать интервьюеры:
Неправильное использование async/await опасно тем, что проблема часто проявляется не сразу, а под нагрузкой или при изменении требований. Обязательно проговорите, что async не равен созданию нового потока, а блокировки .Result/.Wait() часто ломают масштабируемость.
- Суть: async/await позволяет писать неблокирующий код для I/O операций без ручного управления потоками.
- Где встречается: HTTP-запросы, работа с БД, фоновые задачи, очереди, интеграции и масштабируемые API.
- Типичная ошибка: блокировать async-код через .Result/.Wait(), игнорировать CancellationToken или создавать race condition.
- Как отвечать: начните с короткого определения, затем приведите пример, назовите ограничение и типичную ошибку.
- Ожидаемый уровень: Middle+. Умение учитывать production-ограничения, производительность и надежность.
Ответ:
await service.ProcessAsync(cancellationToken);