1) Get to know you phone call: This is the quick 30min+ phone call to get to know you, set the expectations, and to learn more about the company.
2) Codility test: This is your typical algorithm questions. These honestly aren't too difficult if you know Java and some SQL, especially if you have been practicing online (Leetcode, CTCI, etc...). You are given PLENTY of time to finish.
3) In-person interview: You have the opportunity to meet part of the team and bask in the incredible view. And of course you will be asked some coding questions. Be sure to know the best OOP practices, and to show passion about projects and Grow.
4) Full-day test interview: You will be asked to come in for a full day interview. You are given a test task in Java to code and implement during the first half of the day. After lunch, you will present your code a part of the engineering team. This is your opportunity to really get to know the rest of the team (and see if you want to work with them). It is also your opportunity to show off your personality and show everything that you know.
While the process as a whole is long, it was a great way to find out more about the company, the people, and the work style. At first, the full day interview (task + presentation) seemed daunting, but I was able to have some fun with it and show the team my skills and my personality.