I am Senior Java Developer with over 6 years experience. I have done Computer Science bachelors with C++ as the main language. Currently working in financial companies (Banks, Asset Managers etc.). I have been promoted to higher positions within the same company, worked as an architect for a new platform, created solution designs. Even started working on my own and faced front office directly to gather requirements and implement solutions for them, as I excelled working on my own.

Currently looking for new opportunities and any job that I apply, I can secure an interview. Most start with coding exercise, others with informal chat, which all of them I pass with flying colours, but all of them eventually have technical interview, where the Lead Developer would ask you Core Java questions (What is Java Memory Model etc.), which I fail to answer, as all my Java experience came just from working. 

Does that make me a bad candidate? Is the theory really outweighs the practical side of the candidate?