So I got promoted, yeah! As part of that I now have to give technical interviews for recruitment.
Also, things like differences between Arrays and Collections. They can give me 10 reasons why you should use the dynamic Collection, but go a bit dumb when you ask why you would use an Array over a collection. Similar things come through in terms of memory allocation, resource allocation and generally anything that has consequences functionally or non-functionally.
Multi-threading and concurrency. Almost everyone of them have used a distributed, transactional, concurrent system design in their projects, but less than 10% even know it. Aka, enterprise REST apis and micro-service stuff. Almost none of them can actual tell me the disadvantages or difficulties of multi-threaded/concurrent/distributed systems.
Am I being too picky to expect critical thinking from people with 3-5 years experience? An understanding of things like performance, memory, overheads and at least some consequences, pros and cons is what I was expecting, but I've only seen it in any fashion of understanding in the top 5% maybe.
Ah you've created a paradox, if they are teaching this at University then recent graduates may remember, after 3-5 years no chance.
The top 5% just happen to have kept practicing these particular skills.
Perhaps another approach would do better, give them the answer and get them to explain.
Here are two code bases, the longer one runs faster and uses less memory, explain why.
If they cannot figure out that code dedicated to one purpose is better, and that extra linked library at the top is bloating out the program, then you've not going to teach them other things they need to consider.