The recruiter contacted me. First interview was the phone screening with a dev manager. Second is the onsite in Seattle. I was scheduled to meet 2 technical team members in 2 hours. Later I found out that the original lead interviewer was replaced for some reason and felt that the replacement was not prepared enough (probably short notice). The questions were quite simple but one of the engineers focused a lot on all possible edge cases and how to handle them (all came from the replacement interviewer) so I had to erased and rewrote a lot on the whiteboard (hated whiteboard for the same reason). I have went through lots of interviews (both as interviewee and interviewer) so I felt a bit off right in the middle of the interview when 2-hour interview focusing that much in handling edge cases and not on CS fundamentals. One of the questions was about data structure and thread-safe. My solution satisfied the interviewers but I insisted that's tons of work to implement thread-safe for the data structure provided but the interviewers don't know why and I couldn't recall why either (I did similar thing in the past. Researched it again after going home and although I am technically correct, I should not have done that!). In the end, I was rushed into the last question of writing a SQL query with no schema provided so I had to make some assumptions about the schema (I missed one critical column in one of the table). Got an email from the recruiter few days later saying that I did not get the offer because of company fitness. They are probably right because of the way I conduct a 2-hour interview is quite different from how they do it.