Как реализовать экспорт и импорт настроек камеры между устройствами
Что проверяют
Для аналитика это вопрос не про код, а про умение превратить короткую хотелку в требования: какие данные переносятся, между какими устройствами и что делать при несовпадении. Следом почти всегда спрашивают, как вы опишете сценарий, когда настройки с новой модели загружают на старую.
Как отвечать
Идите от сценариев и границ, а формат файла оставьте на конец:
- состав данных: разделите настройки на переносимые (экспозиция, баланс белого, профили, расписание записи) и привязанные к экземпляру (серийный номер, IP-адрес, калибровка сенсора). Вторые в экспорт не попадают или применяются только по явному согласию;
- совместимость: в файле нужны версия схемы, модель и версия прошивки источника. Правило для приёмника: неизвестные поля пропускаем, недопустимые значения (разрешение, которого нет у сенсора) заменяем ближайшим допустимым или отклоняем с понятным сообщением;
- частичный импорт: пользователь видит список отличий и выбирает группы настроек. Нужен откат: перед применением текущая конфигурация сохраняется;
- канал передачи: файл, облачный аккаунт, локальная сеть или QR-код для небольших профилей. От канала зависят размер, шифрование и необходимость авторизации;
- безопасность: пароли Wi-Fi, ключи трансляции и учётные данные не уходят в файл открытым текстом. Их либо исключают, либо шифруют файл паролем, а сам факт импорта пишут в журнал.
Формат обычно JSON с описанием в JSON Schema: по ней приёмник проверяет файл, а команда сверяет реализацию. Артефакты, которые стоит назвать: сценарии использования с альтернативными потоками, диаграмма последовательности для передачи между устройствами, таблица соответствия полей между моделями и критерии приёмки на каждый случай несовместимости.
Где спотыкаются
Сразу пишут функцию с json.dump и считают задачу решённой. Для аналитика это ответ не на тот вопрос: интервьюер ждал требований и граничных случаев.
Забывают про версии. Файл без номера схемы через год уже нельзя корректно прочитать, когда появятся новые поля и модели.
Не думают о секретах, и файл с паролем от сети уходит в мессенджер. Вопрос о том, что в экспорт не попадает, лучше поднять самим.