Status: 5 years of experience in small company
Education: BS in Computer Science @ a Top 1000 college in USA
Current Company: Small Tech Company in USA. Most have probably not heard of
Background
At my current job I would say my tasks were divided into
Code maintenance (Bug fixing) 65%
Feature 5%
Delegating work/Helping teammates 10%
Upgrading/Installing microservices 20%
I was unhappy about my work distribution, so I decided to find a new job.
I had applied to 100+ company but the only Amazon, Facebook, Google, and 2 other midsize company responded. Maybe covid situation cause smaller companies to stop hiring. I had never applied to FANG since I never felt qualified.
Amazon
Location: Seattle, WA
Interview date: Nov 2020
If you have already read my amazon post, its because it's from my previous post. I decided to combine all interview experience into one post so the information would be centralized.
Online assessment
Questions are straight from here
https://leetcode.com/discuss/interview-question/344650/Amazon-Online-Assessment-Questions
Onsite 1: (Coding + LP):
LP - Ownership. I explained my past project.
Coding - LC medium. Topology sort problem.
I was slow to identify the approach but ended up coding it. I ran out of time and didn't test my code.
I did NOT feel good about this round.
Onsite 2: (Coding + LP):
LP - Customer obsession. Interviewer didn't like one of my stories but I made up for it by telling another one.
Coding - LC easy. Hashmap problem and counting.
I was able to code, test solutions, and answered followed up questions.
This round went well.
Onsite 3: (System Design + LP):
LP - Deliver Results. Interviewers ask about failure and deadlines of past projects.
System design - Design some components on Amazon, not from a famous prep guide, but you can apply concepts.
I was able to solve the problem and answer all follow up questions.
This round went well.
Onsite 2: (Coding + LP):
LP - Learn and be curious. Interviewer asked me to explain something new I learned.
Coding - LC hard. String matching problem.
I spent the whole time talking, wrote little code and couldn't solve the problem.
This was my worst round.
Post Amazon Interview
3 days after onsite - Recruiter emailed me to speak. She offered downlevel to sde1 and would have to find another team. I was told this process takes 5 weeks.
14 days after onsite - Surprisingly the recruiter found a team in 2 days
15 days after onsite - I scheduled a 10 minute call with the hiring manager of the new team. It was a call for HM to explain the team/role and for me to ask a question about the team.
16 days after onsite - I received an offer of 178 TC avg
What I learned from this experience
You have to be quick with coding solutions, there's only 25 minutes left after leadership principles.
Facebook
Location: Menlo Park, CA
Interview date: Dec 2020
Phone interview 1:
2 sum problem. I failed to recognized HashMap approach and did NOT make it to part 2.
Following day I got rejection email.
Google
Location: Bay Area, CA
Interview date: Dec 2020 - Jan 2021
Phone interview 1 (Coding) :
Q1 - HashMap counting problem that involves string.
Q2 - BFS/DFS graph. Interviewer threw in an unexpected requirement. I didn't finish coding.
Recruiter called 1 week later and asked for another phone interview.
Phone interview 2 (Coding) :
Q1 - HashMap involving common characters between 2 string.
Q2 - Guess some string combination. I suggested a brute force solution then time was up.
This round could have been better.
Few days later, recruiter said my results was good enough to move onsite.
Onsite 1 (Coding):
Q1 - Graph traversal
Q2 - Graph traversal with memorization
This round went well.
Onsite 2 (System Design):
Design some google product. The interviewer was on this team, so he was an expert of the question.
Interviewer tried to break my design by firing many questions at me. I easily defended my design.
This round went well.
Onsite 3 (Coding):
Q1 - Grid traversal using BFS.
Q2 - An edge case was added. I couldn't finish coding on time
I could have done better this round.
Onsite 4 (Coding):
Q1 - Sorting object question. Interviewer added many weird requirements, by weird I mean I didn't know how to code them. After 35 minutes of trying to understand the question, I finally started coding. During the next 10 minutes I wrote a couple line of code before I was stuck again.
This was my worst round.
Onsite 5 (Behavior):
Standard Behavior questions
After 20 minutes, interviewer and I talked about our hobbies.
What I learned from Google experience
Google will push you to your limits, whether coding or design. None of their questions are from leetcode.
Post interview
2 days after onsite - Recruiter emailed me saying "feedback is positive" and my package is going to Hiring Committee
6 days after onsite - Recruiter called me about Hiring Committee approval of L4. Team matching will be next.
Preparation Strategy
Coding
1 year prep plan using Leetcode premium.
For 8 month I spent 1 hour a day working thru Leetcode all time frequency list. I would picked a random problem from the list. Some problems would carry over to multiple days since I did not look at solution. After getting 100% TC pass, I would compare my answer with discussing section.
3 month before applying, I did around 25 mock interviews with friends who were also software engineers.
1 week before each onsite, I sorted by company tag.
I never participated in a weekly contest, but seems since many have participated.
LC stats during 1 year preparation
327 total
Easy - 33%
Medium - 59%
Hard - 8%
System Design
3 month prep
I review my company architecture, whether it was drawings, diagram, or documentation. This helped me at work and system design interviews.
I also browsed thru internet for videos and articles about real world system design.
Conclusion
Good luck everyone and keep practicing.