I am happy I can finally post and share! Thanks to Blind, I successfully received 5 offers. I'm here to give back. This is part 2, where I share my interview prep & tips. See part 1 which details my 5 offers. https://www.teamblind.com/post/M2VcYAsS BACKGROUND INFO: + I started from (almost) scratch. I had algorithms courses back in college, but not to an interview-ready level. Also, it was a long time ago. + I had zero system design interview experience. I had 6 years of real world software experience. I have designed small, medium, and large systems/features. No problems-at-scale experience. Again, zero SD _interview_ experience. + Prepped for 4 months. In the next sections, I give my recommendations on how to prepare. Order matters. If I were to do it again, below is the ordering I would use. HOW TO PREPARE - CODING INTERVIEWS: 1) Start with the Blind 75 list. However, omit dynamic programming. Do _one_ entire category at a time. If you're new to Leetcode, doing this list one category at a time will teach very important fundamentals: a) Common algorithms and patterns, b) fundamental data structures, c) the concept of practicing and learning Leetcode one topic at a time to repetitively work the same brain 'muscles'. 2) Move on to topics which are not covered (or only partially covered) by Blind 75. Practice them in the same way. One category at a time. Meta and Google gave me prep guides. I used them to formulate the additional topics. Some examples: Doubly linked list, sorting algorithms, backtracking, additional graph algorithms like Dijkstra's, etc. 3) Do both most frequent Leetcode problems overall and most frequent Facebook problems. Do as many or as little as you dare. There's no perfect number. You decide if additional problems will continue to help you. Therefore, this step has no defined end. By solving frequent problems, you will: a) Cover questions that are commonly asked, b) learn problems/topics which do not neatly fall into common categories, but are important (LRU cache, nested iterators, etc.), c) give you repetition on topics you've already covered. 4) Dynamic programming. Go back to Blind 75 and do the DP section. Only do this shit if Google is your #1 target company. Otherwise, skip it. If you fail your Google interview because you were asked DP, oh well. Move on. I spent a tremendous amount of time trying to nail DP. My Google interview didn't have a single DP question. No other company asks DP questions. Huge waste of prep time and stress. If you need to study this topic, Youtube 'Dynamic programming'. The first video, by freeCodeCamp is the BEST. Alvin is a fucking hero. All of us owe that man. He's saving nerds. I watched all 5 hours of it. Tips: + Buy Leetcode premium. The price isn't up for discussion. It will literally help you make big $$$. + Youtube is your best friend. Search any coding topic, data structure, algorithms, or exact leetcode problems. You'll find what you need. Watching someone visually walk you through a problem and solution or an algorithm makes learning much, much, much easier. + Visualize the problem and solution before coding. This makes all the difference. I like to draw using pen and paper. If the entirety of the problem and solution is not a clear picture to you, your code will be wrong or missing edge cases which leads to lots of debugging. + Prep smarter by timeboxing problems. If you do not feel you're on the right path after 15 minutes, it's time to Youtube it or look at the solution. Ensure you truly understand the solution. Then prove it by actually solving the problem without referring to the answer. My leetcode numbers are 60 easy, 125 medium, 10 hard. Additionally, I repeated 30-50 problems multiple times. There are times when repeating problems are beneficial - you need to jog your memory, want to improve speed, solve the problem with a different algo or data structure, etc. HOW TO PREPARE - SYSTEM DESIGN INTERVIEWS: This is harder to give step by step recommendations on. Lots of variance based on the real work software experience you have. I will give my recommendations, but modify according to your needs. 1) Watch a few videos of actual system design interviews. Videos must not be edited or pre-planned. Youtube and interviewing.io has these. I had never done a system design interview. Watching them helped me understand what _actually_ happens in 45-60 mins of design: Interview structure, pacing, what it looks like when someone struggles yet carefully works towards a solution, the awkwardness of using diagramming tools hurriedly, etc. 2) Use the list of problems from Grokking the System Design Interview. To be clear, I am not saying to take the course. I'm saying to practice the problems in the list. To actually do these problems, a few things you need: a) A way to learn design concepts and patterns. Huge variance here based on your experience (or lack of). Youtube, the book Designing Data Intensive Applications, Googling things, and reflecting on projects from work are what I used. b) A framework for working thorough SD problems. There are several. Pick one which makes sense to you. This will be a blend of whatever sources you use for study and your own real world experience. c) A way to verify your solution. Your wonderful friend, Youtube, has your back. Seach up the exact SD problem. 3) Any additional problems you feel you need. Some examples: Design Leetcode, design Paypal, etc. Tips: + Just like Leetcode - attempt the problem by yourself first. Timebox. Find and truly understand the solution. Then prove it by doing it yourself. + System design problems are harder to practice than Leetcode. They're so ambiguous. Leetcode has a prompt with examples and you have a way to verify your answer. For system design, you don't have a clear prompt. You don't know what the scope of the problem is. You don't have a way to 100% verify your answer. You don't know how wide or deep your design needs to be. Ambiguity everywhere. In a real interview, you can ask the interviewer questions and they say "yes" or "no" and start bounding the problem space. On your own, the practice has no clear bounds. What to do? + interviewing.io is excellent for real, live, practice SD interviews. I paid for one. The feedback was extremely helpful. Mock interviews with in-depth feedback removes much of the ambiguity described above. The price for 1 or 2 interviews isn't up for discussion. It will literally help you make big $$$. HOW TO PREPARE - BEHAVIORAL & PROJECT DEEP DIVE INTERVIEWS This post is already too long. I'll keep this section short. + Reflect on past situations and technical projects. + Practice telling your stories using STAR method. + For the senior level, ensure your stories include details of your leadership, decision making on ambigious problems, technical complexity, and valuable lessons learned. + For the senior level, these interviews are as important as coding and system design. Prepare well. INTERVIEW TIPS + First impressions in initial 5 minutes are key. Be a likeable person. Interviews are very human. If they like you, your interviewer will be rooting for you and wants you to pass. + Don't go into an interview cold. Warm up with practice problems/stories beforehand. + System design - at the senior level you must _lead_ the _entire_ interview. Requirements gathering, clarifications, working through challenging parts, discussion of tradeoffs. All of it. + System design - justify every decision. + System design - say "I don't know" at least once in the interview. You're not expected to know everything. Displaying both humility and that you know what you don't know is important. + System design - treat the entire interview like a conversation in a meeting with that colleague you like. Relax. If you're stuck or unsure, realize that's part of the process. Work through the issue methodically and carefully, just like in real work. Ask me anything! YOE: 6 Old TC: $230k New TC: $450k #interviews #prep #tips #leetcode #systemdesign #behavioral #flexport #coinbase #linkedin #meta #airbnb #google #stripe #uber #offers #ama #engineering #swe #senior #coding #software
Cool
Cool
Congratulations. What company are you going to? What is the daily schedule for leetcode? Is there a target number or hour?
I accepted my Airbnb offer. Initially I was doing 2-3 hours on weekdays, 5-6 hours on weekends. This is both actual coding up problems and studying the topics. Eventually when I migrated to system design prep, leetcode was reduced to half as much (or less).
Can you share the breakdown of your offer?
There is one location poll trending in blind . What would be your pick and reasoning? https://us.teamblind.com/s/FTNUpLmY
Miami. I've been to majority of those cities. Miami is lively, warm, sunny, beautiful, diverse. Always something to do in Miami. But also be careful. People in Florida are crazy.
How to deal with rejections?
Is your question 'How to deal with the negative feelings after a rejection?' I will assume that's the question. Rejections are tough. My first 2 onsites, I failed. Hard. This was after a month of prep. At this point, I realized there was tremendous more prep needed. Months worth. On the day of the 2nd rejection, I was demoralized, sad, and intimidated. Could I keep the grind up for months? I told myself it's okay to be demoralized for the day. Spend the day making myself feel better by doing something fun instead of more prep. The next day, I was back at with strong desire to push forward. I made sure to think about the bigger piture - I _want_ that mega TC, and I _want_ to work at a great company. I'm also already this far in, no going back. I laid out a plan to become ready, knowing it would take 2+ more months. Once the plan was in place, it felt very reasonable. There was a goal, a plan, and a timeline. This was a long way of saying some of the things I said in Part 1. Please check out that post. I mention failure and the journey.
@OP you're an actual legend, thank you so much! I really needed this
I'm glad it helps. I'm happy to give back. I used the wisdom of Blind very often during my prep.
Any tips on negotiating?
Easiest method is to get 2 (or more) equivalent offers and share them with the opposing recruiter. This will force each company to give their max offer. Additionally, any time you ask for something - money, stock, deadline extension, etc. - give sound, logical reasons. You need to back your asks.
@purplrgoat : a few examples? I always feel my reasons for wanting money are personal and first world kind of reasons so want to hear a few from others
Any tips for nailing Airbnb interviews?
Yes. Practice the most frequent Airbnb tagged problems on LeetCode.
Sigh. Yeah I failed my phone screen (2) but they were both tagged problems so many mixed feelings about that
Was there something special you did for Airbnb?
Yes. Airbnb tagged problems on LeetCode. Very important.
Any other tips for Airbnb? Not a lot of companies to look forward to after Meta, Airbnb is a top next choice :)
This post makes me realize I haven’t done enough prep… I have no distributed system experience and all I’ve done is high level system design research. And behavioral questions kill me because I can’t come up with concrete examples.
Definitely go _do_ system design problems. Behavioral prep takes time too. You got this!
Was Airbnb behavioral different from other companies?
Tech Industry
Yesterday
2499
Quitting this Slave life
Tech Industry
Yesterday
1995
The end of Backdoor Roth?!
Tech Industry
Yesterday
1146
Which large tech companies you think will last 20+ years?
India
Yesterday
842
Modi is a legend, will be remembered for centuries to come
Working Parents
Yesterday
777
What do you think is wrong with a kid who got rejected by 9 colleges?
This is gold. Currently LC in and I needed to read this, thank you and congratulations OP!!
Good luck to you! The grind will be worth it in the end!