Как совместить гармонично совместить теорию и практику на C#?
Нет, это не антисовет, и вы не живете по этому принципу, вы просто не определились с тем от чего вам будет польза, вы решили что будете устраиваться в фирму, но не поинтересовались о собеседованиях, поэтому и не знали насколько сильно они "оторваны" от практики, и не подготовились.
А собеседования это действительно "изврат", там же тесты составляются не специалистами, а дилетантами, обычно получается "опросник" по теории из "топовой" литературы по C#, поэтому подготовка к собеседованием это всегда "изврат", не ищите связь с практикой, а ищите способы все это изучить чтобы пройти собеседование, вот это вот ваша польза, но если для запоминания нужны практические эксперименты, то пожалуйста, но лучше цитируйте литературу.Но полезность структур осознать не сумел, поэтому в реальных проектах использую только классы.
Это стоит познать практически чтобы уметь сказать хоть что-то, но лучше цитируйте литературу.очередь, стек, hashtable и т д
Не может быть чтобы не было задач с хеш-таблицами, в отличие от списка они позволяют не создавать класс или структуру только ради того чтобы к значениям добавить ключи, это стоит познать практически чтобы уметь сказать хоть что-то, но лучше цитируйте литературу.про рефлексию
На практике она применяется в основном для доступа к недокументированным возможностям библиотеки, а также всегда применяется в фреймворках MVC чтобы вызвать метод с именем из строки, это стоит познать практически чтобы уметь сказать хоть что-то, но лучше цитируйте литературу.домены приложений.
Это стоит познать практически чтобы уметь сказать хоть что-то, но лучше цитируйте литературу.
Нахожусь в аналогичной ситуации. Программирую с прошлого века. Сейчас мой стек — это C#, T-SQL, JScript, JavaScript, XSLT, CSS. Собеседование пройду максимум на мидла. 
Решил подтянуть и систематизировать знания, опираясь прежде всего на C#. В качестве фундамента собираюсь выбрать две вещи.
Во-первых, перечитать книгу Скита "C# in depth", реализуя примеры. Книга опускает элементарные основы языка, но даёт перспективу его развития. 
Во-вторых, перепройти Стэнфордский или Принстоновский курсы по алгоритмам на coursera.org, реализуя их на C#. 
Не только это в планах, но данные пункты выбраны в качестве основы.