Of course I hate them, but what other choice do I have?
The biggest problem is that the questions are so random and span almost anything.
Will I get asked:
a pthread question?
implement mergesort or quicksort?
implement a Read/Write lock?
implement a smart pointer?
a bit manipulation question?
topological search?
dynamic programming?
graph question?
backtracking question?
What the default timeout for TCP/IP is?
a Java internals question?
best practices about Cassandra?
N-ary tree search?
linked list?
b-tree?
Paxos vs Raft?
What is the access time for an SSD vs spinning disk?
How does Hadoop work?
Design Netflix
various random programming questions, as evidenced by Leetcode's 1000+ questions
It's impossible to know everything and yet this what people expect and ask. I've been asked those questions above over the last 6 years. It's utterly insane the expectations that interviewers have.
I personally also interview candidates, I've done hundreds of interviews throughout my career. These days, I do about one interview a week, and often 2.
My coding question is a simple recursion question, with a for loop and some basic knowledge of data structures. It's not hard, but I look for perfect code. If you can't code a bug-free 15 line function in 45 mins, that's my red flag. I don't think that's unreasonable. As long as the person asks good questions, we work together well, and they can code in a sane way, to me that's a pass. Interestingly, 70% of the people fail the interview because they can't code properly, even after the phone screen. I think because people are expecting a hard leetcode algorithm question, they can't think properly when someone asks them a simple question.