First was a phone interview/screening. Next was a video technical interview. After the tech interview they invited me to meet on-site for a day of in-person interviews. They paid my entire travel costs to and from Utah, including reimbursing out-of-pocket expenses.
The on-site interview consisted of a Javascript coding problem (which they also offer in C# and Java), four sessions each with a pair of employees who I assume were all team leaders, and a lunch with two of their developers. Although they described it as a "half-day", it was really a whole day - I started and 9:15 am and left around 4 pm.
Each interview session included both a coding assessment and Q&A both directions. The first session went over the Javascript code, the rest were pseudo-code written on a whiteboard. The whiteboard problems were all algorithmic, a reasonable level of difficulty, and actually fairly interesting. My favorite was the counting islands problem (see below).
The Javascript problem was to take an existing web page accessing an API (with hardcoded parameters), and improve it. Add user input, input validation, asynchronous operation (as opposed to the whole page reloading), styling/layout, et cetera. You're given 1 hour to work on it.
I was told I would hear back in 1.5 to 2 weeks. They also said that they're not filling one specific opening, which means to me that I wasn't competing with others for the job; they'll hire all suitable candidates rather than just the best x number of candidates.
The week after my on-site interviews I was kindly turned down, saying that my skills were impressive but not a natural fit for their teams.
Based on the cost and effort required to travel across the country for my interview, and the content of the interview sessions, I think they should have done those interview sessions online. If you're going to fly someone across the country, you should already be 90% sure you're going to offer them a job; already be sure they're a good skills and company culture fit.