I think there are some cases where pseudocode should be mixed in with real code. I had a phone interview with a company that used mainly Java, Scala, and python.
I elected to use C++ as my coding language during the phone interview. It is the language where I know all the syntax of all the standard container libraries (hash tables, linked list, queue, stack etc). What I did not realize was the interviewer was unfamiliar with C++. So writing something where you check if a key exists in a hash table would look very foreign to someone who isn't familiar with C++.
Example of checking if a key exists in a hash table for C++
Code:
if (myhashtable.find(key) != myhashtable.end()) {..}
I think in cases like this, I should have maybe wrote something much simpler to convey what I was doing even if it wouldn't be compilable?
Code:
if (myhashtable.contains(key)) {..}
As for whiteboarding interview, my default is to write real code. But depending on the constraints and what the interviewer is looking for, I may substitute pseudocode in places where it makes sense.
Of course this all depends on the company too. Google was strict about writing real code that compiled. They actually copy what you write on the whiteboard and make sure it compiles and run.