The following is a post which I found on the Blind app. It covers all the preparation and experiences of someone who received multiple job offers from the best tech companies, including multiple offers in the range of $550,000/year.
Because it can only be accessed via the app, I have copied it in its entirety here, so others can benefit from it. In order to respect the anonymity of the poster, I have not included their name. If you are the poster and wish to be credited, please contact me and I’ll update this article.
I learnt a lot about interviews from blind community. This is my effort to give back to the community. This thread is not about TC, but for the curious ones, I have multiple offers around 550k and I still negotiating, I will start another thread with comp details.
Offers I got – Facebook (E6), Uber (5b), Oracle (IC5), Google (L5), Lyft (L5), Pinterest (L5), Cruise (Sr SDE 2), Compass (Staff), Convoy (Staff)
Where I failed – Airbnb (Onsite), Netflix (Phone screen), Dropbox (PS)
I am SDE3 in Amazon and YoE: 11 and TC: 355k.
My interview preparation –
Algo and Coding
I started with CodeSignal. This helped me to kick start the coding prep. After solving 2-3 problems on each topic, I moved onto Leetcode. On Leetcode, I started solving “Top interview questions”, after solving 50+ questions, I started mock interviews on Interviewing.io, I failed the first 2 but I learned from my failures. I succeeded in the next 2 interviews and started attending onsite interviews of companies that I don’t mind failing. As of now, I completed 120 questions on Leetcode, Easy/Medium/Hard ratio is 30/75/15.
For Staff and higher level interviews, System design and Behavioral/experience interviews play very important role. Hiring panel assesses your level based your interview perf in these interviews.
I reviewed all the designs in Grokking the System Design Interview and watched most of the system design videos in this YouTube playlist and read this Primer on System Design.
In Amazon I used various AWS applications like Dynamo, S3, SQS, SWF etc and I also watched design videos of these services. That also helped me in doing well in these interviews.
My approach for system design interview –
3-5 mins: Clarify requirements and define functional and non-functional (scaling and perf) requirements
5-10 mins: Define APIs including input and output params. Discuss about data model (primary key, 2ndary key etc)
10-15 mins: Define higher level architecture. Talk about various components in the overall architecture, Web client, Load balancer, Application servers, Data bases etc. Take couple of APIs and talk about end to end data flow from user to the storage. Talk about performance issues and how caching can help (sometimes caching is a bad thing).
15-20 mins: Talk about critical use case(s) that is specific to the given problem. For twitter it is about fanning out updates and handling celebrity update issue, for messaging apps it will be maintaining device connection status and taking care of offline use case and read/unread status etc.
If there is more time, discuss about scaling bottlenecks and discuss about how to address those issues. Talk about failures and how do you handle failures (retries, exponential back off etc)
Behavioral and experience interviews
In behavioral interviews, interviewers expect you to answer following, be prepare with convincing examples from your past experience.
* Tell me about a recent project which was very challenging, explain the challenge and tell me how you went about solving it?
* Tell me about a project where you had to work with cross functional teams and had difficulty in managing the expectation from one of those teams? How did you handle such scenario?
* Tell me about a scenario where you had a conflict with senior/junior in your team, how did you resolve this?
* Tell me about a scenario where you couldn’t meet your commitments on a project, what was the situation and impact? how did you handle the situation?
* Tell me about a scenario where you discovered an issue in your design in the middle of the project and how do you went about resolving it?
* What is your process of project prioritization? What do you do, if in the middle of the project requirement changes?
* I was very nervous before my first onsite as I appeared for an interview after long time. It went well. That game me lot of confidence.
* Treat the interviewer as a peer and have an open discussion in design interviews. When an interviewer enters the interview room, greet them with a smile. Interviews can be very nervous, a smile can calm both of you.
* When one of the interviews doesn’t go as expected in your onsite, you have to quickly forget it and move on positively to the next interview. If you do well in 4 out of 5 interviews, they might still offer you the position.
If I missed anything, you can add a comment, I will be happy to answer.
5 thoughts on “Cracking the Senior Software Interview”
Thanks for the post. Can you post his follow up after he’s wraps up his final numbers in negotiations?
Hi Mike. Glad you liked it. Unfortunately I don’t check blind frequently and won’t have any way of knowing when he makes a follow up post. If you’d like to keep an eye out for it, I found the original post in the “tech lounge” channel
Hi! I have a short question, I just want to know what TC means?
I am not a native speaker but I hear this TC all the time when someone is talking about interviews.
Hi. TC stands for Total Compensation. This is usually (base salary + cash bonus + stock). So when the guy in the article mentioned 355k TC, he means that he is getting $355k per year, in stock, salary and bonus.
LikeLiked by 1 person