Let's just see how this might work. Here's a question phrased both ways.<p>When do you use traceroute?<p>How does traceroute work?<p>In my experience, anyone can make up some kind of answer for the first one. There's enough wiggle room in the language to let them say "when you need to trace a route", only using different words. This establishes nothing in terms of the candidate's abilities.<p>The second question is harder to answer without actually knowing something about the problem domain. Granted, I've had plenty of people flat out lie and make things up rather than saying "I don't know", but there are ways to catch that. If they try to memorize the answer, perhaps because a question is becoming too popular, then they'd better hope they learned it all the way down to the bare metal, since that's where I'm going to take them.<p>Incidentally, for candidates who say "I don't know" to the second one, a good followup question is "Okay, how would you build one from scratch?". The people who know the domain but simply haven't dissected that particular tool will be able to reinvent it on the spot. That's when you say "are you sure you didn't know this?" to make them feel better about themselves.<p>Those who don't have any idea about what goes on with IP will be stumped.<p>This assumes perfect performance on the part of all involved. Bad food, butterflies, jet lag, and other human anomalies can and will affect you.<p>So, bringing this back full circle, maybe you don't know how a B+Tree works internally for whatever reason, but could you build one if you had to?