Встречается на собеседованиях • сегодня
Как построить логическую цепочку для принятия решения об оптимизации алгоритма
Сначала нужно определить узкие места (bottlenecks) с помощью профилирования (например, cProfile или timeit). Затем оценить сложность алгоритма (Big-O) и сравнить с теоретически возможной.
Пример:
python
import timeit
def slow_func():
return sum(i for i in range(10**6))
time = timeit.timeit(slow_func, number=10)
print(f"Time: {time:.2f}s") # Если время велико, ищем оптимизацию
text
**Шаги:**
1. **Измерение** — замер текущей производительности.
2. **Анализ** — выявление операций с наибольшим вкладом в время/память.
3. **Гипотеза** — выбор метода оптимизации (кеширование, векторизация, алгоритмическая оптимизация).
4. **Проверка** — повторный замер после изменений.
5. **Валидация** — убедиться, что оптимизация не сломала логику.
**Важно:** преждевременная оптимизация без данных — зло. Сначала работающий код, потом улучшения.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы