Phone screen with recruiter: Talked about myself, my goals, the company. Recruiter spoke fluently about the team & hiring goals, and set expectations for the interview process.
Coding challenge: Met one of the engineers on my team and got to talk about the work for 15 minutes, with a 45-minute coding challenge in the middle. Thankfully, the problem felt like it tested your skills as a software engineer, and not your memory of algorithms class.
Virtual onsite: Had the opportunity to do this over two days but decided to do it all together. They fully briefed me on the process, which included two more coding challenges, a product-type question, and a conversation with my would-be manager. It was about 4 hours of interviewing total, plus breaks. The whole process was organized, and everyone I met was really nice.