Whole process took 2 month. Screened by the HR, very nice lady, asking about general questions and a little about the resume. Forwarded to the team lead and future team members for a further technical interview. The technical interview was about 40 minutes, there were the team leader, lead of production engineer, and the principle software engineer on the phone asking about questions related to different algorithms on the project I did (I sent the code before the interview). Then was the onsite interview. Presentation first (my own AI project), then was interviewed by the principle SDE. Whiteboard interview as you may expected, 5 questions in total, 3 dynamic programming questions. Then conversations about the project they are currently working on. After the interview, another round of interview with the SDE lead and PE lead, asking about ideas on the project and the AI system I built. Back to back interview again by two future teammates, asking about general C++ questions including C++ 11, memory management, ownership, OOP and went very deep into STL.
Lunch break with future team members. After lunch, back to back interview with 2 more developers asking about C++ questions, STL questions and data structures. Then an interview with the director of software development. Asking about general C++ questions first, then went to the AI system that I presented, and moved to machine learning, asking about SVM and how to choose ML models. Last, an hour's interview with the CTL, asking about goals, perspectives of SD, failures ever had etc.
Was an 8 hours interview.