Что нужно знать для свободного владения C++ или C#?
Раз вы задаете такой вопрос - значит вы не свободно владеете этими языками.
Это означает что при написании любой задачи у вас не будет возникать вопроса "как реализовать это на этом ЯП". Если проводить аналогию с иностранными языками - вы сможете любую возникшую в вашей голове мысль сказать на иностранном языке. Суть свободного владения - при разработке язык разработки вас не тормозит. Тормозят сложности алгоритмов, структуры проекта или чего то подобного.
Забавно :) Один сказал очевидные вещи, а другой экзаменационные билеты какие-то запостил :)))
А мы-то собрались услышать великую истину :)