Опишите достижение по ускорению обработки данных с 40 минут до 5 секунд
Что проверяют
Вашу же строчку из резюме. Сорок минут против нескольких секунд это сотни раз, а такой разрыв почти никогда не получается оптимизацией кода. Интервьюер хочет понять, знаете ли вы механизм выигрыша и не сравниваете ли разные вещи.
Как отвечать
Назовите честную исходную точку: что именно занимало сорок минут и что теперь занимает секунды. Обычно за таким разрывом стоит смена подхода, а не ускорение прежнего:
- вычисление перенесли в базу вместо построчной выгрузки в приложение;
- убрали запрос внутри цикла, заменив его одним запросом с соединением;
- добавили индекс под фильтр, по которому раньше шло полное сканирование;
- перешли на колоночный формат и читают нужные столбцы вместо всего файла;
- заменили построчный обход датафрейма векторными операциями;
- считают инкрементально, а полный пересчёт делают редко.
Дальше расскажите, как мерили: на каком объёме, сколько прогонов, холодный кэш или прогретый. И главное, как убедились, что результат не изменился: сверка с прежним выводом на контрольном наборе.
Где спотыкаются
Объясняют выигрыш многопоточностью. В обычном интерпретаторе потоки не ускоряют счёт из-за глобальной блокировки, они помогают на ожидании ввода и вывода, а для вычислений нужны процессы или библиотеки, считающие вне интерпретатора. Да и идеальное деление на восемь ядер даёт восьмикратный выигрыш, а не сотни раз.
Второе: сравнивают несравнимое. Раньше считали по всем данным, теперь по свежим, раньше с холодного старта, теперь с прогретым кэшем. Ускорение настоящее, но формулировка вводит в заблуждение, и это всплывает на первом же уточнении.
Третье: приносят цифру, которую не считали сами. Если точного замера нет, назовите порядок и объясните механизм: понятный механизм убеждает сильнее круглого числа.