I think you hit one of the nails of the head in that ‘don’t give them a standard problem’ is a valid approach. Unfortunately many companies use cookie-cutter approaches, using the same questions time after time.
Personally, and this has resonated with many experienced engineers, I visibly recoil when asked to code a function to compute factorials, reverse lists, or remove zeros. Shortly after I decline the process and leave, explaining that the interview process is frankly insulting at my level. A good interviewer / company should know better, and they should try harder and not rely on these ‘tests’.
It is indeed trivial to find out if someone is bluffing, if you’re in the game yourself and have the knowledge and confidence, however a lot of technical interviews are performed either by management or other junior engineers who rely on tests as a valid screening method.
Just one thing, though, when you mentioned ‘all algorithms will be known’ what I said was,
“In fact, the concept of software engineers in the far future has more than once been likened to code archeologists where they primarily reuse existing code and spend relatively little time designing and coding new and novel algorithms.”
Let me clarify as it may be useful for other reads if I put this into better context:
There will always be new algorithms, just not for every (specific) problem. Unless some new computing paradigm arrives (I would say quantum computing, but frankly that’s applicable to a very small subset of problems) the most effective algorithms, once discovered, will just be used over and over again. Searching algorithms are an excellent example and the one I had in mind when I wrote the paragraph.
It’s different to the written language as the domain set is far smaller, the language without context — just a series of operations which for a limited and specific problem is finite. Now, mathematics is different of course, but computing is a subset of that and bounded. At least in 2021.