Вопрос на собеседовании · Python-разработчик
Чем генератор отличается от списка и когда он выигрывает?
Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.
Генератор вычисляет значения лениво: он выдаёт очередной элемент по запросу и сохраняет своё состояние между вызовами. Список, напротив, сразу материализует все элементы в памяти и позволяет обращаться к ним многократно и по индексу.
Генератор выигрывает при больших или потенциально бесконечных потоках данных и конвейерной обработке. Но он обычно одноразовый, не предоставляет длину без обхода и не подходит, если набор нужно многократно перечитывать.
01 · Структура ответа
Что важно сказать интервьюеру
Начните с определения, затем объясните механизм и закончите примером из практики. Для полного ответа раскройте эти тезисы:
02 · Пример
Как объяснить на практике
При чтении многогигабайтного файла генератор может отдавать обработанные строки по одной. Это позволяет следующему этапу начинать работу сразу и не хранить весь файл в оперативной памяти.
Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.
03 · Ошибки
Чего избегать в ответе
04 · Углубление
Что могут спросить следом
- Чем iterable отличается от iterator?
- Что делает yield from?
- Как корректно закрывается генератор?
Практика ответа
Ответьте вслух, а не про себя
Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с опорой.
Mira