Re: Learning Properly
If you know the stuff, it shouldn't be too hard to learn the terminology, and you *should* learn the terminology to best understand and describe what's going on. When you write code, start explaining to yourself as though you were explaining it to someone else - explain why you've used public here and private there for instance. Explain why this is a method and this is a property. Explain why you've used inheritance here rather than composition.
As well as this, get a good book on your language of choice and work through it, you'll be able to sail through various bits but take time to go through those bits carefully that explain the terminology and design decisions. Be prepared to learn from knowing these things as well.
The thing is, if I was interviewing someone for a role and they told me (or even showed me) they could code a working program in C#, but didn't understand much terminology, I'd be worried. Creating something that works isn't the same as creating something where the code is well structured, easily read and maintainable, and understanding theory and terminology is imperative to be able to do that properly (and communicate properly with people on your team.)
Save the whales, feed the hungry, free the mallocs.