To be honest, this has to do with the fact that there is a glut of programmers that are able to do these things and companies for the most part aren’t working on problems actually difficult enough to differentiate those who can do the job as a small percentage form all those who apply. Anybody can do Big-O analysis if they read a book, anybody can pick up any number of languages by reading online guides and maintaining long github streaks working on re-implementing simple useful productivity hacks in these languages. Anyone can read and use cutting edge machine learning algorithms from research papers, if they take an MOOC, brush up on stats, review proofs, and follow a couple youtube guides until they are on their feet (maybe derive their own algorithms from scratch too so they can then understand the intuition behind what is done today). The fact of the matter is that companies merely asking “who can do the job” will receive a massive flood of people all who are able to do it. You can all claim that there is a lack of intelligent engineers but the reality is that each and everyone of you know how easy it would be distill these purest essence of what you do and explain it to someone, if you took the time. So very high pressure, memorization intensive interviews are the way to go to separate people. Because for every person that doesn’t make it through there are another 10 who will, and all 11 can do the job. Programming is a cheap commodity compared to the way it used to be. And this particular individual is feeling the punishment of not conforming to the system. You didn’t memorize “Breadth First Search”, well fuck off, someone else did, and he/she can do just as much web development as you can, so the company doesn’t blink an eye pulling the rug. If you want interviews where they purely test you for relevant skills, you need to an enter a field that’s still hardcore enough, that all those silly puzzles and games are irrelevant, and there really are only a double or triple digit number of people at most who can do the job. Until then, either conform to the system, or accept that it’s obvious why it isn’t working out.