Встречается на собеседованиях • сегодня
Как будешь реализовывать сервис, совершающий много однотипных тяжелых операций
Использую пул потоков (ThreadPoolExecutor) для параллельного выполнения задач. Для этого:
1. Создам фиксированный пул потоков (по количеству ядер CPU или другому разумному лимиту)
2. Разобью работу на отдельные Runnable/Callable задачи
3. Буду использовать очередь задач (BlockingQueue)
4. Добавлю механизм graceful shutdown
Пример:
```java
ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
List> futures = new ArrayList<>();
for (Task task : tasks) {
futures.add(executor.submit(() -> heavyOperation(task)));
}
// Обработка результатов
for (Future future : futures) {
Result result = future.get();
// ...
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.MINUTES);
```
Для более сложных сценариев рассмотрел бы:
- ForkJoinPool для рекурсивных задач
- CompletableFuture для асинхронных цепочек
- Ограничение скорости через Semaphore

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы