+380 57 755 34 05 team@fulcrum.software

Пришло время рассекретить наше очередное тестовое задание, которое использовалось в процессе собеседований последнее время.

Язык программирования: C++ / STL. Время выполнения — несколько часов.

Руководствуясь результатами выполнения этого задания, нами было нанято 3 начинающих С++ программиста.

Постановка сериализация/десериализация дерева

Необходимо реализовать простую иерархию классов для хранения нескольких простых типов данных:  int (32 бита);  char[10];  double. 

Предполагается единственный абстрактный базовый класс – BaseHolder, и его наследники – IntHolder, CharArrayHolder и DoubleHolder.

Далее необходимо реализовать структуру данных — дерево указателей на базовый класс — и наполнить его в теле программы несколькими  произвольными элементами, используя разные типы (int , char[], double).

Пример такого дерева приведен на рисунке

В рамках тестового задания необходимо реализовать код сохранения и восстановления дерева.

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

* Выбор варианта — на усмотрение исполнителя.