Getting asked to do any kind of fancy datastructure algorithm from memory would put me off your company. It has very little correlation with any real-world task. I'm very experienced and get a lot of shit done with high-load systems requiring careful resource management, but I couldn't be bothered with this. My portfolio should show you that I can do things.
The last 3 technical roles I've been in over the last 8 years or so used realistic technical tasks for the technical tests. It was grounded in actually making something useful work. Intensive CPU/memory optimization is usually the last thing to optimize in a system which is inefficient. When you do get to it, you do it on a case-by-case basis with careful reference to the latest work on efficiency in that particular sub-domain, not by instantly recalling university lectures from 20 years ago. And by the way, the right solution for CPU/Memory optimizations is never linked lists. I think the best technical test you can do is pay your potential candidate to come and do a ticket with your team. You actually get to see what working with them is like, as well as practical ability. Failing that, give them some time to create a practical solution to something a bit tricky, and see what their overall approach is like, when given time to do it with stackoverflow etc. available to them, because that's what real life is like.