1) Given a base content manager contract you have two different
approaches, either you "instantiate" such contract for each
content OR you "expand/overwrite" it with for each content.
Of course you have more flexibility in the second case, but still, if
the base contract is implemented correctly (i.e. general but detailed
enough at the same time), the first solution works as well. So, what
it looks like you are doing (first case) IS NOT wrong (as long as it
is done properly...).
2) Representing a content as a (string or byte array) for simplicity is perfectly fine as lon as it works properly with the consume content operation. Any simple and sound implementation to simulate content consumption is fine.
3) As always try to
keep it simple. As discussed with some of you during question time,
the genre is just a label to categorize the content. It can be
action/drama/... for a catalog about movies or music/film/... for a
generic content catalog. It does not really matter, it is just used
to test how you manage such labels. For the sake of the exam you can
also call the content "pippo, pluto, ..." and the genre be
"genre1, genre2, ..." . DO not waste time or complicate
your code to consider subgenres, i.e. genres specific for each
category of content (e.g. action/drama/... if content is a movie,
pop/rock/... if it is music, etc). As always, the more the better, but in this case it really seems a superfluous overcomplication (at least for the final term, it makes more sense for teh final project).