I will not hack on your codebase for free in an interview
So here's the problem:1) A great way to assess your technical chops is to watch you code.2) A great way to see if you can do the actual work that you'll be expected to do on a day-to-day basis is to work on a real-world task on the team's actual codebase.3) If you have what it takes, then it's crappy to have you "work for free" for a day.  But if, after the day's over, it's clear that you don't have what it takes ... then have you really "worked for free"? (Remember, freelancers don't get paid unless they deliver.)Here are some ways to address this problem:1) Do paired programming on the actual codebase -- but on an old problem, the solution to which has already been implemented in production.  This makes it clearer that the exercise is merely to assess your skills and not to get free labor out of you.2) Pay all in-person interviews for their time.  Once they've passed the phone screen and whatever other preliminary hurdles you've set up, you should feel pretty good that they're not just wasting your time.  So compensate them.3) If you don't have the budget to do #2, which -- let's face it -- is uncommon, then perhaps you could offer a signing bonus to anyone you end up hiring that essentially repays them for their time.