1. If they want me to napkin code, I call it quits immediately, even if I know the code they want me to write be heart. Watching me write code on a whiteboard or piece of paper has no demonstratable connection to how I work day-in and day-out. Places like this would be both a waste of their time to hire me, and a waste of my time to interview for. I always ask up front about this if I'm unsure how the interview goes.
2. I set myself up to control the interview. I bring my laptop, ready with a bunch of work I've done that I can show off. When I sit down, I ask "Hey, I brought a bunch of interesting projects that I can show off, is that alright?" If they aren't interested in seeing that, they are clearly not interested in the sort of work I do, and not interested to see how I can fit into their team.
3. Ask what their typical day is like. This includes asking what the most painful part of their day is.
4. I want to know specifically who I need to talk to and who would need to talk to me to finish my work. The higher the number of people I need to talk to, and the lower the number of people who talk to me is a real bad sign. Reporting to and trying to appease multiple bosses with completely different goals and timelines is bad. Also, if there is no one under me, then job clearly doesn't respect or desire mentorship.
Sometimes I skip some of these steps, and obviously your mileage will vary, but always ask the questions that give you answers to how you like to work. For instance, if you want a cubical and want to put on headphones, ask about the office layout, and what expectations the company has for your communication abilities.