This was the best internship interview process I have ever gone through for a job I did not even receive an offer for. So I definitely think it's worth it for me to reflect on in detail. I won't be mentioning specific technical questions but I'll explain everything else I went through.
1) I applied online and got a response very quickly (1-2 days) about setting up a phone interview. The phone interview was a mix of behavioral and technical questions related to a subject I claimed to be strong at.
2) Next, I was given up to two weeks to do a coding challenge related to path-finding and graph exploration, a variation of TSP. They provide a little GUI to test your solution which was very cool and helpful. This took me around 20 hours to research, implement, test, and optimize. It should take less if you are more experienced.
3a) Second round phone interview was with a couple members of the engineering team. More behavioral and technical questions related to DS/Algorithms. Being interested and passionate about the things they do there is very important to them.
3b) I had to provide written feedback of how I felt the interviews were going.
4) They flew me across the country to their office in Santa Barbara! Everything was paid for me and I really wasn't expecting a start-up on start-up funding to do this for an intern candidate. There were 5 rounds of interviews at their office back-to-back. Pretty much all of them were a mix of behavioral and technical.
4a) First interview for me was 2-on-1, behavioral with website front-end technical questions. I blanked out so hard on how jQuery syntax worked which probably cost me the job, so make sure you know your syntax!
4b) Second was another 2-on-1. General DS/Programming Languages questions. This went fairly well for me. They essentially want to know if you know the capabilities encompassing each programming language on your resume.
4c) Third was the last 2-on-1. Talked with the creator of the coding challenge I did earlier about how I could have made my solution better, etc. Also did an algorithms question on linked lists. Ironically, this was the one question I have actually seen before and yet I managed to mess it up on the whiteboard. Practice writing out code by hand. It's surprisingly much more different than you think.
4d) Fourth was with the lead engineer. We talked a little bit and he gave me a logic puzzle to solve. I worked out the math theory behind it and was coming up with the implementation algorithm when I ran out of time.
4e) Last interview was with their CEO, Kevin O'Connor. I wasn't expecting their CEO to interview an intern candidate at all so this was a nice surprise. We had a nice conversation about his company and I got the sense he really wants you to prove that you're worth it to his company.
4f) Bonus! Went out to lunch with 2 more members of the engineering team. Was awesome talking to them in a relaxed atmosphere and they even drove me to the airport.
Alas, I did not receive an offer but that was definitely my own fault for not preparing as much as I should have in the subjects on my resume. I spent too much time learning arbitrary CS topics not on my resume in fear of not being able to cover the entire spectrum of questions I was expected to answer. For example, the job description included a preference for PHP on Nginx. I did not know Nginx so it wasn't on my resume. I spent a day implementing Nginx and learning about FastCGI and stuff when ultimately I wasn't asked a single question on PHP, Nginx, or the back-end. The better solution would be for you to know what you're good at, and ensure you excel at those subjects.
All in all, this was one of the best interview experiences I have ever had. I traveled, talked to a number of really great people, and learned so much. The questions asked were completely fair and focused on my experiences. They never took more than 2 days to reply to me. I really did not expect them to go in such depth for engineering internship candidates. It really shows how high the bar is for the employees they have there.