I'm currently finishing a PhD in Software engineering, I have two master degrees (one in CS, one in SE), and a prior BS in CS, and it still infuriates me that when I am interviewing for non-entry-level engineering jobs I still get the same questions that I teach my students in CS courses, and that I was sked 10 years ago when I was interviewing for my first jobs. By now, by the way, everyone knows all these questions and there are sites like AceTheInterview that give candidates most things that you could ask.
If the job really has to do with algorithms and optimization, go ahead and focus on them, but be aware that you may be weeding out very good designers. It's one of the reasons we have so much efficient but broken code.
I cannot tell you how many students I have taught who were brilliant in classic CS but had zero instincts when it came to designing, encapsulating, etc. As employees, they'll do amazing jobs optimizing specific functions, but you'll be paying for it by having a lot of unmaintainable code.
If what you really need is a good designer or developer who'll be using standard libraries for most things, focus on those things. Especially if you want said person to be doing OOP work for your company. Find out if they understand inheritance, interfaces and dynamic binding, for example. You can ask a few classic CS questions to make sure they got that part covered.