Пришло время рассекретить наше очередное тестовое задание, которое использовалось в процессе собеседований последнее время.
Язык программирования: C++ / STL. Время выполнения — несколько часов.
Руководствуясь результатами выполнения этого задания, нами было нанято 3 начинающих С++ программиста.
Постановка сериализация/десериализация дерева
Необходимо реализовать простую иерархию классов для хранения нескольких простых типов данных: int (32 бита); char[10]; double.
Предполагается единственный абстрактный базовый класс – BaseHolder, и его наследники – IntHolder, CharArrayHolder и DoubleHolder.
Далее необходимо реализовать структуру данных — дерево указателей на базовый класс — и наполнить его в теле программы несколькими произвольными элементами, используя разные типы (int , char[], double).

Пример такого дерева приведен на рисунке
В рамках тестового задания необходимо реализовать код сохранения и восстановления дерева.
- Вариант 1. Бинарный файл – (можно применять любые API для чтения и записи).
- Вариант 2. Текстовый файл – (можно применять любые API для чтения и записи).
- Вариант 3. Непрерывная область памяти, выделенная через new char[N].
* Выбор варианта — на усмотрение исполнителя.