I have learnt so much from leetcode community and it is time to contribute it back to this community. Since I signed NDA, I can't tell you the exact questions.
YOE: 6
Phone interview: A bunch of LP questions and one graph problem. I was told: I have done an excellent job and was moved to virtual onsite.
Virtual onsite (4 rounds):
Round1: LP and System design (by Hiring manager): I was asked to design a small feature in AWS service: mainly, distributed system tradeoff and database selection. Recruiter said I have done very normal on this round.
Round2: LP and OOP (by another Engineer Manager): I am a bit confused by this obsecure question and a bit lost as well :(. I asked whether it is an OOP or algorithmic problem (it looks like it is a mixed one). I realized this is an OOP at the last moment based on questions asked by interviewer. It is too late to write complete code, but I explained verbally what kind of design patterns should be used here. Recruiter said this round is not very well.
Round3: LP and coding question: it is a bfs + heap problem. was able to come up with an optimal solution/complexity analysis; Recruiter said this round is very strong.
Round4: LP and coding question: two coding question on this around: an array problem [medium] and BFS problem[medium]; Was able to solve them in an optimal way and analyze complexity. Actually, I finish both questions ahead of time and there are 15 minutes left. It is my turn to ask interviewer a lot of questions. Recruiter said this round is very strong.
It is not surprising that I was rejected due to the 2nd round. Recruiter said I have done very well in all the LP and coding.
Phone: Interviewer is very nice. I have two coding questions (easy and medium). All of them are FB-tagged. I solved 1st question very quickly. For the 2nd question, interviewer changed his way and tried to discuss with me on how to approach this coding question. I was able to discuss all the optimization and code it.
Onsite
Round 1: behavior question + 1 easy LC question; I was able to give my own project experiences and answer his BQ.
Strong Hire for this round.
Round2: System Design, this is a typical system design question. I was able to progressively design this, discuss tradeoff/bottleneck/scale it. Most of time, I lead the whole session and interviewer interrupted me if she is a bit confused.
Strong Hire for this round.
Round3: Coding (Medium + hard): this is probably the most difficult round for me. The first question is a LC problem related to stack. I was able to solve it very quickly. But interviewer dumped me with several test cases and let me do all the dry run for them. After finishing the first coding question, I only have 15 minutes left. For 2nd question, it is a DFS problem with added significant complexities. Since I do not have much time left, I briefly discussed with her about solutions and she let me code. I was able to code it, but sure that there were bugs there. But I run out of time.
It was surprising when recruiter told me: this round is Strong Hire.
Round4: Coding (Hard + Hard + an extended 2nd question): The first question is a similar LC tree problem. For the 2nd question (array problem), I was stuck for a few minutes. But fortunately, I was able to sort out the question without any hint, code it and do the dryrun. We have several minutes left. But interviewer wanted to continue his discussion and challenge me with an extended question on the top of 2nd question even though we run out of time. I was able to provide optimization and code it in a totally different way. I would say: there are three questions for this round.
Strong hire for this round.
After two days, recruiter told me to move forward with an offer.
In terms of preparation, in the past, I used leetcode for practice once in a while. Since last Nov, I started to practise coding on leetcode regularly and learn a lot from this community, esp. lee215, stephan etc. Due to family reasons (need to take care of baby :(), I did not try leetcode contest at all. Thank you all and good luck for your job hunting!