TLDR: It would be pretty bad in my team because, IMHO, interviews are a two-way dialogue. More details below.
I do some hiring at a big systems company. We want to simulate your performance as a team member. We treat you as if you're a member of our team already and see how you do it.
Here's what I do:
First 5 mins:
- Ask the candidate about their day and how they're doing
- Calm their nerves by asking them about something on their resume (their college, previous workplace, some project that caught my eye)
Next 10 mins:
- We use C and C++. This is systems programming, so I need people who understand pointers at least. A simple question like string reversal or linked list insertion. While the syntax isn't that important, I need to know that you understand pointers
Next 15-25 mins:
- A pre-selected problem from our codebase (or something we're thinking of adding) and see how they would approach it. The solution isn't just code. It is also how it would perform with different memory sizes, disks and cpu configurations. Again, syntax isn't as important as the approach.
Usually, this is the killer question because we tend to go deep into a solution and the problem. This is more like a 1:1 meeting with another engineer instead of a traditional interview. We're basically simulating a problem solving discussion we have everyday. What we want to see is how you absorb the problem and how you start solving it. Doesn't matter if you don't know the best solution from Knuth. What matters is having a good discussion about it and solving the problem the best you can.
If there's time to slip another question:
- Ask a quick scripting question. They can choose their language. Again, syntax isn't god almighty. It's more about the approach.
Last few minutes:
- Give them time to ask their own questions.
Most people ask about the kind of work they'll be doing or the company. Some people like to ask more about the pre-selected problem earlier because those problems are genuinely interesting and relevant.
To answer OP's question, some people do come back with algorithmic questions and we try to answer them too. But this ends up being more of a friendly team discussion instead of clashing egos. To be honest though, we'd really like you to ask some genuine questions about our team/company/product here. This is why asking an algorithmic question back would be bad. It's just unproductive. We want you to be absolutely sure you want to work with us too. As I said before, interviews are a two-way dialogue.
Disclaimer: This is only how we approach interviews in my team. This doesn't apply to all companies, especially the ones which interview people in bulk, have random hiring committees and assign candidate to random teams. We only invite people who we think are a match or who are interested in low level programming and willing to learn.