I'd love to share my recent interview experience here as I think it'll benefit the future candidates in the community and it would be a good public feedback for the hiring team. I'll try to share my feedback in a respectful way and avoid very specific detail about the interview question.
It took 2 weeks between applying and receiving the initial email from recruiter, requesting to book a call with recruiter. This is understandable as the recruiter is likely processing large number of applications.
The first round coding interview was scheduled 2 weeks later. From a candidate point of view, this does feel like a very long time. My feedback to the hiring team is please provide up-front ETA and provide candidates regular updates, e.g. we expect the whole process taking 4-6 weeks. In my case no ETA and updates are provided, it just felt very slow.
The first round interview is to ask candidate to identify a number of flaws in an existing implementation of a cache. I think this interview is poorly designed. Because it is framed as some very hardcore low-level algorithm problem, however in reality what the interviewer was looking for is to fix some basic software design issues. Fortunately my interviewer reminded me a number of times to not over-think, that has guided me towards the right path. My feedback to the hiring team is that please frame the problem appropriately. What I heard is you ask candidate to re-implement a high performance hash-map but actually you just want to see if the candidate could spot code cohesive issues. My tips for future candidate is please familiar yourself with 'thread' concept in C# or Java, e.g. how to make a piece of code thread-safe.
After passing the first round, the next and final phase is called 'panel'. During the panel round there are 2 x coding sessions and 2 x system design sessions. The coding problems are actually quite hard. I tried using dynamic programming to solve one of them but that didn't end up well, as I wasn't able to complete the solution. Now that I'm thinking if I just simply tried a brute force way maybe I could at least solve the problem. I felt my intention to try a more optimised solution didn't score me extra points which is a bit disappointing.
For the System Design part, I also feel that the interviewer had something in mind how that system should be designed, and if you come up with something else they don't seem to care much. This is unfortunately the nature of the interview setting, when they don't think you are good enough, they won't even be curious about your solution. The other thing I felt quite disappointed is the interviewer is not trying to help me. In the last system design interview, the interviewer made the problem quite vague, and refuse to help me connecting the dots, I ended up spending a lot of time wondering what he actually wants me to do. Even this person is titled Staff Engineer I felt his communication wasn't on Staff Engineer standard.
My suggestion to the hiring team is please mock run your interview with internal staff, check if they actually understand the question you ask, and make sure all the people who conducts the interview have a good communication skill and is able to clearly communicate the problem to the candidate and help candidate clarify.