I applied online and then contacted by a recruiter, who scheduled a 45-60 minute call with an engineering manager for the team with whom I was interviewing. This call went well, and was 50% talking about Etsy, my experience, and the team, and the remaining 50% of the interview was a small (and very unchallenging, surprisingly) coding challenge on a shared Coderpen. I then heard back the following Monday and was emailed a coding challenge to complete with an "unlimited" amount of time to complete. It wasn't difficult but it did take time writing documentation for it, testing it, etc...
I then heard back the following day saying they wanted to move forward with onsite interviews. I was really excited as I had been to the Etsy office before but never for a day of onsite interviews. Anyways, I scheduled my visit 2 weeks in advance, and they (recruiters) helped organize airfare, transportation, and hotel. The process was very seamless and within a couple hours, I had my complete itinerary.
On the day of my interviews, they provided a driver from the hotel to the office. I checked in with the receptionist, and a recruiter took me to a conference room downstairs where my interviewers (it was a pair interview) were waiting. They were friendly and asked a 2-part question the first half of which I got almost instantly, and the second part I could easily solve but not in the way they wanted me to (I wasn't allowed to change the code I already had written--strangely). Then, I went to lunch with the engineering manager for the team, followed by another technical interview involving explaining and walking through Javascript/jQuery snippets, writing command line utilities (how would you do this... etc). This interview went well and was very easy. Then, I had an interview with a project manager which was mainly behavioral, followed by another pair interview with two engineers. The first one asked me a pretty coding question (see below), and the second one asked me to design a function that would evenly distribute load (users) across scaled database nodes, and when load was maxed on those nodes, boot new ones, and redistribute the load again. I was stumped (I was an undergrad at the time).