-Depth first search
-Binary Search
-Topological Sort
-Dynamic programming in a graph context
-Union Find
-Merkle Trees
-Fenwick (binary indexed) trees
Maybe I'm in an unusually technical area but it doesn't feel that way talking to my colleagues.
But out of all those algorithms how many could you regurgitate onto a whiteboard given 5 minutes to do so?
Knowing the use of each algorithm is good enough. You don't need to know the implementation until you want to use it. And nowhere in your day to day work is this going to be with no internet access or reference.
So why do interviewers suggest this is the case? Why aren't they just happy with you describing how a Merkle Tree can solve a particular issue. Why do you need to write that down?
Is your view of programming that good programmers spend the majority of their time writing boilerplate code or doing grunt work?
My view isn't that good programmers spend the majority of their time writing boilerplate code. But my view also isn't that the average programmer _isn't_ doing that.
I'd expect way more demonstrated knowledge for an interview in a higher level role than an mid level developer role. But the higher you go the less you actually need to demonstrate that. Why?
Are you trolling? Everything that you do as an engineer is coming up with an algorithm.
Algorithm is how you solve a problem, how you think about constraints and requirements.
There's plenty of algorithms I know and I can see relevant business contexts to use them in. Do I know all of their implementations off the top of my head to regurgitate onto a whiteboard? No, because I don't need to. When the time comes I will just look that up. The easy part is the implementation. This isn't a school exam testing your memory.
All the FAANG interviews I had were about some leetcode problem where you had to be familiar and use some algorithm, not write it from scratch.
Because the most common say to day issue is needing to think of an algorithm on the spot...
You hate it because you know that's not true. Yet you're using it.