We recently hired new juniors and this was the process:
During this pre-screening we invite them to ask questions because in our experience, the candidates that are enthusiastic about what we have to tell and ask questions are the candidates turn out to be the best colleagues. Some candidates definitely are shy or are afraid to speak up, which is why I usually have a few questions that will result in them asking the question anyway without them knowing. It's not about the (quality of the) execution but the willingness.
If the person on my side agrees (almost always yes), I invite them to come to the office (if need be, fly them in) and tell them to bring their CV (not resume) if they have any.
At the office, there is a short interview:
Finally I ask if they have time to stay for ~4 more hours, or if they have time in the next few days to come for about 4 hours. They can give me their day-rate or I will decide it based on what we pay other candidates if they feel uncomfortable.
This is when we'll work with them, usually with more people from the team they'll actually work with. And they get paid for that work.
If there is consensus after this first half-day by the team, they can come on-board, with a month as try-out so that both they and we can separate ties without any obligations. Fire at will doesn't exist here.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.