I recently went through an extensive interview cycle with many big tech companies. My goal was to land an exciting senior SWE job with top tier pay. In the end I signed with Meta due to best TC, exciting teams, collocation of office, and desire for a faster work environment. ————————- Final Offers: (Does not include future refreshers) Location: Seattle ✅Meta L5– Base: $209K Equity: $800K (25,25,25,25) Annual Bonus: 15% Sign-on: $75K TC: (515/440/440/440) —Google E5– Base: $209K Equity: $605K (33,33,22,12) Annual Bonus: 15% Sign-on: $75K TC: (515,440,373,313) —DoorDash L5– Base: $210K Equity: $750K (25,25,25,25) No Annual Bonus Sign-on: $21K TC: (419,398,398,398) —Microsoft 63– Base: $180K Equity: $300K (25,25,25,25) Sign-on: $100K (over two years) Annual Bonus: 15% TC: (332,332,282,282) ———————— Background: Although, it says I’m at Salesforce, I was last at Amazon. Level: L5 TC: $250K YOE: 8 Motivation: In the first half of 2021 I was burnt out, tired of COVID, feeling like I was getting older (just turned 30), had a manager that didn’t believe in me, and in general just wanted a different life with a big change. I figured that I had two choices: 1. grind LC/sys design and jump to a new company while I was working a job that was draining the life out of me. 2. Quit my job cold turkey, chill, travel, enjoy the rest of summer, and then properly prepare for interviews with a fresh mind and a clear vision. I went with the second option because I felt I could perform best after taking a long break and hopefully get multiple offers to negotiate up my salary. ——————— Prep Strategy: I studied for about 3-4 months but only about 2-3 hours per day during that time. My general strategy was to first get my LC skills up so that I could pass the phone screens and then focus in on system design so that I could pass the onsites. Since I was only an intermediate engineer at Amazon I had a lot of learning to do to pass the senior bar at other companies. LeetCode: The eternal grind for us SWEs…. But in reality it wasn’t as bad as I thought this would be. In general I prolly did about 200 questions in total. With an easy/med/hard breakdown of 25%/60%/15%. The best bang for your buck here was to buy premium, and use the lists under the Explore Tab. I mostly did the companies in question but also dove into graph theory a bit to prep for Google. About 50% of the on-site questions I was asked were on LeetCode. So do these lists and you’ve already aced half the interviews. BTW I was asked a total of 1 DP question the entire time and it was a top ranked question for that company. So don’t kill yourself with the DP prep. I still struggle in that space even today. System Design: This part scared me a lot before starting since I did not have much experience in this space. Additionally, unlike LC, there was not a standard path to become proficient in this space. Just a series of posts on blind with a variety of resources. So a big part of this stage was find the right path to walk before even starting to walk down it. Now that I’ve done it I recommend doing 4 things in this order: 1: Sys Design Primer (Grokking) : This is a PDF that’s about 150 pages. Skim it and focus on high-level details. Use this as a resource to get your feet wet if you don’t know how load balancers work or caching, or data model design. 2. Designing Data Intensive Applications (DDIA): The terrifying O’Reily book that intimidated the hell out of me in the beginning. But trust me this book will be worth It’s weight in gold!!! Even if you aren’t interviewing I suggest reading this book. It is state of the art for distributed systems. Buy this book, read chapters 1-9, highlight, and take extensive notes. Then read it again. Trust me on this. This book MADE me a senior engineer!!! 3. System Design Primer (Alex Wu): This book isn’t anything extraordinary, but it takes a lot of materials and puts it in one convenient place. It also presents the information in a format more similar to how you should present it during your actual system design interview. (DDIA is more academic). It also has the top designs you might be asked during an interview. So cramming these right before interview day is a good idea to cache it in your brain. 4. Gaurav Sen YouTube Channel: This guy has a great channel for discussing macro software design concepts. I didn’t watch everything he made but maybe 20 or so of his popular videos. These rounded out my final gaps in system design and also gave me the feel for how design interviews should feel. I did not do mock design interviews to practice but in hindsight I should have done one or two. Even after doing all of the above there’s still no substitute for actually being about to talk through a system design under pressure for 45 minutes. Behavioral: Something that cannot be overlooked. Since I’m coming from Amazon I’m used to Leadership Principal type questions and used that approach to prep here. I wrote a set of answers to common questions down in a Word doc to use as example whenever I was asked a behavioral question. ————————— Interview Details: I signed NDAs at all companies and will not discuss actual questions but I’m happy to provide difficulty and topic area. Coinbase: Rejected in Phone Screen Round Phone Screen: Implement File System APIs (LC-Hard). Did not finish in time as I chose the wrong data structure to complete the question in time. Salesforce: interviewed for LMTS, downleveled to SMTS. Phone Screen: HackerRank automated 1 hour test. Standard LC-Med, sorting. On-Site: Two Coding, One distributed system design, one object oriented system design, 1 behavioral. Coding questions involved string manipulation, sorting, linked lists, design (1 LC-Med, 1 LC-Hard). This was my first on-site and I failed the object oriented system design problem since I didn’t prepare for that type of question. Google: interviewed for L5, passed Phone Screen: skipped due to prior pass On-site: Two coding, two system design, one behavioral. Coding questions involved queues, graph theory, array manipulation, both LC Hard and tagged on LC. System design was non-standard and involved extensive questioning by my interviewers. Went all the way into specific API design, and data model trade offs. Key here was to know use cases of relational vs non-relational DBs very well. Microsoft: interviewed for 63, passed Phone Screen: chat with HMs, simple leet code easy problems. On-site: two coding, two system design, one behavioral/team fit chat. Coding was LC easy/medium involving tree traversals, string manipulation. System design was business case specific. Meta: interviewed for E5, passed Phone Screen: single array sorting question with tricks, leet code medium On-site: two coding, one system design, one behavioral. In each coding round it was expected that I completed two LC mediums in 45 minutes. I found the questions to be rather straightforward but time was the limiting factor. Nevertheless was able barely finish everything in time. All LC easy/med questions. Topics: tree traversals, string manipulation, two pointer array traversals, binary search trees DoorDash: interviewed for E5, passed Phone Screen: array/string manipulation, common LC tagged question (medium). On-site: two coding, one system design, one behavioral. Coding were both LC med/hard. However both were tagged on Leetcode. System design was non-standard but similar to concepts found in DDIA. Topics: dynamic programming, design, tree traversal ———————- Negotiation: Negotiations is always easier with counter offers. That’s why I was going for multiple offers… so that I could get best and final offers from other companies. In the end I was able to get Meta up to near max but couldn’t get them to budge on their signing bonus which I believe can go up to $95K in Seattle. Google is notoriously slow. Be aware of this. Offers don’t come until after you team match and other companies will likely push you to make a decision quickly if they perceive Google will be taking weeks/months to finish. ———————— Final Thoughts: I know many of you are reading this right now and maybe feeling intimidated by how much work this seems. I can tell you that I felt the exact same way just 6 months ago. I was unemployed, hated my last job, and was even questioning if tech was the right place for me to be at all given my issues with it in the past. But after taking a break I found a new sense of direction. I wanted to get back to the grind, grow, learn, invent, mentor, and make some fine ass money again. Starting is by far the hardest part followed closely by staying consistent. As I said early I only worked 2-3 hours per day. But I was diligent. I did that every day. 2 chapters here, 5 LC questions there, 3 YouTube videos later. I kept showing up and putting in the time. The great thing about it, is it started to snowball after a while. By the end LCing was fun, learning system design was interesting, and talking about my past accomplishments built confidence. So if you want to make a change in your career, don’t doubt yourself. Realize that the only thing between you and accomplishing your dreams is a bit of work. Don’t be afraid to take a risk. Life is short and your TC is too low! 😜 Get out that and get after it! Best of luck blinders!
Solid post. Congrats OP! 🥳
Congrats!! 👏👏👏
Also fk google no reason to go there unless you care about “prestige”. I’d rather go to Uber/Airbnb/Coinbase/robinhood or any other exciting place than that retirement home. I got an offer from google 50k below meta 💀 💀 stay broke nooglers
I felt a similar level of displeasure towards Google after interviewing there. I now honestly wonder where all the Google obsession comes from. Wasn’t too impressed throughout the process.
It’s the demand I think. Enough ppl would want to work for the title rather than pursue more $$ so they always lowball to reel in that market. Next time I job hop I’ll be skipping G
Congrats OP, and thanks for giving back to the community! Anything noteworthy about Meta system design?
Meta system design was a standard Gronkking type question. I followed the format the recruiters told me to follow and aced it. No surprises. Kudos to them for being up front with expectations.
Can you share the high level format?
Good Luck Op. The period you had to quit your job and prepare without any burning out is a luxury that a lot of people here can't afford :D But being consistent, it's hard and you nailed it. You totally deserve the great TC you'll be getting :)
Totally agree man. It was a privilege for me to take that break and I’m very thankful I could pull it off. Its something I recommend to people who are able to do so but I understand it was a luxury to be in such a position.
Congrats, you deserve it!!
Finally, one post that’s really worth every penny…kudos OP for carving out time to share your experience…quite helpful for lot of Blinders looking for a change! And congrats!!
How did you approach LC? Just picking questions here and there randomly? Do you suggest to get LC Premium ahead of phone screens or only ahead of onsites? Congrats again!
I bought the annual pass for Leetcode and then focused on problem sets under the Explore Tab. I started with Meta and Google but ended up doing many more. Doesn’t really matter where you start but I found those lists to have the most useful questions.
As an L5 at 🍌🍌, this post hits the mark! Option 2 isn’t possible, but this is an inspiration!
Didn’t Google try to match the offer from Meta? They typically do.
They did, but only matched the first two years. See the breakdown by year for more info. I pushed back on Google and they said they were best and final. Meta wouldn’t budge as long as Google wouldn’t offer more. DoorDash was also best and final.
DD refreshers are higher than both G and Meta. My E5 TC is ~440K. I guess Meta is a better brand though and first year TC is higher.